Skip to content

Instantly share code, notes, and snippets.

@sstigler
Created June 5, 2014 17:45
Show Gist options
  • Save sstigler/e120f6df224e945be7d9 to your computer and use it in GitHub Desktop.
Save sstigler/e120f6df224e945be7d9 to your computer and use it in GitHub Desktop.
Guessing game written in Swift.
import Foundation
class GuessingGame: NSObject
{
let name: String?
init(name: String)
{
self.name = name
super.init()
}
convenience init()
{
let standardInput = NSFileHandle.fileHandleWithStandardInput()
print("\nWhat's your name? ")
let inputData = standardInput.availableData
let inputString = NSString(data: inputData, encoding: NSUTF8StringEncoding)
self.init(name: inputString)
}
func askQuestionFromStandardInput(question: String) -> String
{
print(question + " ")
let standardInput = NSFileHandle.fileHandleWithStandardInput()
let inputData = standardInput.availableData
let inputString = NSString(data: inputData, encoding: NSUTF8StringEncoding).stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
return inputString
}
func playOneGame()
{
playOneGame(name)
}
func playOneGame(name: NSString?)
{
let randomNumber = Int(arc4random_uniform(100))
var guess = -1
var tries = 0
while ((guess != randomNumber) && (tries < 20))
{
let numberString = askQuestionFromStandardInput("\nI'm thinking of a number between 1 and 100. Which number am I thinking of?")
let number = numberString.toInt()
if number
{
guess = number!
switch(guess) {
case randomNumber:
println("Congratulations, you win! It took you \(tries) tries.")
default:
var tooHighTooLow = " Too high."
if (guess < randomNumber)
{
tooHighTooLow = " Too low."
}
println("No, that's not it. \(tooHighTooLow) Try again.")
tries++
}
}
else
{
println("Invalid input. Please try again.")
}
}
if (randomNumber != guess)
{
println("You used up all of your tries.")
}
let tryAgainResponse = askQuestionFromStandardInput("Would you like to play again? ")
if (tryAgainResponse.lowercaseString.hasPrefix("y"))
{
playOneGame(name)
}
}
}
let game = GuessingGame()
game.playOneGame()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment