当前位置:首页 > 代码 > 正文

火柴游戏java源代码(火柴游戏c语言代码)[20240427更新]

admin 发布:2024-04-27 23:43 110


今天给各位分享火柴游戏java源代码的知识,其中也会对火柴游戏c语言代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

现有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站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/726.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载