Java编程游戏要求:程序随机生成20-50个匹配。

为什么要用AWT而不是swing?

算法的思想很简单。

这是致胜原则

用向后的方法:如果你想拿最后一个,你必须留两个在那里。如果要留两个,必须在最后一轮给对方留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();

}

}