java基础学习之时间监听--坦克
来源:互联网 发布:java数组的用法 编辑:程序博客网 时间:2024/06/01 08:03
/** * */ package com.demo; import java.awt.*; import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.*;import javax.swing.*; /** * @author Administrator * */ public class MyTankGame1 extends JFrame{ /** * @param args */ MyPanel mp=null; public static void main(String[] args) { // TODO 自动生成的方法存根 MyTankGame1 mtg =new MyTankGame1(); } //构造函数 public MyTankGame1() { mp=new MyPanel(); this.add(mp); //注册监听 this.addKeyListener(mp); this.setSize(400,300); this.setVisible(true); } //我的面板 class MyPanel extends JPanel implements KeyListener { //定义一个坦克 Hero hero=null; //定义敌人坦克 Vector<EnemyTank> ets=new Vector<EnemyTank>(); int enSize=3; //构造函数 public MyPanel() { hero=new Hero(10,10); //初始化敌人的坦克 for(int i=0;i<enSize;i++) { //创建一辆敌人坦克对象 EnemyTank et=new EnemyTank((i+1)*50,0); et.setColor(0); //加入 ets.add(et);; } } //重写paint public void paint(Graphics g) { super.paint(g); //将区域设为黑色 g.fillRect(0, 0, 400, 300); this.drawTank(hero.getX(),hero.getY(),g,this.hero.direct,1); //画出敌人的坦克 for(int i=0;i<ets.size();i++) { this.drawTank(ets.get(i).getX(),ets.get(i).getY(),g,this.hero.direct,0); } } //画出坦克的函数 public void drawTank(int x,int y,Graphics g,int direct,int type) { switch(type) { case 0: g.setColor(Color.cyan); break; case 1: g.setColor(Color.yellow); break; } //判断方向 switch(direct) { case 0://上 //画出我的坦克 //画出左面的矩形 g.fill3DRect(x,y,5,30,false); //画出右边的矩形 g.fill3DRect(x+15,y,5,30,false); //画出中间矩形 g.fill3DRect(x+5,y+5,10,20,false); //画出中间圆 g.fillOval(x+5,y+10,10,10); //画线 g.drawLine(x+10,y+15, x+10, y); break; case 1: //向右 g.fill3DRect(x,y,30,5,false); //画出右边的矩形 g.fill3DRect(x,y+15,30,5,false); //画出中间矩形 g.fill3DRect(x+5,y+5,20,10,false); //画出中间圆 g.fillOval(x+10,y+5,10,10); //画线 g.drawLine(x+15,y+10, x+30, y+10); break; case 2://下 //画出我的坦克 //画出左面的矩形 g.fill3DRect(x,y,5,30,false); //画出右边的矩形 g.fill3DRect(x+15,y,5,30,false); //画出中间矩形 g.fill3DRect(x+5,y+5,10,20,false); //画出中间圆 g.fillOval(x+5,y+10,10,10); //画线 g.drawLine(x+10,y+15, x+10, y+30); break; case 3: //向右 g.fill3DRect(x,y,30,5,false); //画出右边的矩形 g.fill3DRect(x,y+15,30,5,false); //画出中间矩形 g.fill3DRect(x+5,y+5,20,10,false); //画出中间圆 g.fillOval(x+10,y+5,10,10); //画线 g.drawLine(x+15,y+10, x, y+10); break; } } //键使用aswd控制上下左右public void keyPressed(KeyEvent arg0) {// TODO 自动生成的方法存根if(arg0.getKeyCode()==KeyEvent.VK_W){//设置我的坦克的方向this.hero.setDirect(0);this.hero.moveUp();}else if(arg0.getKeyCode()==KeyEvent.VK_A){this.hero.setDirect(3);this.hero.moveLeft();}else if(arg0.getKeyCode()==KeyEvent.VK_S){this.hero.setDirect(2);this.hero.moveDown();}else if(arg0.getKeyCode()==KeyEvent.VK_D){this.hero.setDirect(1);this.hero.moveRight();}//重新绘制Panelthis.repaint();}public void keyReleased(KeyEvent arg0) {// TODO 自动生成的方法存根}public void keyTyped(KeyEvent arg0) {// TODO 自动生成的方法存根} } } class Tank { int x; int y; //坦克方向0上1右2下3左 int direct=0; int color=0; public int getColor() {return color;}public void setColor(int color) {this.color = color;}public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}//速度 int speed=1; public int getDirect() {return direct;}public void setDirect(int direct) {this.direct = direct;}public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public Tank(int x,int y) { this.x=x; this.y=y; } }
//成员类
package com.demo;//敌人的坦克class EnemyTank extends Tank{public EnemyTank(int x,int y){super(x, y); }}//我的坦克 class Hero extends Tank { public Hero(int x,int y) { super(x, y); } //坦克向上移动 public void moveUp() { y-=speed; } //向右移动 public void moveRight() { x+=speed; } public void moveLeft() { x-=speed; } public void moveDown() { y+=speed; }}
0 0
- java基础学习之时间监听--坦克
- java基础学习之事件监听--坦克
- java基础学习之坦克
- java基础学习之坦克击中消失
- java基础学习之坦克游戏
- java基础学习之坦克游戏
- java基础学习之坦克游戏
- java基础学习之面对对面的图形绘制 坦克
- java基础学习之线程--坦克子弹的运动
- java基础学习之事件监听之键盘监听
- java基础学习之事件监听2
- java基础学习之事件监听--鼠标点击
- JAVA 学习日志 一个坦克游戏,关于数组对象、键盘监听、双缓冲、重写
- Java学习总结之坦克大战项目(一)
- Java学习总结之坦克大战项目(二)
- Java学习总结之坦克大战项目(三)
- Java学习总结之坦克大战项目(完结版)
- JAVA项目学习之坦克大战单机版
- 欢迎使用CSDN-markdown编辑器
- Codeforces Round #337 (Div. 2)C. Harmony Analysis
- 多线程——引用同步函数解决经典储户银行存钱问题
- pycharm学习技巧 Learning tips
- S5PV210(TQ210)学习笔记——按键驱动程序
- java基础学习之时间监听--坦克
- 如何使用Hadoop的MultipleOutputs进行多文件输出
- 100天土鸡饲养计划(29)
- android基础-Apk打包
- 初学者之小甲鱼C++对象的介绍
- iOS编程中比较两个日期的大小
- 机房收费系统——上下机操作
- 生成一个32位的UUID
- PHP常用函数