您的位置:首页 > 编程语言 > Java开发

Java课程设计—拿火柴小游戏

2017-03-08 13:14 1081 查看
这是我的Java课程设计,做的是拿火柴小游戏。要求是人机互拿火柴,拿到最后一根火柴者赢。最主要的就是处理好多线程,其他的就是添加组件啥的,那个不难,我就给出以下多线程的代码吧。

import java.util.*;
import java.util.Random;
import javax.swing.*;

/**
* 实现线程功能的类
* @author zhangyubo
*
*/
public class ComputerTake extends TimerTask{ //继承TimeTask类使自己也具有线程功能
private JLabel operator1_message; //电脑或玩家1提示框
private JLabel leftMatch; //剩余火柴数
private JLabel hard_message; //末日难度提示框
private JLabel comob_message; //电脑发动连击提示框
private JButton choose4; //玩家2端拿1根火柴按钮
private JButton choose5; //玩家2端拿2根火柴按钮
private JButton choose6; //玩家2端拿3根火柴按钮
private Random random; //随机值变量
private int number; //随机值
private int probability; //电脑发动连击时的概率

/**
* 获取WindowActionEvent中的按钮
* @param t 按钮
*/
ComputerTake(JButton...t){
choose4=t[0];
choose5=t[1];
choose6=t[2];
}

/**
* 获取WindowActionEvent中的标签
* @param t 标签
*/
public void setMessage(JLabel...t){
operator1_message=t[0];
leftMatch=t[1];
hard_message=t[2];
comob_message=t[3];
}

public void run(){
random=new Random(); //创建随机值
Dispose.number=random.nextInt(3)+1; //随机得到1-3的值并赋给Dispose的类变量number
operator1_message.setText("电脑取走了"+Dispose.number+"根火柴"); //输出电脑拿走的火柴数
Dispose.randomNumber=Dispose.randomNumber-Dispose.number; //计算剩余火柴数
if(Dispose.randomNumber<=3&&Dispose.game_level==1)//如果火柴数小于4并且在末日人机游戏难度下
{
probability=random.nextInt(6)+1; //产生1-6的随机数
if(probability>=3) //如果随机数大于2,电脑发动连击
{
Dispose.number=random.nextInt(3)+1; //产生1-3的随机数
comob_message.setText("电脑发动了连击并多拿了"+Dispose.number+"根火柴!"); //输出电脑发动了连击
Dispose.randomNumber=Dispose.randomNumber-Dispose.number; //计算出剩余火柴数
}
}
if(Dispose.randomNumber<=0){ //如果当前火柴数已为0
leftMatch.setText("当前还剩下0根火柴"); //输出当前还剩下0根火柴
JOptionPane.showMessageDialog(null, "Computer is the winner"); //弹出消息框
choose4.setEnabled(false); //设置choose4不可用
choose5.setEnabled(false); //设置choose5不可用
choose6.setEnabled(false); //设置choose6不可用
}
else{ //如果当前火柴数不为0
leftMatch.setText("当前还剩下"+Dispose.randomNumber+"根火柴"); //输出剩余火柴数
choose4.setEnabled(true); //设置choose4可用
choose5.setEnabled(true); //设置choose5可用
choose6.setEnabled(true); //设置choose6可用
if(Dispose.game_level==1) //如果为末日人机难度
{
number=random.nextInt(3)+1; //随机产生1-3的随机数
if(number==1)   choose4.setEnabled(false); //如果为1,按钮1不可用
if(number==2)   choose5.setEnabled(false); //如果为2,按钮2不可用
if(number==3)   choose6.setEnabled(false); //如果为3,按钮3不可用
if(number==1) hard_message.setText("<html><body>感受到被末日人机支<br>配的恐惧了"
+ "吗?此次<br>您不可以选择拿走 1<br>根火柴!</body></html>");
if(number==2) hard_message.setText("<html><body>感受到被末日人机支<br>配的恐惧了"
+ "吗?此次<br>您不可以选择拿走 2<br>根火柴!</body></html>");
if(number==3) hard_message.setText("<html><body>感受到被末日人机支<br>配的恐惧了"
+ "吗?此次<br>您不可以选择拿走 3<br>根火柴!</body></html>");
//使用html输出文本
}
}
}
}


ComputerTake
这个就是我运行时的界面。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: