日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java吃豆游戏_利用java编写的精灵吃豆的游戏

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java吃豆游戏_利用java编写的精灵吃豆的游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學完線程的時候做了一個精靈吃豆的小游戲。

窗體類:

package www.csdn.net.zuoye;

//用窗體實現精靈吃豆子的小游戲

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.util.Random;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

public class GameJFrame extends JFrame implements KeyListener {

// 定義起始位置

private int x = 30, y = 30;

// 定義中間變量

private boolean flag = true;

private static final int DIR_UP = 1;

private static final int DIR_DOWN = 2;

private static final int DIR_LEFT = 3;

private static final int DIR_RIGHT = 4;

// 定義初始化弧度

private int arc1 = 20;

private int arc2 = 320;

// 定義計數器(通過計數器讓上下兩張嘴都動起來)

private int count = 0;

// 定義豆的對象

private Bean bean;

// 定義方向

private int dir = -1;

// 生成隨機數

private Random random;

//定義分數

private int score=0;

//定義速度

private int k=100;

public GameJFrame() {

this.setBounds(300, 200, 200, 300);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setLocationRelativeTo(null);

this.setResizable(false);

/*

* 1.this.setBackground(Color.gray);

* this.getContentPane().setVisible(false);

*/

this.getContentPane().setBackground(Color.pink);

new Thread() {

public void run() {

while (flag) {

try {

boolean temp = checkHit();

if (temp) {

initBean();

score++;

if(score%10==0){

k-=5;

}

}

Thread.sleep(k);

count++;

if (count % 2 == 0) {// 嘴張開以及閉住的情況

arc1 = 40;

arc2 = 280;

} else {

arc1 = 20;

arc2 = 320;

}

switch (dir) {

case DIR_UP:

y -= 5;

break;

case DIR_DOWN:

y += 5;

break;

case DIR_LEFT:

x -= 5;

break;

case DIR_RIGHT:

x += 5;

break;

default:

break;

}

repaint();

if (y > 275 || y < 30) {

flag = false;

JOptionPane.showMessageDialog(null, "游戲結束,你的分數為:"+score);

dispose();

}else if(x>176||x==0){

flag=false;

JOptionPane.showMessageDialog(null, "游戲結束,你的分數為:"+score);

dispose();

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}.start();

// 添加監聽

this.addKeyListener(this);

// 創建隨機的對象

random = new Random();

initBean();

}

public void initBean() {

// 隨機產生坐標

int rx = random.nextInt(5)+10;

int ry = random.nextInt(15)+7;

// 產生豆

bean = new Bean(rx * Bean.r * 2, ry * Bean.r * 2);// 坐標必須是隨機產生的

}

@Override

public void paint(Graphics g) {

super.paint(g);

g.setColor(Color.red);// 設置繪制的顏色

switch (dir) {

case DIR_UP:

g.fillArc(x, y, 20, 20, arc1 + 90, arc2);

break;

case DIR_DOWN:

g.fillArc(x, y, 20, 20, arc1 + 270, arc2);

break;

case DIR_LEFT:

g.fillArc(x, y, 20, 20, arc1 + 180, arc2);

break;

case DIR_RIGHT:

g.fillArc(x, y, 20, 20, arc1, arc2);

break;

default:// 為了能夠顯示,需要有個顯示的狀態

g.fillArc(x, y, 20, 20, arc1, arc2);

}

// 繪制豆

g.setColor(Color.yellow);

g.fillArc(bean.getX(), bean.getY(), Bean.r * 2, Bean.r * 2, 0, 360);

// g.fillArc(x, y, 20, 20, arc1, arc2);//圓形

// g.fillRect(50, 30, 20, 20);//矩形

}

public static void main(String[] args) {

GameJFrame g = new GameJFrame();

g.setVisible(true);

}

/**

* 輸入某個鍵的時候執行

*/

@Override

public void keyTyped(KeyEvent e) {

// TODO Auto-generated method stub

System.out.println("鍵入");

}

/**

* 按下的時候執行

*/

@Override

public void keyPressed(KeyEvent e) {

// TODO Auto-generated method stub

// System.out.println("按鍵");

// 獲取按鍵的值

int key = e.getKeyCode();// 查詢鍵值(用這個方法給上下左右鍵加事件)

// 根據上下左右箭頭改變方法

switch (key) {

case 38:

dir = DIR_UP;

break;

case 40:

dir = DIR_DOWN;

break;

case 37:

dir = DIR_LEFT;

break;

case 39:

dir = DIR_RIGHT;

break;

default:

break;

}

}

/**

* 抬起的時候執行

*/

@Override

public void keyReleased(KeyEvent e) {

// TODO Auto-generated method stub

// System.out.println("抬起");

}

// 定義碰撞檢測

public boolean checkHit() {

if (bean != null) {

if (bean.getX() == x) {

if (Math.abs(bean.getY() - y) < 13) {

return true;// 被碰到了

}

}

if (bean.getY() == y) {

if (Math.abs(bean.getX() - x) < 13) {

return true;

}

}

}

return false;

}

}

豆子類:

package www.csdn.net.zuoye;

//繪制豆

public class Bean {

// 坐標

private int x, y;

// 豆的半徑

public static int r=5;

public int getX() {//獲取橫坐標

return x;

}

public int getY() {//獲取縱坐標

return y;

}

public Bean(int x, int y) {

this.x = x;

this.y = y;

}

}

效果:

總結

以上是生活随笔為你收集整理的java吃豆游戏_利用java编写的精灵吃豆的游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。