Swift编程基础之 剪刀石头布游戏(控制台版)

没有什么比写个最接近实际生活的事物更能提起编程的兴趣的了。所以我就将剪刀石头布用现有的知识实现了一下,特有成就感呢。下面是全部源码,直接分享给大家,希望大家可以互相交流学习。

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的石头剪刀布程序。加油。。。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值