社区
Java SE
帖子详情
学习马士兵坦克教程使用枚举遇到的问题
夏日风帆
2015-07-02 03:56:22
编译环境 jdk1.7 +eclipse-dsl-kepler-SR1-win32-x86_64
新手正在学习马士兵坦克教程,使用枚举这个关键字时 报错,
enum can't resolve to a type ,
我用dos命令下编译是没有的问题
,我认为问题出在eclipse上 ,查了一些资料大多数的做法是说我的编译level过低 调制1.5以上就好了,但在我这不好使,从1.5一直到1.7均不好使,
我想问一下目前枚举是否经常使用,有什么替代方法
...全文
187
6
打赏
收藏
学习马士兵坦克教程使用枚举遇到的问题
编译环境 jdk1.7 +eclipse-dsl-kepler-SR1-win32-x86_64 新手正在学习马士兵坦克教程,使用枚举这个关键字时 报错, enum can't resolve to a type ,我用dos命令下编译是没有的问题 ,我认为问题出在eclipse上 ,查了一些资料大多数的做法是说我的编译level过低 调制1.5以上就好了,但在我这不好使,从1.5一直到1.7均不好使, 我想问一下目前枚举是否经常使用,有什么替代方法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
夏日风帆
2015-07-06
打赏
举报
回复
前几天不管这个工程报错 我从新建立一个新的工程,再将原来的工程导入之后,enum 关键字就能识别了,这可能是我这个版本eclipse的一个bug,调整编译环境后,得从新建立工程才能好使,否则即使重新启动软件也不行。
finemi
2015-07-03
打赏
举报
回复
没看出有啥问题,我这也没问题。 枚举完全看个人习惯了,好多人还是不喜欢用没枚举,但是也有喜欢的
夏日风帆
2015-07-03
打赏
举报
回复
引用 2 楼 dcxy0 的回复:
把枚举提到Tank的外面去试试.
只是个类啊 提到外面 没开玩笑吧
JPF1024
2015-07-02
打赏
举报
回复
把枚举提到Tank的外面去试试.
傻傻de点点
2015-07-02
打赏
举报
回复
换个Eclipse Luna试试?
C#
坦克
大战代码(电脑版本跟手机版本)
http://blog.csdn.net/xiaoxiao108/archive/2010/12/18/6084473.aspx 记得在大学学java时,同学在下载了很多java的视频,看到里面有些是介绍简单游戏开发的,
马士兵
老师讲的,挺感兴趣的。一起看了看视频写了写程序。现在毕业了,因为工作中用的是C#,最近很想拿C#把以前写的
坦克
大战重写下,来熟悉熟悉C#的基本语法。 程序很简单,跟java代码相比没有多大改动 开发环境 vs2008 实现方法如下 1.在form中添加一个panel,在panel的 Paint方法中得到Graphics对象 2.通过Graphics对象再panel画出
坦克
,子弹等相关内容 3.添加timer控件 来控制panel的重画 实现
坦克
,子弹的运动 4.根据电脑按下的方向键,确定出
坦克
的方向,panel重画时根据
坦克
的方向修改
坦克
的X,Y轴坐标,来实现
坦克
的移动 5.通过Rectangle的IntersectsWith函数来进行碰撞检测,实现子弹打击
坦克
具体实现代码 1.在项目里面添加
枚举
类型 ///
/// 表示方向的的
枚举
类型 ///
public enum Direction { L, U, D, R, STOP } 2.添加子弹类的相关常量,属性 ///
/// 子弹X轴的速度,单位PX ///
public static int XSPEED = 10; ///
/// 子弹Y轴的速度,单位PX ///
public static int YSPEED = 10; ///
/// 子弹的宽度 ///
public static int WIDTH = 10; ///
/// 子弹的高度 ///
public static int HEIGHT = 10; ///
/// 子弹的坐标 ///
int x, y; ///
/// 子弹的方向 ///
Direction dir; ///
/// 子弹的存活状态 ///
private bool live = true; ///
/// TankClient窗体实例 ///
private TankClient tankClient; ///
/// 敌我双方的标记 ///
private bool good; 3.添加draw方法来画出子弹 public void Draw(Graphics g) { if (!live) { tankClient.missiles.Remove(this); return; } //通过画椭圆函数在界面上显示子弹 g.FillEllipse(Brushes.Black, x, y, Missile.WIDTH, Missile.HEIGHT); Move(); } 4.添加子弹打击
坦克
的方法 public bool HitTank(Tank t) { //用IntersectsWith来检测两个矩形相碰撞 if (GetRectangle().IntersectsWith((t.GetRectangle())) && t.Live && this.live && this.good != t.Good) { t.Live = false; this.live = false; return true; } return false; } 5.添加
坦克
类相关属性,常量 ///
///
坦克
x轴的速度 ///
public static int XSPEED = 5; ///
///
坦克
y轴的速度 ///
public static int YSPEED = 5; ///
///
坦克
的宽度 ///
public static int WIDTH = 30; ///
///
坦克
的高度 ///
public static int HEIGHT = 30; ///
///
坦克
的坐标 ///
private int x, y; ///
/// 标记上下左右键是否按下 ///
private bool l = false, u = false, r = false, d = false; ///
///
坦克
的方向 ///
private Direction dir = Direction.STOP; ///
///
坦克
炮筒方向 ///
private Direction ptDir = Direction.D; ///
/// TankClient窗体实例 ///
TankClient tankClient; ///
/// 标记敌我双方 ///
private bool good; ///
/// 控制敌人
坦克
不规则运行时
使用
///
private int step = 0; ///
/// 标记
坦克
的存活状态 ///
private bool live = true; 6.在tank类中实现画
坦克
方法 public void Draw(Graphics g) { if (!live) { if (!good) { tankClient.tanks.Remove(this); } return; } if (good) { //通过FillEllipse来画
坦克
g.FillEllipse(Brushes.Red, x, y, WIDTH, HEIGHT); } else { g.FillEllipse(Brushes.Blue, x, y, WIDTH, HEIGHT); } //根据炮筒
坦克
来画出
坦克
的炮筒 switch (ptDir) { case Direction.D: g.DrawLine(Pens.Black, x + WIDTH / 2, y + HEIGHT / 2, x + WIDTH / 2, y + HEIGHT); break; case Direction.U: g.DrawLine(Pens.Black, x + WIDTH / 2, y + HEIGHT / 2, x + WIDTH / 2, y); break; case Direction.L: g.DrawLine(Pens.Black, x + WIDTH / 2, y + HEIGHT / 2, x, y + HEIGHT / 2); break; case Direction.R: g.DrawLine(Pens.Black, x + WIDTH / 2, y + HEIGHT / 2, x + WIDTH, y + HEIGHT / 2); break; } Move(); } 7.键盘按键处理的相关代码 public void KeyPressed(KeyEventArgs e) { Keys key = e.KeyCode; switch (key) { case Keys.Right: r = true; break; case Keys.Left: l = true; break; case Keys.Up: u = true; break; case Keys.Down: d = true; break; } LocateDirection(); } 8.tank发子弹的方法 public Missile Fire() { if (!live) return null; int x = this.x + WIDTH / 2 - Missile.WIDTH / 2; int y = this.y + HEIGHT / 2 - Missile.HEIGHT / 2; Missile missile = new Missile(x, y, good, ptDir, tankClient); tankClient.missiles.Add(missile); return missile; } 9.主窗体类加入
坦克
myTank = new Tank(50, 20, true, this);//放到前面 this不能用 //y轴比java的减少了30 for (int i = 0; i < 15; i++) { //添加10个
坦克
x轴间距为40px tanks.Add(new Tank(50+40*(i+1),20,false,this)); //y轴比java的减少了30 } 10.主窗体类中调用子弹打击
坦克
的方法 for (int i = 0; i < missiles.Count; i++) { Missile m = missiles[i]; m.HitTank(myTank); m.HitTanks(tanks); m.Draw(g); } 11.主窗体处理按键代码 private void Form1_KeyDown(object sender, KeyEventArgs e) { myTank.KeyPressed(e); } 12.控制重画代码 private void timer1_Tick(object sender, EventArgs e) { //间隔50毫秒控制panel的重画 panel1.Invalidate(); } 13.这是主要代码基本完成,但是游戏会有闪烁
问题
可以通过双缓冲来解决,C#解决时很省事,一个函数就能解决 this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true); 顺便改了个手机版本的但是手机版本的没能解决双缓冲
问题
,屏幕有些闪烁,朋友们可以自己改进 http://blog.csdn.net/xiaoxiao108/archive/2010/12/18/6084473.aspx 如果你发现有什么不合理的,需要改进的地方,联系328452421@qq.com 朱晓 (泰山学院)。相互交流 谢谢
简单C#
坦克
大战源码(电脑版本跟手机版本)
http://blog.csdn.net/xiaoxiao108/archive/2010/12/18/6084473.aspx 记得在大学学java时,同学在下载了很多java的视频,看到里面有些是介绍简单游戏开发的,
马士兵
老师讲的,挺感兴趣的。一起看了看视频写了写程序。现在毕业了,因为工作中用的是C#,最近很想拿C#把以前写的
坦克
大战重写下,来熟悉熟悉C#的基本语法。 程序很简单,跟java代码相比没有多大改动 实现方法如下 1.在form中添加一个panel,在panel的 Paint方法中得到Graphics对象 2.通过Graphics对象再panel画出
坦克
,子弹等相关内容 3.添加timer控件 来控制panel的重画 实现
坦克
,子弹的运动 4.根据电脑按下的方向键,确定出
坦克
的方向,panel重画时根据
坦克
的方向修改
坦克
的X,Y轴坐标,来实现
坦克
的移动 5.通过Rectangle的IntersectsWith函数来进行碰撞检测,实现子弹打击
坦克
具体实现代码 1.在项目里面添加
枚举
类型 ///
/// 表示方向的的
枚举
类型 ///
public enum Direction { L, U, D, R, STOP } 2.添加子弹类的相关常量,属性 ///
/// 子弹X轴的速度,单位PX ///
public static int XSPEED = 10; ///
/// 子弹Y轴的速度,单位PX ///
public static int YSPEED = 10; ///
/// 子弹的宽度 ///
public static int WIDTH = 10; ///
/// 子弹的高度 ///
public static int HEIGHT = 10; ///
/// 子弹的坐标 ///
int x, y; ///
/// 子弹的方向 ///
Direction dir; ///
/// 子弹的存活状态 ///
private bool live = true; ///
/// TankClient窗体实例 ///
private TankClient tankClient; ///
/// 敌我双方的标记 ///
private bool good; 3.添加draw方法来画出子弹 public void Draw(Graphics g) { if (!live) { tankClient.missiles.Remove(this); return; } //通过画椭圆函数在界面上显示子弹 g.FillEllipse(Brushes.Black, x, y, Missile.WIDTH, Missile.HEIGHT); Move(); } 4.添加子弹打击
坦克
的方法 public bool HitTank(Tank t) { //用IntersectsWith来检测两个矩形相碰撞 if (GetRectangle().IntersectsWith((t.GetRectangle())) && t.Live && this.live && this.good != t.Good) { t.Live = false; this.live = false; return true; } return false; } 5.添加
坦克
类相关属性,常量 ///
///
坦克
x轴的速度 ///
public static int XSPEED = 5; ///
///
坦克
y轴的速度 ///
public static int YSPEED = 5; ///
///
坦克
的宽度 ///
public static int WIDTH = 30; ///
///
坦克
的高度 ///
public static int HEIGHT = 30; ///
///
坦克
的坐标 ///
private int x, y; ///
/// 标记上下左右键是否按下 ///
private bool l = false, u = false, r = false, d = false; ///
///
坦克
的方向 ///
private Direction dir = Direction.STOP; ///
///
坦克
炮筒方向 ///
private Direction ptDir = Direction.D; ///
/// TankClient窗体实例 ///
TankClient tankClient; ///
/// 标记敌我双方 ///
private bool good; ///
/// 控制敌人
坦克
不规则运行时
使用
///
private int step = 0; ///
/// 标记
坦克
的存活状态 ///
private bool live = true; 6.在tank类中实现画
坦克
方法 public void Draw(Graphics g) { if (!live) { if (!good) { tankClient.tanks.Remove(this); } return; } if (good) { //通过FillEllipse来画
坦克
g.FillEllipse(Brushes.Red, x, y, WIDTH, HEIGHT); } else { g.FillEllipse(Brushes.Blue, x, y, WIDTH, HEIGHT); } //根据炮筒
坦克
来画出
坦克
的炮筒 switch (ptDir) { case Direction.D: g.DrawLine(Pens.Black, x + WIDTH / 2, y + HEIGHT / 2, x + WIDTH / 2, y + HEIGHT); break; case Direction.U: g.DrawLine(Pens.Black, x + WIDTH / 2, y + HEIGHT / 2, x + WIDTH / 2, y); break; case Direction.L: g.DrawLine(Pens.Black, x + WIDTH / 2, y + HEIGHT / 2, x, y + HEIGHT / 2); break; case Direction.R: g.DrawLine(Pens.Black, x + WIDTH / 2, y + HEIGHT / 2, x + WIDTH, y + HEIGHT / 2); break; } Move(); } 7.键盘按键处理的相关代码 public void KeyPressed(KeyEventArgs e) { Keys key = e.KeyCode; switch (key) { case Keys.Right: r = true; break; case Keys.Left: l = true; break; case Keys.Up: u = true; break; case Keys.Down: d = true; break; } LocateDirection(); } 8.tank发子弹的方法 public Missile Fire() { if (!live) return null; int x = this.x + WIDTH / 2 - Missile.WIDTH / 2; int y = this.y + HEIGHT / 2 - Missile.HEIGHT / 2; Missile missile = new Missile(x, y, good, ptDir, tankClient); tankClient.missiles.Add(missile); return missile; } 9.主窗体类加入
坦克
myTank = new Tank(50, 20, true, this);//放到前面 this不能用 //y轴比java的减少了30 for (int i = 0; i < 15; i++) { //添加10个
坦克
x轴间距为40px tanks.Add(new Tank(50+40*(i+1),20,false,this)); //y轴比java的减少了30 } 10.主窗体类中调用子弹打击
坦克
的方法 for (int i = 0; i < missiles.Count; i++) { Missile m = missiles[i]; m.HitTank(myTank); m.HitTanks(tanks); m.Draw(g); } 11.主窗体处理按键代码 private void Form1_KeyDown(object sender, KeyEventArgs e) { myTank.KeyPressed(e); } 12.控制重画代码 private void timer1_Tick(object sender, EventArgs e) { //间隔50毫秒控制panel的重画 panel1.Invalidate(); } 13.这是主要代码基本完成,但是游戏会有闪烁
问题
可以通过双缓冲来解决,C#解决时很省事,一个函数就能解决 this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true); 顺便改了个手机版本的但是手机版本的没能解决双缓冲
问题
,屏幕有些闪烁,朋友们可以自己改进 如果你发现有什么不合理的,需要改进的地方,联系328452421@qq.com 朱晓 (泰山学院)。相互交流 谢谢 不好意 资源传错了 没能正确下载的 联系328452421@qq.com ...
马士兵
教程
—《
坦克
大战》游戏设计思路
马士兵
教程
—《
坦克
大战》游戏设计思路 版本0.1 功能:产生一个窗口 版本0.2 功能:添加关闭窗口的事件处理 不允许窗口的大小改动 版本0.3 功能:画出代表
坦克
的实心圆 版本0.4 功能:让
坦克
运动起来 步骤: 将位置改变为变量 启动线程不断重画 思考:为什么
使用
线程重画,而不是每按下一个键进行一次重画? 线程重画更均匀,更能控制...
java
坦克
大战
教程
_
马士兵
老师/
坦克
大战/java基础/网络编程 (9.1G)视频
教程
下载...
目录:/V-1021:
马士兵
教育-
马士兵
老师
坦克
大战java基础网络编程 [9.1G]1 new出一个窗口.mp4 [91.5M]# e$ z" q# r" U; Q& u/ j! o2 设定标题栏内容.mp4 [78.5M]3 TankFrame从Frame继承+显示.mp4 [80.1M]4 认识paint方法,重写.mp4 [179.3M]5
学习
graphics类,画图.mp4 [...
Java实现经典
坦克
大战及源代码下载
一、简单介绍 这是一个功能相对全的JAVA版
坦克
大战,界面绘制是通过JAVA的图形化用户界面完成的,包括了菜单界面和游戏界面。其中菜单界面可以供玩家选择重新开始游戏、暂停、继续、是否播放背景音乐、帮助等操作;游戏界面绘制了
坦克
、河流、草地、鹰碉堡等经典
坦克
场景,玩家在游戏界面操作
坦克
开始对战。 本游戏
使用
的主要技术有Swing编程、面向对象编程、多线程编程。本...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章