Java编程游戏要求:程序随机生成20-50个匹配。
算法的思想很简单。
这是致胜原则
用向后的方法:如果你想拿最后一个,你必须留两个在那里。如果要留两个,必须在最后一轮给对方留2+3+1=6。(需要一个,你拿三个,需要两个,你拿两个,需要三个,你拿一个。留两个)。下一轮是6+4=10。
获胜原则:随机产生的匹配数分解为:2+4的n次方+m,(m≤3)。当m=0时,最后一个赢,当m=1,2,3时,第一个赢。第一个接受者拿走M,剩下2+4的N次方给对手。无论对手拿多少,你拿的数和对手拿的数之和等于4。直到最后,给对手留2。按照规则,对手只能拿一个,留一个给你赢。
另外:胜者(包括最后一个):给对方留4块,不管对方拿多少块,你都可以一次性拿走。上一轮还加了4。
获胜原则:随机产生的匹配数分解为:4 +m的n次方,(m≤3)。m=0时,后取者胜,m=1,2,3时,先取者胜。第一个拿走M,把4的N次方留给另一方。不管对方拿多少,你拿的数和对方拿的数之和等于4。直到最后,给对方留4。
代码调试可用
我花了20分钟来设置GUI界面。
导入Java . util . scanner;
公共类匹配游戏{
私有静态扫描器scanner =新扫描器(system . in);;
私人利息总额;
私人电脑com
私有静态int出口= 1;
公共MatchGame(int from,int to,String level) {
if(from & gt;= to) {
抛出新的IllegalArgumentException();
}
total =(int)(math . random()*(to-from))+from;
com =新电脑(级别);
}
public void start() {
System.out.println("0表示endGame,4表示restartGame!");
System.out.println("匹配数为"+总数");
system . out . println(" ~ Start ~ ");
system . out . println("-");
while (true) {
int u = scanner . nextint();
if(u & gt;0 & amp& ampu & lt4) {
System.out.println("你输入了"+u);
if(total-u & lt;= 0) {
退出= 2;
endGame();
}
total = total-u;
system . out . println(" Total:"+Total);
int c = com.play(u,total);
System.out.println("计算机选定"+ c +"匹配~ ");
if(total-c & lt;= 0) {
exit = 0;
endGame();
}
total = total-c;
system . out . println(" Total:"+Total);
}else if (u == 0) {
endGame();
} else if(u & gt;4 | | u & lt0) {
System.out.println("你输错号了~ ");
}否则{
restart();
}
}
}
公共静态void restart() {
MatchGame游戏;
System.out
。println("请选择计算机等级:1:难2:普通3:易");
int level = scanner . nextint();
if (level == 1) {
game = new MatchGame(20,50,电脑。硬);
} else if (level == 2) {
game = new MatchGame(20,50,电脑。正常);
}否则{
game = new MatchGame(20,50,电脑。容易);
}
game . start();
}
公共静态void endGame() {
if (exit == 0) {
System.out.println("你赢了!!!");
} else if (exit == 2) {
System.out.println("你输了!!!");
}
System.exit(退出);
}
公共静态类计算机{
私有静态字符串EASY = " EASY
私有静态字符串NORMAL = " NORMAL
私有静态字符串HARD = " HARD
私有静态字符串级别;
私有int com
公共计算机(字符串级别){
水平=水平;
}
公共int play(int user,int total) {
if (LEVEL.equals(EASY)) {
com = 1;
} else if (LEVEL.equals(NORMAL)) {
com =(int)(math . random()* 2)+1;
}否则{
int I;
if (total % 4 == 0) {
i =总计/4-1;
}否则{
i =总数/4;
}
com = total-4 * I-1;
if (com == 0) {
com = 4 -用户;
}
}
返回com
}
}
公共静态void main(String[] args) {
MatchGame游戏;
System.out
。println("请选择计算机等级:1:难2:普通3:易");
int level = scanner . nextint();
if (level == 1) {
game = new MatchGame(20,50,电脑。硬);
} else if (level == 2) {
game = new MatchGame(20,50,电脑。正常);
}否则{
game = new MatchGame(20,50,电脑。容易);
}
game . start();
}
}