猜字符小游戏中的细节问题以及算法
2016-11-04 13:57
513 查看
游戏要求:
其游戏规则为:程序随机产生5个(7个或9个)不重复的字符(大写小写字母或数字)作为猜测的结果,
* 由玩家来猜测此字符串。玩家可以猜测多次,每猜测一次,则由系统提示结果。
* 如果猜测的完全正确,则游戏结束,计算玩家的游戏得分并输出;
* 如果没有猜对,则提示猜测的结果,如猜对了几个字符,以及猜对了几个字符的位置等信息,并提示玩家游戏继续。
* 按 exit 表示退出游戏
该程序如下:
在此基础上若可以生成重复的字符,则可修改部分代码,有以下两种修改方式:
方法一:此方法是在原来基础上删除功能,并去掉开关数组
方法二:利用随机数获取大写或者小写(0是大写 1是小写):
int temp=(int)(Math.random()*2);
再利用三目运算求得随机数,不过此时的随机数可能会出现重复的(在要求可重复条件且只有两种不同类型时可以使用该方法(例如随机生成大写或小写字母),这样使得程序简洁,不需要字母数组)
char ch= temp>0? (char)(Math.random()*26+65) :(char)(Math.random()*26+97)代码如下:要求生成10个大写或小写字母(可重复)
该
其游戏规则为:程序随机产生5个(7个或9个)不重复的字符(大写小写字母或数字)作为猜测的结果,
* 由玩家来猜测此字符串。玩家可以猜测多次,每猜测一次,则由系统提示结果。
* 如果猜测的完全正确,则游戏结束,计算玩家的游戏得分并输出;
* 如果没有猜对,则提示猜测的结果,如猜对了几个字符,以及猜对了几个字符的位置等信息,并提示玩家游戏继续。
* 按 exit 表示退出游戏
该程序如下:
import java.util.Scanner; public class Demo1 { public static void main(String[] args) { System.out.println("欢迎尝试猜字母游戏:"); Scanner scan=new Scanner(System.in); int level; do{ System.out.println("请输入游戏级别:(5,7,9)"); level=scan.nextInt(); scan.nextLine();//滤去回车 }while(level!=5&&level!=7&&level!=9); char[] arr=generate(level);//接收随机生成的字符数组 System.out.println(arr);//此处作弊 int count=0; for(;;){ System.out.println("请输入你的猜测结果:"); String str=scan.nextLine();//接收猜测的字符串 if("EXIT".equals(str.toUpperCase())){ System.out.println("退出程序!"); break; } int[] result=check(str,arr);//接收猜测到的结果 if(result[1]==level){ System.out.println("恭喜你!猜对了"); System.out.println("你的得分为:"+(level*100-count*10)+"分"); break; }else{ System.out.println("没有全部猜对,字符猜对了"+result[0]+"个,"+"位置猜对了"+result[1]+"个,请继续:"); count++; } } } // 系统自动生成相应的字母序列(不重复) public static char[] generate(int level){ char[] array=new char[level]; char[] letters=new char[]{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q', 'R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i', 'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','r', '0','1','2','3','4','5','6','7','8','9'}; int index; boolean[] flag=new boolean[letters.length];//为每一个字母添加开关 for(int i=0;i
在此基础上若可以生成重复的字符,则可修改部分代码,有以下两种修改方式:
方法一:此方法是在原来基础上删除功能,并去掉开关数组
for(int i=0;i<array.length;i++){ index=(int)(Math.random()*letters.length); array[i]=letters[index]; }
方法二:利用随机数获取大写或者小写(0是大写 1是小写):
int temp=(int)(Math.random()*2);
再利用三目运算求得随机数,不过此时的随机数可能会出现重复的(在要求可重复条件且只有两种不同类型时可以使用该方法(例如随机生成大写或小写字母),这样使得程序简洁,不需要字母数组)
char ch= temp>0? (char)(Math.random()*26+65) :(char)(Math.random()*26+97)代码如下:要求生成10个大写或小写字母(可重复)
public static void main(String[] args) { char[] array=new char[10]; for(int i=0;i<array.length;i++){ int temp=(int)(Math.random()*2);//随机生成0或1 //若temp>0为true,则随机生成大写字母 array[i]= temp>0? (char)(Math.random()*26+65):(char)(Math.random()*26+97); } System.out.println(array); }
该
相关文章推荐
- 伴随开发人员成长的问题:工程重要,还是算法重要?细节重要,还是架构重要?
- 求公共子串问题以及其改进算法
- java一个算法题:输出一个字符串中出现次数最多的字符,以及次数
- 【Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏
- 【Android游戏开发之九】(细节处理)触屏事件中的Bug解决方案以及禁止横屏和竖屏切换!
- 伴随开发人员成长的问题:工程重要,还是算法重要?细节重要,还是架构重要?
- 【Android游戏开发之九】(细节处理)触屏事件中的Bug解决方案以及禁止横屏和竖屏切换!
- 平衡二叉排序树算法 细节问题?
- 大数据量的存储,以及分表常见算法及其带来的问题,和微薄url的加密规则猜想
- 【iOS-Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏
- 求公共子串问题以及其改进算法
- 关于游戏开发中的A*/A-star的寻路算法的问题
- 还是字符组合问题,直接针对题目建模(java,算法探讨)
- java一个算法题:输出一个字符串中出现次数最多的字符,以及次数
- 【Android游戏开发之九】(细节处理)触屏事件中的Bug解决方案以及禁止横屏和竖屏切换!
- 伴随开发人员成长的问题:工程重要,还是算法重要?细节重要,还是架构重要?
- [导入]蛙蛙推荐:基于标记窗的网页正文提取算法的一些细节问题
- 2177博弈问题 取石子游戏 算法
- 编程解决各种问题(一) ----------------Flash 经典智力游戏(一) 人羊菜以及狼的故事
- 【iOS-Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏 推荐