火柴游戏java源代码(火柴游戏c语言代码)[20240427更新]
admin 发布:2024-04-27 23:43 110
今天给各位分享火柴游戏java源代码的知识,其中也会对火柴游戏c语言代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、现有21根火柴,两人轮流取,每人每次可取1到3根。不可多取,也不能不取,谁取最后一根火柴谁输 java 代码
- 2、java程序编写小游戏 要求:程序随机产生20—50根火柴
- 3、求一个JAVA“拿火柴小游戏”的程序 要求如下!!!求!!!!!!!!!!!!!!!!
现有21根火柴,两人轮流取,每人每次可取1到3根。不可多取,也不能不取,谁取最后一根火柴谁输 java 代码
1、按照题目的游戏规则,先拿第一根的人(先手)必输无疑。
把顺次取的每一根火柴都编上序号(1—21),因为21=(4+1)×4+1,而每次拿的火柴数是1—4根,这样,计算机作为后手就能控制游戏进程:计算机根据刚才先手拿走的数目,凑成5,拿到第5根火柴且只拿到第5根为止,就逼迫先手去拿第6根。6=5+1。以此类推,后手总是最后拿第5k根(k是自然数),先手总是被逼先拿第5k+1根,以致第21根落在自己手中而失败。
2、欲想获胜,只能修改游戏规则。例如
①、人先拿,每次1—4根,谁取最后一根谁输,但火柴总根数改作22根或27根。这时先手一旦拿到第5k+1根立刻暂停,让机器去拿那第5k+2根。
或者②、人先拿,每次1—5根,谁取最后一根谁输,火柴总根数21不变。这时,人的制胜方案是把2、8、14、20号火柴抢到手而把第3、9、15、21号火柴让给对方。
java程序编写小游戏 要求:程序随机产生20—50根火柴
为什么用AWT不用 swing?
算法思想很简单
是取胜原理
用反推法:欲拿最后一根,必须留2根在那里,欲留2根,必须上一轮留2+3+1=6给对方,(它拿一,你拿三,它拿二,你拿二,它拿三,你拿一。都是留2根)。再向上一轮,就是6+4=10。
取胜原理:把随机产生的火柴数,分解成:2+4的n次方+m,(m≤3),当m=0的时候,后取者胜,当m=1、2、3的时候,先取者胜。先取者取完m,留2+4的n次方给对方,对方不管取多少,你取的数和对方相加等于4,一直到最后,留2根给对方,根据规则,对方只能取一根,留一根给你取胜。
另:取完者胜(含最后一根):最后留4根给对方,不管对方取多少,你都可以一次取完。上一轮同样加4。
取胜原理:把随机产生的火柴数,分解成:4的n次方+m,(m≤3),当m=0的时候,后取者胜,当m=1、2、3的时候,先取者胜。先取者取完m,留4的n次方给对方,对方不管取多少,你取的数和对方相加等于4,一直到最后,留4根给对方。
代码调试可用
自己用GUI搭个界面 二十分钟的事
import java.util.Scanner;
public class MatchGame {
private static Scanner scanner = new Scanner(System.in);;
private int total;
private Computer com;
private static int exit = 1;
public MatchGame(int from, int to, String level) {
if (from = to) {
throw new IllegalArgumentException();
}
total = (int)( Math.random() * (to - from)) + from;
com = new Computer(level);
}
public void start() {
System.out.println("0 means endGame, 4 means restartGame!");
System.out.println("The number of matches is " + total);
System.out.println("~Start~");
System.out.println("----------------------------------------");
while (true) {
int u = scanner.nextInt();
if (u 0 u 4) {
System.out.println("You entered " + u);
if (total - u = 0) {
exit = 2;
endGame();
}
total = total - u;
System.out.println("Total : " + total);
int c = com.play(u, total);
System.out.println("Computer selected " + c + " matches~");
if (total - c = 0) {
exit = 0;
endGame();
}
total = total - c;
System.out.println("Total : " + total);
}else if (u == 0) {
endGame();
}else if (u 4 || u 0) {
System.out.println("You entered Wrong number~");
} else {
restart();
}
}
}
public static void restart() {
MatchGame game;
System.out
.println("Please select Computer Level: 1:HARD 2:NORMAL 3:EASY");
int level = scanner.nextInt();
if (level == 1) {
game = new MatchGame(20, 50, Computer.HARD);
} else if (level == 2) {
game = new MatchGame(20, 50, Computer.NORMAL);
} else {
game = new MatchGame(20, 50, Computer.EASY);
}
game.start();
}
public static void endGame() {
if (exit == 0) {
System.out.println("YOU WIN!!!");
} else if (exit == 2) {
System.out.println("YOU LOSE!!!");
}
System.exit(exit);
}
public static class Computer {
private static String EASY = "EASY";
private static String NORMAL = "NORMAL";
private static String HARD = "HARD";
private static String LEVEL;
private int com;
public Computer(String level) {
LEVEL = level;
}
public int play(int user, int total) {
if (LEVEL.equals(EASY)) {
com = 1;
} else if (LEVEL.equals(NORMAL)) {
com = (int) (Math.random() * 2) + 1;
} else {
int i;
if (total % 4 == 0) {
i = total / 4 - 1;
} else {
i = total / 4;
}
com = total - 4 * i - 1;
if (com == 0) {
com = 4 - user;
}
}
return com;
}
}
public static void main(String[] args) {
MatchGame game;
System.out
.println("Please select Computer Level: 1:HARD 2:NORMAL 3:EASY");
int level = scanner.nextInt();
if (level == 1) {
game = new MatchGame(20, 50, Computer.HARD);
} else if (level == 2) {
game = new MatchGame(20, 50, Computer.NORMAL);
} else {
game = new MatchGame(20, 50, Computer.EASY);
}
game.start();
}
}
求一个JAVA“拿火柴小游戏”的程序 要求如下!!!求!!!!!!!!!!!!!!!!
按照题目要求,人拿完火柴后计算机自动拿火柴,判断胜利者。鼠标点击ok或者键盘按enter键即可提交人拿的火柴个数。图形界面如下,
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Random;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
public class game extends javax.swing.JFrame implements ActionListener{
private JPanel frame;
private JTextField pwd;
private JTextField jLabel1;
private JTextField jLabel2;
private JButton bntOk;
private JLabel l1;
private JLabel l2;
private JLabel l3;
int total;
public static void main(String[] args)
{
game ff=new game();
}
public game(){
initGUI();
Random r=new Random();
total=r.nextInt(100);
jLabel2.setText(String.valueOf(total));
this.setSize(500, 500);
this.setLocation(300, 400);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getRootPane().setDefaultButton(bntOk);
bntOk.addActionListener(this);
}
public void actionPerformed(java.awt.event.ActionEvent evt)
{
int a=Integer.parseInt(jLabel1.getText());
if((a3)||(a==0)){
JOptionPane.showMessageDialog(game.this,"输入错误\n请重新输入");
return;
}
total=total-a;
jLabel2.setText(String.valueOf(total));
if(total=0){
JOptionPane.showMessageDialog(game.this,"恭喜你,胜利了!");
return;
}
Random r=new Random();
int b=r.nextInt(4);
while(b==0)
b=r.nextInt(4);
pwd.setText(String.valueOf(b));
total=total-b;
jLabel2.setText(String.valueOf(total));
if(total=0){
JOptionPane.showMessageDialog(game.this,"很遗憾,你输了!");
}
}
private void initGUI(){
frame=new JPanel();
getContentPane().add(frame, BorderLayout.CENTER);
frame.setLayout(null);
bntOk =new JButton();
bntOk.setText("OK");
bntOk.setBounds(150, 200, 66, 30);
frame.add(bntOk);
jLabel2= new JTextField();
jLabel2.setBounds(150, 50, 100, 50);
frame.add(jLabel2);
l1=new JLabel();
l1.setText("火柴数量");
l1.setBounds(90, 50, 100, 50);
frame.add(l1);
jLabel1= new JTextField();
jLabel1.setText("");
jLabel1.setBounds(200,149, 77, 22);
frame.add(jLabel1);
l2=new JLabel();
l2.setText("我拿火柴");
l2.setBounds(100, 149, 77, 22);
frame.add(l2);
l3=new JLabel();
l3.setText("对方拿火柴");
l3.setBounds(100, 249, 77, 22);
frame.add(l3);
pwd = new JTextField();
pwd.setBounds(200, 249, 77, 22);
frame.add(pwd);
bntOk.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e1) {
int a=Integer.parseInt(jLabel1.getText());
if((a3)||(a==0)){
JOptionPane.showMessageDialog(game.this,"输入错误\n请重新输入");
return;
}
total=total-a;
jLabel2.setText(String.valueOf(total));
if(total=0){
jLabel2.setText("0");
JOptionPane.showMessageDialog(game.this,"恭喜你,胜利了!");
return;
}
Random r=new Random();
int b=r.nextInt(4);
while(b==0)
b=r.nextInt(4);
pwd.setText(String.valueOf(b));
total=total-b;
jLabel2.setText(String.valueOf(total));
if(total=0){
JOptionPane.showMessageDialog(game.this,"很遗憾,你输了!");
}
}
}
);
}
}
关于火柴游戏java源代码和火柴游戏c语言代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-04音乐播放器系统代码大全(音乐播放器c语言代码)[20240504更新]
- 05-04菜单滑动代码(开始菜单自动滚动)[20240504更新]
- 05-04好看登录界面代码(好看的登陆界面)[20240504更新]
- 05-04html上下箭头代码(html下拉箭头符号)[20240504更新]
- 05-04点击切换图片代码滚动(图片左右滚动代码)[20240504更新]
- 05-04易语言代码格式(易语言编码转换)[20240504更新]
- 05-04c语言连连看开源代码(python连连看源代码)[20240504更新]
- 05-04七夕html代码(七夕网页源码)[20240504更新]
- 05-04html合同模板代码(开发合同模版)[20240504更新]
- 05-04盖章代码(盖章代码是什么东西)[20240504更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
-
- 网络营销策划公司,网络营销策划公司的发展目标与方向有哪些内容
- 易语言代码格式(易语言编码转换)[20240504更新]
- c语言连连看开源代码(python连连看源代码)[20240504更新]
- 七夕html代码(七夕网页源码)[20240504更新]
- html合同模板代码(开发合同模版)[20240504更新]
- 盖章代码(盖章代码是什么东西)[20240504更新]
- java简易计算器源代码(简易计算器编程java)[20240504更新]
- 网页代码下载html(网页代码下载音乐)[20240504更新]
- 飞秋文件传输源代码(飞秋怎么传输文件)[20240504更新]
- sql超市商品信息视图代码的简单介绍[20240504更新]
- 友情链接