separated questions into a separate csv file
This commit is contained in:
parent
065460272c
commit
4c25fe34b4
5 changed files with 133 additions and 71 deletions
BIN
main
Executable file
BIN
main
Executable file
Binary file not shown.
128
main.go
Normal file
128
main.go
Normal file
|
@ -0,0 +1,128 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/csv"
|
||||
"flag" //this go package will allow me to add flags to the command
|
||||
"fmt" // fmt is a package that contains basic functionality like printing to the terminal and taking in user input
|
||||
"os" // os provides us a platform independent way to handle errors
|
||||
)
|
||||
|
||||
/*
|
||||
CLI_Trivia.
|
||||
|
||||
This is a short Kingdom Hearts trivia game played on the command line.
|
||||
*/
|
||||
func main() {
|
||||
|
||||
/* Welcome message.
|
||||
Println prints a welcome message to the terminal and appends a \n at the end of the line
|
||||
*/
|
||||
fmt.Println("¡Bienvenidos a Kingdom Hearts Trivia!")
|
||||
|
||||
/* What is your name?.
|
||||
Print will prompt you to enter your name */
|
||||
fmt.Print("¿Cual es tu nombre?: ")
|
||||
var name string //this variable holds your name. you have to type variables in go.
|
||||
|
||||
fmt.Scan(&name) //Scan will let you type your name in. "&" is an operator used to retrieve the memory address of name. the user's input will save to the "name" variable.
|
||||
fmt.Printf("¡WEPA, %v, por fin llegaste!\n", name) //Printf will print the formatted name variable and display a greeting to the user with their name
|
||||
|
||||
/* Age Check.
|
||||
User will be notified that this trivia game is for people 10 years old and up, then prompted to disclose their age.*/
|
||||
fmt.Print("¿Este juego esta clasificado para mayores de 10 años. Cuantos años tienes?: ")
|
||||
var age uint //declaring age to be an unsigned integer because nobody can be a negative number of years old
|
||||
|
||||
fmt.Scan(&age) //Scan will take in the users input and assign it to age variable
|
||||
|
||||
/* This conditional checks if the inputted age is greater than or equal to 10. if so, it will notify the user that they
|
||||
can play. if not, it will return and end the game. */
|
||||
if age >= 10 {
|
||||
fmt.Println("Puedes jugar (=")
|
||||
} else {
|
||||
fmt.Println("No puedes jugar )=")
|
||||
return
|
||||
}
|
||||
|
||||
csvFilename := flag.String("csv", "questions.csv", "A csv file in the format of 'question,answer'")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
file, err := os.Open(*csvFilename)
|
||||
if err != nil {
|
||||
exit(fmt.Sprintf("Failed to open CSV file: %s\n", *csvFilename))
|
||||
|
||||
}
|
||||
|
||||
r := csv.NewReader(file)
|
||||
lines, err := r.ReadAll()
|
||||
if err != nil {
|
||||
exit("Failed to parse the provided CSV file.")
|
||||
}
|
||||
problems := parseLines(lines)
|
||||
// fmt.Println(problems)
|
||||
|
||||
for i, p := range problems {
|
||||
fmt.Printf("Problem %d: %s = \n", i+1, p.q)
|
||||
var answer string
|
||||
fmt.Scanf("%s\n", &answer)
|
||||
if answer == p.a {
|
||||
fmt.Println("Correct!")
|
||||
}
|
||||
}
|
||||
|
||||
score := 0 //here i am using := to type inference a score to 0
|
||||
num_quest := 2 //this is the total number of questions, will be used to calculate a percentage at the end.
|
||||
fmt.Printf("Q1) ")
|
||||
|
||||
var q1ans string
|
||||
var q1ans2 string
|
||||
|
||||
fmt.Scan(&q1ans, &q1ans2)
|
||||
if q1ans+" "+q1ans2 == "Destiny Islands" {
|
||||
fmt.Println("Correct!")
|
||||
score++
|
||||
} else if q1ans+" "+q1ans2 == "destiny islands" {
|
||||
fmt.Println("Correct!")
|
||||
} else {
|
||||
fmt.Println("Wrong!")
|
||||
|
||||
}
|
||||
|
||||
fmt.Printf(" ")
|
||||
var worlds uint
|
||||
fmt.Scan(&worlds)
|
||||
|
||||
if worlds == 16 {
|
||||
fmt.Println("Correct!")
|
||||
score++
|
||||
} else {
|
||||
fmt.Println("Wrong!")
|
||||
}
|
||||
|
||||
fmt.Printf("You scored %v out of %v \n", score, num_quest)
|
||||
|
||||
percent := (float64(score) / float64(num_quest)) * 100
|
||||
fmt.Printf("You scored: %v%%. \n", percent)
|
||||
}
|
||||
|
||||
type problem struct {
|
||||
q string
|
||||
a string
|
||||
}
|
||||
|
||||
func parseLines(lines [][]string) []problem {
|
||||
|
||||
ret := make([]problem, len(lines))
|
||||
for i, line := range lines {
|
||||
ret[i] = problem{
|
||||
q: line[0],
|
||||
a: line[1],
|
||||
}
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func exit(msg string) {
|
||||
fmt.Println(msg)
|
||||
os.Exit(1)
|
||||
}
|
5
questions.csv
Normal file
5
questions.csv
Normal file
|
@ -0,0 +1,5 @@
|
|||
"Where are Sora, Riku, and Kairi from?","Destiny Islands"
|
||||
"How many worlds did Sora explore in KH2?",16
|
||||
"What is the name of Sora's original keyblade?","Kingdom Key"
|
||||
"What is the name of the new enemy type introduced in KH2?","Nobody"
|
||||
"Finish this quote: 'I know now, without a doubt, Kingdom Hearts is _____!'","light"
|
|
71
tut.go
71
tut.go
|
@ -1,71 +0,0 @@
|
|||
package main
|
||||
|
||||
import "fmt" // fmt is a package that contains basic functionality like printing to the terminal and taking in user input
|
||||
|
||||
/*
|
||||
CLI_Trivia.
|
||||
|
||||
This is a short Kingdom Hearts trivia game played on the command line.
|
||||
*/
|
||||
func main() {
|
||||
/* Welcome message.
|
||||
Println prints a welcome message to the terminal and appends a \n at the end of the line
|
||||
*/
|
||||
fmt.Println("¡Bienvenidos a Kingdom Hearts Trivia!")
|
||||
|
||||
/* What is your name?.
|
||||
Print will prompt you to enter your name */
|
||||
fmt.Print("¿Cual es tu nombre?: ")
|
||||
var name string //this variable holds your name. you have to type variables in go.
|
||||
|
||||
fmt.Scan(&name) //Scan will let you type your name in. "&" is an operator used to retrieve the memory address of name. the user's input will save to the "name" variable.
|
||||
fmt.Printf("¡WEPA, %v, por fin llegaste!\n", name) //Printf will print the formatted name variable and display a greeting to the user with their name
|
||||
|
||||
/* Age Check.
|
||||
P*/
|
||||
fmt.Print("¿Este juego esta clasificado para mayores de 10 años. Cuantos años tienes?: ")
|
||||
var age uint
|
||||
|
||||
fmt.Scan(&age)
|
||||
|
||||
if age >= 10 {
|
||||
fmt.Println("Puedes jugar (=")
|
||||
} else {
|
||||
fmt.Println("No puedes jugar )=")
|
||||
return
|
||||
}
|
||||
|
||||
score := 0
|
||||
num_quest := 2
|
||||
fmt.Printf("Where are Sora, Riku, and Kairi from? ")
|
||||
|
||||
var q1ans string
|
||||
var q1ans2 string
|
||||
|
||||
fmt.Scan(&q1ans, &q1ans2)
|
||||
if q1ans+" "+q1ans2 == "Destiny Islands" {
|
||||
fmt.Println("Correct!")
|
||||
score++
|
||||
} else if q1ans+" "+q1ans2 == "destiny islands" {
|
||||
fmt.Println("Correct!")
|
||||
} else {
|
||||
fmt.Println("Wrong!")
|
||||
|
||||
}
|
||||
|
||||
fmt.Printf("How many worlds did Sora explore in KH2? ")
|
||||
var worlds uint
|
||||
fmt.Scan(&worlds)
|
||||
|
||||
if worlds == 16 {
|
||||
fmt.Println("Correct!")
|
||||
score++
|
||||
} else {
|
||||
fmt.Println("Wrong!")
|
||||
}
|
||||
|
||||
fmt.Printf("You scored %v out of %v \n", score, num_quest)
|
||||
|
||||
percent := (float64(score) / float64(num_quest)) * 100
|
||||
fmt.Printf("You scored: %v%%. \n", percent)
|
||||
}
|
Loading…
Reference in a new issue