java 让坦克移动_java 坦克不能左右移动 可以上下
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
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 坦克不能左右移动 可以上下相关推荐
- java 坦克大战画坦克_Java坦克大战部分:画出界面,敌人坦克,我的坦克,不出界,键盘事件【诗书画唱】...
含很多自己写的个理解和注释,想出的解决,建议,提示,注意事项等方法: package tankeGame; import java.awt.Color; import java.awt.Graphic ...
- java之详解坦克大战_Java之详解坦克大战游戏(一)
相信大家小时候一定玩过坦克大战游戏,躲避敌方坦克,炸毁敌方坦克,不断向前进攻直逼敌方基地-这次,我们来实现一个简单版的坦克大战,我想学Java的人都有想到以前的按键手机里那菜单点开"Java ...
- java中如何将子弹向对角发射_Java 坦克大战 tankwar
tankwar 是使用java开发的一个单机版的小游戏 (未使用任何游戏引擎). 和90经典版的坦克大战有些不同, 这里是纯坦克之间的战争, 英雄坦克并不用保护它的家. 特色: 1. 游戏共设6个关卡 ...
- java坦克大战总体功能设计_Java坦克大战设计报告.doc
Java坦克大战设计报告.doc <语言设计> 设计报告 信息工程学院专业班级:::指导老师:2011年7月22日 目录 目录2 题目一 坦克大战4 1.1题目简介4 1.2设计的内容.要 ...
- java怎么连发子弹_JAVA之坦克子弹连发以及敌人坦克死亡
总结一下几点 1:在hero中修改子弹,并且把原有初始化子弹语句初始化,利用线程安全的集合类 Vector来进行,并在switch中进行加入 Vector ss=new Vector(); show ...
- 手把手教你用Java实现一个简易联网坦克对战小游戏
作者:炭烧生蚝 cnblogs.com/tanshaoshenghao/p/10708586.html 介绍 通过本项目能够更直观地理解应用层和运输层网络协议, 以及继承封装多态的运用. 网络部分是本 ...
- java 坦克大战画坦克_【JAVA语言程序设计基础篇】--JAVA实现坦克大战游戏--画出坦克(二)...
坦克类: //坦克父类 可以设置坦克出现位置(x,y) class Tank { int x = 0; int y = 0; public Tank (int x,int y){ this.x = x ...
- java怎么实现网络对战平台_手把手教你用Java实现一个简易联网坦克对战小游戏...
介绍 通过本项目能够更直观地理解应用层和运输层网络协议, 以及继承封装多态的运用. 网络部分是本文叙述的重点, 你将看到如何使用Java建立TCP和UDP连接并交换报文, 你还将看到如何自己定义一个简 ...
- 如何用java让坦克发射子弹_手把手教你用Java实现一个简易联网坦克对战小游戏 !...
介绍 通过本项目能够更直观地理解应用层和运输层网络协议, 以及继承封装多态的运用. 网络部分是本文叙述的重点, 你将看到如何使用Java建立TCP和UDP连接并交换报文, 你还将看到如何自己定义一个简 ...
最新文章
- RHEL 5服务篇—修改MySQl数据库root密码的几种方式
- MySQL-WorkBench修改MySQL配置注意事项
- springboot整合freemarker(转)
- even though storm
- KDDockWidgets源码编译及安装
- 【Jetson Nano学习笔记】3. ORB-SLAM3运行双目Demo(ZED 2i)
- (十九)TCPIP面试宝典-进入大厂必备总结(上)
- Linux qt程序打包依赖库,Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)...
- python字符串中千分位标记的转化
- java如何排除多余的依赖_Maven依赖排除 禁止依赖传递 取消依赖的方法 去除jar包中的不想要的依赖关系...
- 746. 使用zui小花费爬楼梯(JavaScript)
- C#/winform 旅游管理信息系统
- 浅析openvn redirect-gateway组建公司专网的使用
- 华为鸿蒙如何添加桌面小组件,万能小组件添加至桌面怎么弄?桌面添加应用方法图文详解...
- 工作能力强的人,都有哪些特点?
- 应对SOX法案的挑战
- 悬挂缩进 java,c#Word Interop - 设置段落缩进
- 为什么不建议用Executors?
- matlab声音的滤波处理,MATLAB声音信号的采集与滤波处理
- android基于ffmpeg本地视频、在线视频、直播播放器 支持rtmp、rtsp、http等协议