该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

package com.tangke;

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

public class Person2 extends JFrame{

MyPanel3 mp=null;

public static void main(String[] args) {

// TODO Auto-generated method stub

Person2 pp=new Person2();

}

public Person2()

{

mp=new MyPanel3();

this.add(mp);

//监听

this.addKeyListener(mp);

this.setSize(400,300);

this.setResizable(false);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

System.out.println("我被调用了1");

}

}

//自己的面板 画面区域

class MyPanel3 extends JPanel implements KeyListener

{

int x=10;

int y=10;

Hero hero=null;

public MyPanel3()

{

hero=new Hero(10,10);

}

//重写paint方法

public void paint(Graphics g)

{

//这句话不能少 调用父类初始化

super.paint(g);

g.fillRect(0, 0, 400, 300);

//画圆

g.drawOval(x, y, x, y);

//this.drawTank(hero.getX(), hero.getY(), g, 0, 0);

this.drawTank(x, y, g, 0, 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.setColor(Color.cyan);

// 画出我的坦克(到时再封装)

//画出左边矩形

g.fill3DRect(x, hero.getY(), 5, 30,false);

g.fill3DRect(x, hero.getY(), 5, 30,false);

//画出右面矩形

g.fill3DRect(x+15, hero.getY(), 5, 30,false);

//画出中间矩形

g.fill3DRect(x+5, hero.getY()+5, 10, 17,false);

//中间圆形

g.fillOval(x+5, hero.getY()+7, 10, 10);

//画出线

g.drawLine(x+9, hero.getY()+15, x+10, hero.getY());

break;

}

}

//输出

//键按下处理,a左 s下 w上 d右

public void keyTyped(KeyEvent e) {

// TODO Auto-generated method stub

}

//键被按下

public void keyPressed(KeyEvent e) {

// TODO Auto-generated method stub

//System.out.println("键按下"+(char)e.getKeyCode());

if(e.getKeyCode()==KeyEvent.VK_W)

{

//设置坦克方向

this.hero.setDirect(0);

this.hero.moveUp();

}else if(e.getKeyCode()==KeyEvent.VK_D)

{

//向右

this.hero.setDirect(1);

this.hero.moveRight();

}else if(e.getKeyCode()==KeyEvent.VK_S)

{

//向下

this.hero.setDirect(2);

this.hero.moveDown();

}else if(e.getKeyCode()==KeyEvent.VK_A)

{

//向左

this.hero.setDirect(3);

this.hero.moveLeft();

}

//调用repaint()函数来重绘界面

this.repaint();

}

//键放开

public void keyReleased(KeyEvent e) {

// TODO Auto-generated method stub

}

}

//坦克类

class Tank

{

//表示坦克横坐标

int x=0;

//表示坦克纵坐标

int y=0;

//坦克方向

//0上 1右 2下 3左

int direct=0;

//设置坦克的速度

int speed=5;

public int getSpeed() {

return speed;

}

public void setSpeed(int speed) {

this.speed = speed;

}

public int getDirect() {

return direct;

}

public void setDirect(int direct) {

this.direct = direct;

}

public Tank (int x,int y)

{

this.x=x;

this.y=y;

}

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;

}

}

//我的坦克

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 moveDown()

{

y+=speed;

}

//坦克向左移动

public void moveLeft()

{

x-=speed;

}

}

java 让坦克移动_java 坦克不能左右移动 可以上下相关推荐

  1. java 坦克大战画坦克_Java坦克大战部分:画出界面,敌人坦克,我的坦克,不出界,键盘事件【诗书画唱】...

    含很多自己写的个理解和注释,想出的解决,建议,提示,注意事项等方法: package tankeGame; import java.awt.Color; import java.awt.Graphic ...

  2. java之详解坦克大战_Java之详解坦克大战游戏(一)

    相信大家小时候一定玩过坦克大战游戏,躲避敌方坦克,炸毁敌方坦克,不断向前进攻直逼敌方基地-这次,我们来实现一个简单版的坦克大战,我想学Java的人都有想到以前的按键手机里那菜单点开"Java ...

  3. java中如何将子弹向对角发射_Java 坦克大战 tankwar

    tankwar 是使用java开发的一个单机版的小游戏 (未使用任何游戏引擎). 和90经典版的坦克大战有些不同, 这里是纯坦克之间的战争, 英雄坦克并不用保护它的家. 特色: 1. 游戏共设6个关卡 ...

  4. java坦克大战总体功能设计_Java坦克大战设计报告.doc

    Java坦克大战设计报告.doc <语言设计> 设计报告 信息工程学院专业班级:::指导老师:2011年7月22日 目录 目录2 题目一 坦克大战4 1.1题目简介4 1.2设计的内容.要 ...

  5. java怎么连发子弹_JAVA之坦克子弹连发以及敌人坦克死亡

    总结一下几点 1:在hero中修改子弹,并且把原有初始化子弹语句初始化,利用线程安全的集合类  Vector来进行,并在switch中进行加入 Vector ss=new Vector(); show ...

  6. 手把手教你用Java实现一个简易联网坦克对战小游戏

    作者:炭烧生蚝 cnblogs.com/tanshaoshenghao/p/10708586.html 介绍 通过本项目能够更直观地理解应用层和运输层网络协议, 以及继承封装多态的运用. 网络部分是本 ...

  7. java 坦克大战画坦克_【JAVA语言程序设计基础篇】--JAVA实现坦克大战游戏--画出坦克(二)...

    坦克类: //坦克父类 可以设置坦克出现位置(x,y) class Tank { int x = 0; int y = 0; public Tank (int x,int y){ this.x = x ...

  8. java怎么实现网络对战平台_手把手教你用Java实现一个简易联网坦克对战小游戏...

    介绍 通过本项目能够更直观地理解应用层和运输层网络协议, 以及继承封装多态的运用. 网络部分是本文叙述的重点, 你将看到如何使用Java建立TCP和UDP连接并交换报文, 你还将看到如何自己定义一个简 ...

  9. 如何用java让坦克发射子弹_手把手教你用Java实现一个简易联网坦克对战小游戏 !...

    介绍 通过本项目能够更直观地理解应用层和运输层网络协议, 以及继承封装多态的运用. 网络部分是本文叙述的重点, 你将看到如何使用Java建立TCP和UDP连接并交换报文, 你还将看到如何自己定义一个简 ...

最新文章

  1. RHEL 5服务篇—修改MySQl数据库root密码的几种方式
  2. MySQL-WorkBench修改MySQL配置注意事项
  3. springboot整合freemarker(转)
  4. even though storm
  5. KDDockWidgets源码编译及安装
  6. 【Jetson Nano学习笔记】3. ORB-SLAM3运行双目Demo(ZED 2i)
  7. (十九)TCPIP面试宝典-进入大厂必备总结(上)
  8. Linux qt程序打包依赖库,Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)...
  9. python字符串中千分位标记的转化
  10. java如何排除多余的依赖_Maven依赖排除 禁止依赖传递 取消依赖的方法 去除jar包中的不想要的依赖关系...
  11. 746. 使用zui小花费爬楼梯(JavaScript)
  12. C#/winform 旅游管理信息系统
  13. 浅析openvn redirect-gateway组建公司专网的使用
  14. 华为鸿蒙如何添加桌面小组件,万能小组件添加至桌面怎么弄?桌面添加应用方法图文详解...
  15. 工作能力强的人,都有哪些特点?
  16. 应对SOX法案的挑战
  17. 悬挂缩进 java,c#Word Interop - 设置段落缩进
  18. 为什么不建议用Executors?
  19. matlab声音的滤波处理,MATLAB声音信号的采集与滤波处理
  20. android基于ffmpeg本地视频、在线视频、直播播放器 支持rtmp、rtsp、http等协议

热门文章

  1. 布兰德 • 斯奈德节拍表
  2. bugku-web8
  3. Team Leader 的职责与范围
  4. 用友畅捷通T+设置外网访问,用的是神卓互联
  5. knn鸢尾花数据集java_机器学习——鸢尾花数据集(Knn分类)
  6. js map满足条件跳出循环_js.es5 map循环一大坑:循环遍历竟然出现逗号!
  7. 蓝牙室内定位|蓝牙信标iBeacon部署原则
  8. Docker 多阶段构建镜像multi-stage
  9. JSON schema(模式)
  10. 微慕插件二开wordpress微信小程序源码下载 星尘UI v1.3.1