java基础练习----21点(游戏)
来源:互联网 发布:爱范儿 知乎 编辑:程序博客网 时间:2024/06/10 20:28
先介绍一下游戏的功能:先发给用户一个0-9的随机数字作为起始值,接着让用户进行选择菜单:1.继续取随机数字 2.重头开始3.退出游戏
1.(1.继续给用户随机一个0-9的数字,并与初始值相加得到一个和,若和小于21,则显示菜单:1.继续取随机数字 2.重头开始3.退出游戏
若和等于21,则显示:恭喜你完成比赛 1.再来一把2.退出游戏
若和大于21,则显示当前的点数,并告知游戏失败,显示可选择的菜单:1.重头再来 2.退出游戏)
2.选择重头开始则重新给用户随机一个初始值,并显示菜单:1.继续取随机数字 2.重头开始3.退出游戏
3.退出游戏:输入3之后退出游戏
我在这里建了两个类,一个类存储方法(Test4),一个类写主方法(Test3)
Test4:
import java.util.Scanner;
public class Test4 {
//(先发给用户一个数字(数字随机))
//随机数字只能是1-9的数字
public static int createRandom() {
int a=(int)(Math.random()*9+1);
System.out.println("你的初始点为:");
System.out.println(a);
return a;
}
//进行菜单:1.继续要数字 2.重头再来 3.退出游戏
public static int printMenu() {
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的选择:");
System.out.println("1.继续要数字\n2.重头再来\n3.退出游戏");
return sc.nextInt();
}
//继续要数字
public static int oneMoreNum(int a) {
Scanner sc=new Scanner(System.in);
int num=(int)(Math.random()*9+1);
return num+a;
}
//如果大于21点,输出“游戏失败”,并输出菜单:1.重头再来 2.退出游戏
public static int out(int a){
Scanner sc=new Scanner(System.in);
System.out.println("游戏失败,当前点数为:"+a);
System.out.println("请输入你的选择:\n1.重头再来\n2.退出游戏");
return sc.nextInt();
}
public static int win(int a){
//如果等于21点,输出“恭喜你,完成比赛”并输出菜单:1.再来一把 2.退出游戏
Scanner sc=new Scanner(System.in);
System.out.println("恭喜你,完成比赛,当前点数为:21");
System.out.println("请输入你的选择:\n1.再来一把\n2.退出游戏");
return sc.nextInt();
}
public static int goOn(int a) {
//如果小于21点,则游戏没有结束,则输出当前点数,并重新提示菜单:
//1.继续要数字 2.重头再来 3.退出游戏
Scanner sc=new Scanner(System.in);
System.out.println("当前点数为:"+a);
// printMenu();
System.out.println("请输入你的选择:\n1.继续要数字\n2.重头再来\n3.退出游戏");
int choice=sc.nextInt();
return choice;
}
}
Test3:
public class Test3 {
public static void main(String[] args) {
boolean flag=false;
while (true) {
int num = Test4.createRandom();
int input = Test4.printMenu();
// 输入1时进行如下操作
if (input == 1) {
while (true) {
num = Test4.oneMoreNum(num); // 再随机一个数,并和之前的数相加
if (num < 21) { // 如果和小于21
int choice = Test4.goOn(num);
if (choice == 1) { // 1.继续要数字 2.重头再来 3.退出游戏
continue;
} else if (choice == 2) {
break;
} else if (choice == 3) {
flag=true;
break;
}
} else if (num == 21) { // 如果和等于21
int choice=Test4.win(num);//1.再来一把 2.退出游戏
if(choice==1) {
break;
}else {
flag=true;
break;
}
} else if (num > 21) { // 如果和大于21
int choice=Test4.out(num);//1.重头再来 2.退出游戏
if(choice==1) {
break;
}else {
flag=true;
break;
}
}
}
// 输入2时重头再来
} else if (input == 2) {
continue;
// 输入3时退出系统
} else if (input == 3) {
return;
} else {
System.out.println("输入有误");
}
if(flag) {
break;
}
}
}
}
在做的时候初学者可能会遇到以下几个问题:
1、当用户获得一个随机数后选择了继续要数字,后续再选择1、2、3等操作的时候,一种思路是将用户的选择return,再在主方法中调用相应的方法;一种是直接一种方法写完。这里第一种思路写起来会比较清晰,第二种容易造成代码逻辑不清晰。
2、根据题意很明显这里要使用一个while(true)死循环,当用户先选择了1(再次获取一个随机数)之后,若是再想选择1,这时候怎么办呢?再写一次?我认为这里再写一个while死循环比较好,如果你有其他比较好的思路欢迎留言。
3.当用户先选择了1(再次获取一个随机数)之后,若是再想选择退出游戏或者重来一局的时候,这时候该用return?break?还是congtinue? 很明显,两个while循环选择重来的时候使用break即可,因为后面没有可执行的代码,会进行下一次循环。选择退出游戏的时候使用break就就不能退出了,只能跳出当前循环,具体怎么实现也很简单,实现方法见代码,hhh
- java基础练习----21点(游戏)
- 24点游戏(java)
- JAVA学习练习(扎金花与21点)
- 编程练习,自己做的21点游戏
- java 基础(异常练习)
- Java基础练习(3)
- 初级java练习(报数杀人游戏)
- 一道JAVA 21点纸牌游戏
- 21点游戏多玩家Java代码
- 练习:点餐系统(pickerView基础用法)
- 24点游戏 基础版
- Java:基础练习-循环练习
- Java经典基础练习21-30
- java 基础练习(调用方法)
- Java基础---进阶练习(二十八)
- java基础巩固练习(二)
- 蓝桥杯(Java )基础练习 数列排序
- 基础练习 十六进制转八进制 (java)
- 短除法求最大公约数(转自算法设计与分析第三版)
- 用类描述计算机中CPU的速度和硬盘的容量,要求Java应用程序有4个类,名字分别为:pc CPU harddisk 和Test ,其中TEST是主类。
- 前端面试题系列(1):doctype作用 标准模式与兼容模式
- 从零开始开发IoC依赖注入框架 -- containerx (深入研究Spring源码)
- Java 练习把一个文件从一个地方剪切到另一个地方
- java基础练习----21点(游戏)
- 宝宝购物网站前端设计(一)div + css 布局技术
- 前端之nodejs(四)
- CentOS 安装PHP7的正确姿势
- 接下来的博客计划
- 《Hello Vue.js之道阻且长》
- hdu-1128 自私的数
- Wannafly模拟赛4 B题
- 安卓Activity高亮设置