没有什么比写个最接近实际生活的事物更能提起编程的兴趣的了。所以我就将剪刀石头布用现有的知识实现了一下,特有成就感呢。下面是全部源码,直接分享给大家,希望大家可以互相交流学习。
import Foundation
class Player{
//姓名
var name:String = ""
//总局数
var total:Int = 0
//胜场
var victory:Int = 0
//选手的姓名
func playerScanfName(){
print("请输入用户姓名:")
var input = NSString.init(data: NSFileHandle.fileHandleWithStandardInput().availableData, encoding: NSUTF8StringEncoding) as! String input.removeAtIndex(input.endIndex.predecessor())
self.name = input
}
//ps:我在第一篇博客分享的控制台输入函数这个阶段在到处被使用啊
// 主界面
func menu(){
print("************************************************************");
print("欢迎\(name)进入猜拳游戏");
print("1.石头 2.剪刀 3.布 0.退出");
print("************************************************************");
print("请输入数字:");
}
/*
设置电脑结果
*/
func computerRand()->Int{
let chose = arc4random()%3+1
return Int(chose)
}
/**
主逻辑程序,判断输赢打印结果
*/
func menuLogic(){
var win:Int
var count = 0
var player_choose = 0
var computer_choose = 0
//让程序跑起来
while true{
menu()
//业务逻辑的判断,也就说当前这层循环是主要用于判断输赢
while true {
//获取玩家传入的值
var input = NSString.init(data: NSFileHandle.fileHandleWithStandardInput().availableData, encoding: NSUTF8StringEncoding) as! String
input.removeAtIndex(input.endIndex.predecessor())
player_choose = Int(input)!
//变态逻辑处理
if player_choose >= 0 && player_choose <= 3{
break
}else{
print("请输入正确的数字!")
count += 1
}
if count > 5 {
print("你是不是傻!")
print("看不明白中国字��?你还是输入0吧")
} //如果连续输错就给个这样的提示
}
if player_choose == 0 {
return
}
//给电脑随机一个值
computer_choose = computerRand()
//当前的场次加1
self.total += 1
win = player_choose - computer_choose
//1.石头 2.剪刀 3.布
switch win{
case -1:
fallthrough
case 2:
print("结果:恭喜你,赢了!")
self.victory += 1
case 0:
print("结果:平局!!!")
default:
print("结果:你输了哈哈哈,再来?")
}
}
}
/**
显示结果
*/
//"\t" 空格
func show(){
print("\t\t\t排行榜\n\n");
print("*****************************************");
print("姓名\t\t总局数\t\t赢场\t\t胜率");
let winl = Double(victory)/Double(total)*100
print("\(name)\t\t\(total)\t\t\(victory)\t\t\(winl)");
}
}
var play = Player()
play.playerScanfName()
play.menuLogic()
play.show()
这个逻辑其实很简单,主程序逻辑在一个死循环中完成。其中巧妙的一点是分别用1,2,3 表示剪刀,石头,布。然后用两者的数相减得到的结果来判断其输赢。其他也就没什么了其实。等技能稍稍完备,我们就要做出来界面,做一个真正的iOS的石头剪刀布程序。加油。。。