[3].[文件]

MyFrame.java ~ 6KB    下载(399)

package com.ruxia.frame;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.util.ArrayList;

import java.util.Random;

import javax.swing.JFrame;

public class MyFrame extends Frame {

public static final int WIDTH=900;

public static final int HEIGHT=700;

public static int my_x=450;

public static int my_y=600;

//分数

public static int score=0;

//定义变量,专门表示键盘按下的键

public static boolean a=false;public static boolean s=false;public static boolean d=false;public static boolean w=false;public static boolean j=false;

//敌机的集合

public ArrayList personAll=new ArrayList();

//存放爆炸效果的集合

public static ArrayList explodeAll=new ArrayList();

//存放子弹的集合

public static ArrayList bulletAll=new ArrayList();

public MyFrame()

{

this.setTitle("雷电"+score);

this.setSize(WIDTH,HEIGHT);

this.setLocationRelativeTo(null);

this.setResizable(false);

this.addWindowListener(new MyWindowClose());

//添加键盘监听器

this.addKeyListener(new MyKeyDown());

this.setVisible(true);

MyThread t=new MyThread();

t.start();

}

//定义背景Y座标

int bg_y=0;

@Override

public void paint(Graphics g) {

Toolkit tk=Toolkit.getDefaultToolkit();

Image bg_img=tk.getImage(MyFrame.class.getClassLoader().getResource("image/bg2.jpg"));

g.drawImage(bg_img, 0, bg_y, WIDTH, HEIGHT, null);

bg_y+=10;

g.drawImage(bg_img, 0, -HEIGHT+bg_y, WIDTH, HEIGHT, null);

//判断bg_y的值是否超过窗体的高度

if(bg_y>HEIGHT)

{

bg_y=0;

}

Image my_img=tk.getImage(MyFrame.class.getClassLoader().getResource("image/my_img.jpg"));

g.drawImage(my_img, my_x, my_y, 55, 60, null);

//创建随机对象

Random rd=new Random();

if(rd.nextInt(10)==5)

{

//创建敌机

Person person=new Person(rd.nextInt(850), 45, 32, 58, 100, 100, "enemy1.jpg", 15);

personAll.add(person);

}

for (int i = 0; i < personAll.size(); i++) {

Person person=personAll.get(i);

if(person.isLive)

{

person.drawPerson(g);

}

else

personAll.remove(person);

}

//绘画爆炸

for (int i = 0; i < explodeAll.size(); i++) {

Explode e=explodeAll.get(i);

//判断是否是活字弹

if(e.isLive)

{

e.drawExplode(g);

}

else {

explodeAll.remove(e);

}

}

//绘画子弹

for (int i = 0; i < bulletAll.size(); i++) {

Bullet bullet=bulletAll.get(i);

//判断是否是活子弹

if(bullet.isLive)

{

bullet.drawBullet(g);

}

else {

bulletAll.remove(bullet);

}

}

this.setTitle("雷电 分数:"+score);

}

public void move()

{

if(a)

MyFrame.my_x-=20;

if(d)

MyFrame.my_x+=20;

if(s)

MyFrame.my_y+=20;

if(w)

MyFrame.my_y-=20;

if(j)

{

Fire();

}

}

//开火方法

public void Fire()

{

Bullet bullet=new Bullet();

bullet.x=my_x+22;

bullet.y=my_y+30;

bullet.img="bullet.jpg";

bullet.speed=40;

bullet.width=20;

bullet.height=20;

bulletAll.add(bullet);

}

Image img=null;

@Override

public void update(Graphics g) {

if(img==null)

{

img=this.createImage(WIDTH, HEIGHT);

}

//利用img创建虚拟画笔

Graphics gb=img.getGraphics();

//调用paint方法

paint(gb);

//利用真实的画笔g来画图片

g.drawImage(img, 0,0,WIDTH,HEIGHT,null);

}

public static void main(String[] args) {

new MyFrame();

}

//内部类,线程类,用来刷新当前窗体S

class MyThread extends Thread

{

@Override

public void run() {

while(true)

{

repaint();

//每时每刻都判断是否要移动飞机

move();

try {

//让子弹前进,速度要比玩家速度快很多

for (int i = 0; i < bulletAll.size(); i++) {

Bullet bullet=bulletAll.get(i);

bullet.y-=bullet.speed;

}

Thread.sleep(65);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

}

//这个类的作用是关闭窗体

class MyWindowClose extends WindowAdapter

{

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

}

class MyKeyDown extends KeyAdapter

{

@Override

public void keyPressed(KeyEvent e) {

switch (e.getKeyCode()) {

case KeyEvent.VK_A:

MyFrame.a=true;

break;

case KeyEvent.VK_S:

MyFrame.s=true;

break;

case KeyEvent.VK_D:

MyFrame.d=true;

break;

case KeyEvent.VK_W:

MyFrame.w=true;

break;

case KeyEvent.VK_J:

MyFrame.j=true;

break;

default:

break;

}

}

@Override

public void keyReleased(KeyEvent e) {

switch (e.getKeyCode()) {

case KeyEvent.VK_A:

MyFrame.a=false;

break;

case KeyEvent.VK_S:

MyFrame.s=false;

break;

case KeyEvent.VK_D:

MyFrame.d=false;

break;

case KeyEvent.VK_W:

MyFrame.w=false;

break;

case KeyEvent.VK_J:

MyFrame.j=false;

break;

default:

break;

}

}

}

java简单雷电游戏代码_[代码全屏查看]-Java 雷电游戏(完成)相关推荐

  1. java 面板 选择颜色_[代码全屏查看]-java颜色选择器

    [1].[代码] [Java]代码 package com.liuxing.test; import java.awt.Color; import java.awt.event.ActionEvent ...

  2. java 俄罗斯方块窗口_[代码全屏查看]-java 俄罗斯方块

    [1].[代码] [Java]代码 package com; import java.awt.Color; import java.awt.Graphics; import java.awt.even ...

  3. java lock代码写法_[代码全屏查看]-java lock的使用

    [1].[代码] [Java]代码 package boom; import java.util.concurrent.TimeUnit; import java.util.concurrent.lo ...

  4. java中两个数之差的绝对值_[代码全屏查看]-java 编程题(求两个数组中字符串长度之差绝对值最大)...

    [1].[代码] [Java]代码 package codewars; import java.util.HashMap; import java.util.Map; /** * 问题描述 * * Y ...

  5. 申通快递java工资_[代码全屏查看]-java查询申通快递

    [1].[代码] 用到了htmlunit的架包 package org.sjcx.tool; import com.gargoylesoftware.htmlunit.NicelyResynchron ...

  6. java 代码 显示版本_[代码全屏查看]-Java版本小黄鸡

    [1].[文件] LiaoTian.java ~ 3KB    下载(49) import java.io.BufferedReader; import java.io.InputStreamRead ...

  7. jquery java aes_[代码全屏查看]-java、js之间使用AES加密通信数据

    [1].[代码] java AES加密解密辅助类 package com.zoki.security; import ch.qos.logback.classic.Logger; import jav ...

  8. java 1kb_[代码全屏查看]-java输入输出流及文件操作

    [文件] List_File_Dir.java ~ 1KB    下载(14) /** *Author:Yuanhonglong *Date:2013-12-15 *1948281915 */ pac ...

  9. 简单实现elementui的el-container布满全屏

    简单实现elementui的el-container布满全屏 在使用elementui的布局元素的时候,会遇到一个问题,那就是照着官方文档弄出来的布局元素不能实现满屏. 我们从官方文档拷贝实现的效果如 ...

最新文章

  1. 机器学习笔记(时间序列):不同类型的图示
  2. ModelCheckpoint 讲解【TensorFlow2入门手册】
  3. Android 8.0 中如何读取内部和外部存储以及外置SDcard
  4. 彻底搞清楚MySQL分库、分表、分区的区别
  5. 在C#代码中执行BCS外部内容类型方法
  6. VMware下主机与虚拟机剪切板独立,无法直接复制粘贴
  7. C/C++传递二维数组[转载]
  8. 分享一下字节面试和华为面试,希望我失败经验能为大家铺铺路
  9. anywhere执行时端口被占用Address already in use:8080解决方法
  10. 微信小程序横版日历,tab栏
  11. hashmap containsvalue时间复杂度_面试宝典:数据结构-HashMap
  12. EMD EEMD CEEMD CEEMDAN IEEMDAN 附赠EEMD代码
  13. 关于“程序员996”,大能发话了,能顶用吗?
  14. 他们的爱情 王小波和李银河
  15. aruba交换机配置命令_aruba配置手册
  16. linux中su 与su-的区别
  17. k8s中的deployment
  18. 什么是地狱回调 / 解决回调地狱
  19. 逆向教程2 某信营业厅
  20. js复数类的学习和使用

热门文章

  1. android调用相册和摄像头,Android8.3调用摄像头和相册
  2. 人工智能数学基础:利用导数判断函数单调性、凹凸性、极值、最值和描绘函数图形
  3. GPS理论知识NMEA 0813协议
  4. 2021 年第十三届四川省 ACM-ICPC 大学生程序设计竞赛(A/B/D/H/E/K/M/L)
  5. 软考高项论文写作注意要点(一)
  6. ESP32在WIN7下USB调试串口驱动安装 解决USB JTAG/serial debug unit (Interface 0)无法安装驱动的问题
  7. IT项目管理知识体系九大知识领域
  8. 阿里的面试官都喜欢问哪些问题?
  9. Windows批处理bat常用命令教程
  10. 华为设备路由策略原理与实验