关于类似“石头、剪刀、布”游戏,需要循环判断的,判断条件设计技巧
2013-08-08 10:17
239 查看
问题描述:
编写的游戏程序:猜拳游戏 - 人机大战
人出的手势包括:石头、剪刀、不
电脑出的手势包括:石头、剪刀、不
这样,一共会出现3x3=9中情况,除去人和电脑出相同手势的情况,还剩下7种
在一般的做法中,可以固定人出的三种情况:如:人出石头时,电脑出剪刀,人赢,此种会产生三个类似的情况,然后if-else判断结束,这种方法会导致if条件语句非常的长,如果以后出现4个、5个、10个...这样的话,也不利于if条件的编写
【优化的方法】:在此我们可以设:在循环中有N种手势:1 -> 2 -> 3 -> 4 -> ...N -> 1 -> 2...
那么,条件语句就可以写成:((name1 - name2 +N) % N) == (N-1),这样不仅避免了条件语句的冗长,也会加快系统的执行方法
示例代码如下:
在eclipse中ctrl + / 清除前面的注释符号
-------方法,来自同桌的老师!
编写的游戏程序:猜拳游戏 - 人机大战
人出的手势包括:石头、剪刀、不
电脑出的手势包括:石头、剪刀、不
这样,一共会出现3x3=9中情况,除去人和电脑出相同手势的情况,还剩下7种
在一般的做法中,可以固定人出的三种情况:如:人出石头时,电脑出剪刀,人赢,此种会产生三个类似的情况,然后if-else判断结束,这种方法会导致if条件语句非常的长,如果以后出现4个、5个、10个...这样的话,也不利于if条件的编写
【优化的方法】:在此我们可以设:在循环中有N种手势:1 -> 2 -> 3 -> 4 -> ...N -> 1 -> 2...
那么,条件语句就可以写成:((name1 - name2 +N) % N) == (N-1),这样不仅避免了条件语句的冗长,也会加快系统的执行方法
示例代码如下:
在eclipse中ctrl + / 清除前面的注释符号
// 第二种比较输赢的方法:1石头,2剪刀,3布 // /** // * 比较人出的手势和电脑出的手势,进行累加,然后调用showOnceResult()方法输出比较的结果, // * // * peopleFinger:人的手势 // * computerFinger:电脑的手势 // * same:平局的局数 // * people.count:人赢的局数 // * computer.count:电脑赢的局数 // * showOnceResult(string,string,string)方法:显示本盘游戏的输赢结果 // */ // public void compareFinger(int peopleFinger,int computerFinger) // { // if (exitControl(peopleFinger) || exitControl(computerFinger)) // { // //peopleFinger或computerFinger为空,即游戏需要重新开盘或者退出 // // }else if (peopleFinger == computerFinger) { // same++; // showOnceResult("same", peopleFinger, computerFinger); // }else if ( (peopleFinger - computerFinger + 3) % 3 == 2 ) { //这里就是关键所在,简化判断条件、加快执行方法 // people.count++; // showOnceResult(people.name, peopleFinger, computerFinger); // }else { // computer.count++; // showOnceResult(computer.name, peopleFinger, computerFinger); // } // }
-------方法,来自同桌的老师!
相关文章推荐
- 《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——拿石头游戏
- 游戏开发者需要留意的游戏设计技巧
- 动态规划;多边形游戏;类似圈型石头合并;算法设计分析作业;
- Python While循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为: while 判断条件:
- 关于php中剪刀石头布的游戏!高手看一下有啥问题吗?
- 关于循环条件判断的一个奇怪错误
- [J2EE]使用 EJB 组件你需要了解些什么呢?--是一些关于使用条件的判断标准
- J2ME滚屏游戏的设计——补充说明关于地图与碰撞判断等
- 关于CSocket::Accept()能不能作为接收客户端消息循环的判断条件
- 【面向对象语言系列】关于Java 设计模式,你需要知道的事
- Python基础5条件判断+循环
- Linux学习(九)-----shell脚本学习 条件判断和循环
- Python-条件判断和循环
- Tip:判断条件与数据库相关时,需要注意什么。要尊重字段原本的意义
- 关于UI设计你需要自问的10 个问题
- 关于多核的发展对网络游戏设计影响的一些思考
- 命名管道实现进程间通信--石头、剪刀、布游戏
- Java中关于赋值语句作为if条件判断的问题
- Python之条件判断和循环(入门4)
- java关于数值型和数值型包装类判断相等的条件