Gamepanel

package 巴什博奕;
import javax.swing.*;

import javax.swing.Timer;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.
;
public class Gamepanel extends JPanel implements KeyListener,ActionListener {

int N;//表示总糖数
int m;//最多取多少糖
int a[] = new int[2];//表示两个选手
int p=1;
Random random = new Random();//随机生成
Timer timer = new Timer(100,this);
boolean isStart =false;//表示游戏开始
boolean isFail = false;//判断游戏结束
JTextField jtx=new JTextField(25);
//构造器
	public Gamepanel(){
		init();
		//获取键盘的监听事件
		this.setFocusable(true);
		this.addKeyListener(this);
		timer.start();//让时间动起来
	}
	//初始化

public void init(){
	
	N = random.nextInt(100);
	m = random.nextInt(10);
}
protected void paintComponent(Graphics g){
	super.paintComponent(g);//清屏
	this.setBackground(Color.red);//设置背景的颜色
	//Data.header.paintIcon(this, g, 25, 11);//画标志
	g.fillRect(0,0,900,720);//绘制游戏区域
	if(isStart==false){
		g.setColor(Color.red);
		g.setFont(new Font("微软雅黑",Font.BOLD,40));
		g.drawString("要开始了",350,350);
	}		
	if(isFail){
		//表述死亡
		g.setColor(Color.RED);
		g.setFont(new Font("微软雅黑",Font.BOLD,40));
		g.drawString("你输了", 300, 300);
	}
	g.drawString("游戏规则:", 10, 500);
	g.drawString("只有一堆n个物品,两个人轮流从这堆物品中取物", 10, 550);
	g.drawString("只有一堆n个物品,两个人轮流从这堆物品中取物", 10, 600);
	//画分
	g.setColor(Color.blue);
	g.setFont(new Font("微软雅黑",Font.BOLD,18));
	g.drawString("N总糖数"+N, 200, 100);
	g.drawString("m最多取的糖"+m, 200, 200);
	g.drawString("人取"+a[1], 200,300);
	g.drawString("机器取"+a[0], 200, 400);
}
@Override
public void keyPressed(KeyEvent e) {
	// TODO Auto-generated method stub
	int keyCode  = e.getKeyCode();
	if(keyCode==KeyEvent.VK_SPACE){
		if(isFail){//失败,游戏再来一次
			isFail=false;
			init();//重新开始,初始化游戏
		}else{//暂停游戏
			isStart = !isStart;
		}
		//isStart = !isStart;
		repaint();//刷新页面
	}
	
	if(N%(m+1)==0){
		//此时人先取
		
	}else {
		//此时AL先取
		a[0]=N%(m+1);
		N  = N-a[0];
	}
	if(keyCode==KeyEvent.VK_1){
		p=1;
	}else if(keyCode==KeyEvent.VK_2){
		p=2;
	}else if(keyCode==KeyEvent.VK_3){
		p=3;
	}else if(keyCode==KeyEvent.VK_4){
		p=4;
	}else if(keyCode==KeyEvent.VK_5){
		p=5;
	}else if(keyCode==KeyEvent.VK_6){
		p=6;
	}else if(keyCode==KeyEvent.VK_7){
		p=7;
	}else if(keyCode==KeyEvent.VK_8){
		p=8;
	}else if(keyCode==KeyEvent.VK_9){
		p=9;
	}
}
@Override
public void actionPerformed(ActionEvent e) {
	//如果游戏处于开始状态,并且游戏没有结束
	if(isStart && isFail==false){
			if(p==1){
				a[0]=1;
				a[1]=(m+1)-a[0];
			}else if(p==2){
				a[0]=2;
				a[1]=(m+1)-a[0];
			}else if(p==3){
				a[0]=3;
				a[1]=(m+1)-a[0];
			}else if(p==4){
				a[0]=4;
				a[1]=(m+1)-a[0];
			}else if(p==5){
				a[0]=5;
				a[1]=(m+1)-a[0];
			}else if(p==6){
				a[0]=6;
				a[1]=(m+1)-a[0];
			}else if(p==7){
				a[0]=7;
				a[1]=(m+1)-a[0];
			}else if(p==8){
				a[0]=8;
				a[1]=(m+1)-a[0];
			}else if(p==9){
				a[0]=9;
				a[1]=(m+1)-a[0];
			}
			N = N - (m+1);
			if(N==0){//结束判断
				isFail=true;
		    }
		repaint();
	}
	timer.start();//让时间动起来
	
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}

}

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一些关于如何编写Enemy和GamePanel类的建议。 首先,让我们看看Enemy类应该包含哪些属性和行为。作为一个敌人,它应该有一些基本属性,如位置、速度和大小。此外,它还应该有一些功能,如移动、攻击和被攻击。 下面是一个简单的Enemy类的示例代码: ```java public class Enemy { private int x, y; // 位置 private int speed; // 速度 private int size; // 大小 public Enemy(int x, int y, int speed, int size) { this.x = x; this.y = y; this.speed = speed; this.size = size; } public void move() { // 移动敌人 } public void attack() { // 敌人攻击 } public void takeDamage() { // 敌人受到攻击 } } ``` 接下来,让我们来看看GamePanel类应该包含哪些属性和行为。GamePanel是游戏的主要界面,应该包含游戏中所有的对象和逻辑。因此,GamePanel应该具有以下属性和行为: - 游戏对象列表:包含所有的敌人、角色等游戏对象。 - 游戏逻辑:包括游戏开始、暂停、结束等逻辑。 - 游戏画面:包括游戏界面的绘制和更新。 下面是一个简单的GamePanel类的示例代码: ```java public class GamePanel extends JPanel { private List<Enemy> enemies; // 游戏对象列表 public GamePanel() { // 初始化游戏对象 enemies = new ArrayList<>(); enemies.add(new Enemy(0, 0, 1, 10)); } public void startGame() { // 开始游戏 } public void pauseGame() { // 暂停游戏 } public void endGame() { // 结束游戏 } @Override public void paintComponent(Graphics g) { super.paintComponent(g); // 绘制游戏画面 } public void update() { // 更新游戏画面 } } ``` 当然,这只是一些基本的示例代码。你可以根据你的需求和游戏逻辑进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值