欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實現(xiàn)雷霆戰(zhàn)機

 更新時間:2022年06月10日 14:36:43   作者:qq_1741337072  
這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)雷霆戰(zhàn)機,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java實現(xiàn)雷霆戰(zhàn)機的具體代碼,供大家參考,具體內(nèi)容如下

GameFame.java

package cn. tx;
?
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;
import java.util.Vector;
?
?class GameFrame extends JFrame {
?
? ? HeroPlane heroPlane;
?
? ? //定義子彈的集合
? ? Vector<Bullet> bullets = new Vector<>();
? ? //敵機集合
? ? ?Vector<EnemyPlane> enemys = new Vector<>();
?
? ? ?GameFrame ?frame;
?
? ? public GameFrame () {
? ? ? ? frame = this;
? ? ? ? //創(chuàng)建英雄機
? ? ? ? heroPlane =new HeroPlane();
? ? ? ? heroPlane.start();
? ? ? ? //設(shè)置窗體的寬高
? ? ? ? this.setSize(450, 730);
? ? ? ? //標(biāo)題
? ? ? ? this.setTitle("雷霆戰(zhàn)機");
? ? ? ? this.setResizable(false);
? ? ? ? this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
? ? ? ? this.setLocationRelativeTo(null);
? ? ? ? //窗口可見
? ? ? ? this.setVisible(true);
?
?
? ? ? ? new Thread(new Runnable() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void run() {
? ? ? ? ? ? ? ? while (true) {
? ? ? ? ? ? ? ? ? ? repaint();
? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? Thread.sleep(10);
? ? ? ? ? ? ? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }).start();
?
? ? ? ? //產(chǎn)生敵機的線程
? ? ? ? new Thread(new Runnable() {
? ? ? ? ? ? //創(chuàng)建隨機數(shù)的對象
? ? ? ? ? ? Random r = new Random();
?
? ? ? ? ? ? @Override
? ? ? ? ? ? public void run() {
? ? ? ? ? ? ? ? while (true){
? ? ? ? ? ? ? ? ? ? //啟動敵機
? ? ? ? ? ? ? ? ? ? EnemyPlane enemyPlane = new EnemyPlane(r.nextInt(500), 0, frame);
? ? ? ? ? ? ? ? ? ? enemyPlane.start();
? ? ? ? ? ? ? ? ? ? //添加敵機的時候,讓x軸隨機
? ? ? ? ? ? ? ? ? ? enemys.add(enemyPlane);
? ? ? ? ? ? ? ? ? ? try{
? ? ? ? ? ? ? ? ? ? ? ? Thread.sleep(500);
? ? ? ? ? ? ? ? ? ? } catch (InterruptedException e){
? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? }
? ? ? ? }).start();
?
? ? }
?
?
// ? ? ? ?*在窗口上畫,內(nèi)容,paint這 個畫筆的方法在窗口初始化的時候會默認(rèn)的執(zhí)行
// ? ? ? ?@param g
?
? ? ? ? public void paint (Graphics g) {
? ? ? ? ? ? //System.out.println("繪制畫板");
? ? ? ? ? ? //兩背景
? ? ? ? ? ? BufferedImage image = (BufferedImage) this.createImage(this.getSize().width, this.getSize().height);
? ? ? ? ? ? //高效緩存的畫筆
? ? ? ? ? ? Graphics bi = image.getGraphics();
? ? ? ? ? ? //畫背景
? ? ? ? ? ? bi.drawImage(new ImageIcon("img/MAP02_01.png").getImage(),0,0,null);
? ? ? ? ? ? //畫戰(zhàn)斗機
? ? ? ? ? ? bi.drawImage(heroPlane.img, heroPlane.x,heroPlane.y, heroPlane.width,heroPlane.heigth,null);
? ? ? ? ? ? //飛機發(fā)射炮彈
? ? ? ? ? ? for (int i = 0; i < bullets.size(); i++) {
? ? ? ? ? ? ? ? System.out.println(bullets);
? ? ? ? ? ? ? ? Bullet bullet = bullets.get(i);
? ? ? ? ? ? ? ? if(bullet.y > 0)
? ? ? ? ? ? ? ? ? ? bi.drawImage(bullet.image, bullet.x,bullet.y -= bullet.speed, bullet.width,bullet.height, null);
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? bullets.remove(bullet);
? ? ? ? ? ? }
? ? ? ? ? ? //畫敵機
? ? ? ? ? ? for (int i = 0; i < enemys.size(); i++) {
? ? ? ? ? ? ? ? System.out.println(enemys);
? ? ? ? ? ? ? ? EnemyPlane ep = enemys.get(i);
? ? ? ? ? ? ? ? if(ep.y < 730 )
? ? ? ? ? ? ? ? ? ? bi.drawImage(ep.img, ep.x,ep.y += ep.speed, ep.width,ep.heigth,null);
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? enemys.remove(ep);
? ? ? ? ? ? }
?
?
? ? ? ? ? ? //生效
? ? ? ? ? ? g.drawImage(image,0,0,null);
? ? ? ? }
? ? ? ? public static void main (String[]args){
? ? ? ? ? ? GameFrame frame = new GameFrame();
? ? ? ? ? ? Player player = new Player(frame);
? ? ? ? ? ? frame.addKeyListener(player);
? ? ? ? }
? ? }

HeroPlane

package cn.tx;
import javax.swing.*;
import java.awt.*;
?
public class HeroPlane extends Thread{
? ? //英雄機在畫板上的位置
? ? int x=200, y=600;
?
? ? int width = 50, heigth = 50;
? ? //飛機的速度
? ? int speed = 10;
?
? ? Image img = new ImageIcon("img/10011.png").getImage();
?
? ? //定義方向鍵的標(biāo)志
? ? boolean up,down,left,right;
?
? ? public HeroPlane() {
? ? }
?
? ? public HeroPlane(int x, int y, int width, int heigth, Image img) {
? ? ? ? this.x = x;
? ? ? ? this.y = y;
? ? ? ? this.width = width;
? ? ? ? this.heigth = heigth;
? ? }
?
? ? @Override
? ? public void run() {
? ? ? ? while (true){
? ? ? ? ? ? if (up){
? ? ? ? ? ? ? ? y -= speed;
? ? ? ? ? ? }
? ? ? ? ? ? if (down){
? ? ? ? ? ? ? ? y += speed;
? ? ? ? ? ? }
? ? ? ? ? ? if (left){
? ? ? ? ? ? ? ? x -= speed;
? ? ? ? ? ? }
? ? ? ? ? ? if (right){
? ? ? ? ? ? ? ? x += speed;
? ? ? ? ? ? }
?
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? Thread.sleep(10);
? ? ? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? }
? ? }
}

Player

package cn.tx;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
//定義一個玩家
public class Player extends KeyAdapter {
? ? GameFrame frame;
? ? HeroPlane heroPlane;
? ? public Player(GameFrame frame) {
? ? ? ?this.frame=frame;
? ? }
?
? ? public void keyPressed(KeyEvent e) {
? ? ? ? int keyCode = e.getKeyCode();
? ? ? ? //38、40、37、39
? ? ? ? switch (keyCode){
? ? ? ? ? ? case 38:
? ? ? ? ? ? ? ? frame.heroPlane.up = true;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 40:
? ? ? ? ? ? ? ? frame. heroPlane.down = true;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 37:
? ? ? ? ? ? ? ? frame. heroPlane.left = true;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 39:
? ? ? ? ? ? ? ? frame. heroPlane.right = true;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 66:
? ? ? ? ? ? ? ? addBullut();
? ? ? ? ? ? ? ? break;
? ? ? ? }
?
? ? }
?
? ? @Override
? ? public void keyReleased(KeyEvent e) {
? ? ? ? int keyCode = e.getKeyCode();
? ? ? ? //38、40、37、39
? ? ? ? switch (keyCode){
? ? ? ? ? ? case 38:
? ? ? ? ? ? ? ? frame.heroPlane.up = false;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 40:
? ? ? ? ? ? ? ? frame. heroPlane.down = false;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 37:
? ? ? ? ? ? ? ? frame. ?heroPlane.left = false;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 39:
? ? ? ? ? ? ? ? frame. heroPlane.right = false;
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? }
? ? public void addBullut(){
? ? ? ? frame.bullets.add(new Bullet( frame.heroPlane.x+5, ?frame.heroPlane.y - 20));
? ? }
}

EnemyPlane

package cn.tx;
?
import javax.swing.*;
import java.awt.*;
?
?
public class EnemyPlane extends Thread {
? ? public GameFrame gf;
? ? //子彈的坐標(biāo),大小速度
? ? public int x, y;
? ? public int width = 50;
? ? public int heigth = 50;
? ? public int speed = 2;
? ? public Image img = new ImageIcon("img/10021.png").getImage();
?
? ? public EnemyPlane(int x, int y, GameFrame gf) {
? ? ? ? super();
? ? ? ? this.x = x;
? ? ? ? this.y = y;
? ? ? ? this.gf = gf;
? ? }
?
? ? public EnemyPlane(int x, int y, int width, int heigth, GameFrame gf) {
? ? ? ? super();
? ? ? ? this.x = x;
? ? ? ? this.y = y;
? ? ? ? this.width = width;
? ? ? ? this.heigth = heigth;
? ? ? ? this.gf = gf;
? ? }
?
? ? //瑪麗飛翔的邏輯;移動的邏輯都在這里。
? ? public void run() {
? ? ? ? while (true) {
? ? ? ? ? ? //向左走
? ? ? ? ? ? if (hit()) {
? ? ? ? ? ? ? ? System.out.println("hit................");
? ? ? ? ? ? ? ? this.speed = 0;
? ? ? ? ? ? ? ? this.img = new ImageIcon("img/300350.png").getImage();
? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? this.sleep(500);
? ? ? ? ? ? ? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? gf.enemys.remove(this);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (this.y >= 760) {
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? this.sleep(10);
? ? ? ? ? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? }
? ? }
?
?
? ? //檢測碰撞
? ? public boolean hit() {
? ? ? ? // swing在水中,人家已經(jīng)提供了
? ? ? ? Rectangle myrect = new Rectangle(this.x, this.y, this.width, this.heigth);
? ? ? ? Rectangle rect = null;
? ? ? ? for (int i = 0; 1 < gf.bullets.size(); i++) {
? ? ? ? ? ? Bullet bullet = gf.bullets.get(i);
? ? ? ? ? ? System.out.println("test hit");
? ? ? ? ? ? rect = new Rectangle(bullet.x, bullet.y - 1, bullet.width, bullet.height);
? ? ? ? ? ? //碰撞檢測
? ? ? ? ? ? if (myrect.intersects(rect)) {
? ? ? ? ? ? ? ? return true;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return false;
? ? }
?
? ? @Override
? ? public String toString() {
? ? ? ? return "EnemyPlane{" +
? ? ? ? ? ? ? ? "x=" + x +
? ? ? ? ? ? ? ? ", y=" + y +
? ? ? ? ? ? ? ? ", width=" + width +
? ? ? ? ? ? ? ? ", height=" + heigth +
? ? ? ? ? ? ? ? '}';
? ? }
}

Bullet

package cn.tx;
import javax.swing.*;
import java.awt.*;
?
public class Bullet {
? ? //在面板上的坐標(biāo)
? ? int x, y;
? ? int width= 50,height = 50;
?
? ? //定義飛機默認(rèn)速度
? ? int speed = 5;
?
? ? Image image = new ImageIcon("img/30022.png").getImage();
?
? ? public Bullet(int x, int y) {
? ? ? ? this.x = x;
? ? ? ? this.y = y;
? ? }
?
? ? public Bullet(int x, int y, int width, int height) {
? ? ? ? this.x = x;
? ? ? ? this.y = y;
? ? ? ? this.width = width;
? ? ? ? this.height = height;
? ? }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論