我们需要知道窗口显示了哪些东西。百度搜索这个小游戏,或者上小游戏网站玩几次就可以知道游戏规则了http://www.7k7k.com/swf/129505.htm

我们可以看到游戏界面和游戏玩法

先画一个窗口,在编写一个窗口时我们所需要的方法都可以在Frame类中copy下来,以防自己写错。我们需要的窗口:黑底,边框可以随着拖动而改变,设置窗口大小,窗口上方写着tankgame(总共四个要求)

在windows类中我们可以找到这些方法:(1)setSize(int width, int height)(2)setVisible(boolean b)

在Frame类中我们可以找到这些方法:(1)setTitle(String title)(2)setResizable(boolean resizable) (3) setBackground(Color bgColor)

编写的程序遇到的问题(1)

应该进入java文件所在的目录。(2)数据类型的问题(见我的java数据类型)

1 import java.awt.*;2 public class TankGame extendsFrame {3 public voidshowFrame(){4 setBackground(Color.black);5 setTitle("tankgame");6 setResizable(true);7 setVisible(true);8 setSize(514,450);9

10

11

12 }13

14

15

16 public static voidmain(String[] args){17

18

19 newTankGame().showFrame();20

21

22 }23

关掉这个界面需要在命令行输入ctrl+c(还没进行事件处理,就像你为别人创造了一个东西,但是你还没有为别人删除一个东西的能力,那个叉叉只是一个图像,没有任何意义,跟界面上的每个图像一样,都是图像)

计算机屏幕的坐标是从左上方开始的,x轴朝上,y轴朝下

但是这个窗口我们并不满意,因为这个界面跟我们看到的不一样(如下图)

所以我们需要用到panel(这个容器需要跟Frame一起使用才能显示出来)见container的add方法

我们可以通过panel一些方法(从container和component找到)。设置大小,背景颜色,可见的(1)setBackground(Color c)(2)setSize(int width, int height)(3)setVisible(boolean b)

个人的代码只是一种测试,不是完全按照要求来

1 import java.awt.*;2 public class TankGame extendsFrame {3 public voidshowFrame(){4 setBackground(Color.black);5 setTitle("tankgame");6 setResizable(true);7 setVisible(true);8 setSize(514,450);9

10

11

12 }13

14

15

16 public static voidmain(String[] args){17

18

19 TankGame tankgame=newTankGame();20 tankgame.showFrame();21 TankGameTwo tankgametwo=newTankGameTwo();22 tankgametwo.showPanel();23 tankgame.add(tankgametwo);24

25

26 }27

28

29 }30 class TankGameTwo extendsPanel{31 voidshowPanel(){32 setBackground(Color.orange);33 setSize(90,90);34 setVisible(true);35 }36

37

38

39 }

如果按照这个代码,我们会发现,我们根本看不见frame的颜色,我们看见的颜色是panel的颜色(如果你晃动边框,frame的颜色会显示出来)

解决办法在两个类中的方法中调用一个方法(因为默认有布局管理器,我们设置大小对他们就没有用了,所以我们需要手动地设置,取消布局管理器)

1 import java.awt.*;2 public class TankGame extendsFrame {3 public voidshowFrame(){4 setBackground(Color.gray);5 setTitle("tankgame");6 setResizable(true);7 setVisible(true);8 setSize(514,450);9 setLayout(null);10

11

12

13 }14

15

16

17 public static voidmain(String[] args){18

19

20 TankGame tankgame=newTankGame();21 tankgame.showFrame();22 TankGameTwo tankgametwo=newTankGameTwo();23 tankgametwo.showPanel();24 tankgame.add(tankgametwo);25

26

27 }28

29

30 }31 class TankGameTwo extendsPanel{32 voidshowPanel(){33 setBackground(Color.black);34 setSize(415,415);35 setVisible(true);36 setLayout(null);37 }38

39

40

41 }

那么怎么使panel相对于Frame往中间去一点呢,有个设置x,y的方法,同时设置大小

界面做的有点丑,这个需要自己花很多次调整,我没有什么工具来慢慢调整的(或者对照网页上游戏的界面来设置,截屏就知道大小了,前端工程师经常这样做)

那么问题来了怎么使panel跟着container改动呢?这种方法由布局管理器来实现

这个接口下有很多种布局管理器

这样就可以让panle随着Frame动而不改变整体布局(这种逻辑关系是frame用弩据管理器来布局panel)

怎么使鼠标按那个叉叉,然后窗口关掉。

这样发现不对,因为少了适配器的概念。而且实现接口是每个方法都必须实现,如果不全部实现,就是上述的错误。

改正之后

但是你还会发现有错误(因为没有引入包)

最后你还会发现一个问题,怎么在事件器中设置当前窗口的setvisible方法。

1 import java.awt.*;

2 import java.awt.event.*;3 public class TankGame extendsFrame {4 public voidshowFrame(){5 setBackground(Color.gray);6 setTitle("tankgame");7 setResizable(true);8 setVisible(true);9 setSize(514,450);10 setLayout(newFlowLayout());11

12 li l=newli();13 this.addWindowListener(l);14

15

16

17 }18

19

20

21 public static voidmain(String[] args){22

23

24 TankGame tankgame=newTankGame();25 tankgame.showFrame();26 TankGameTwo tankgametwo=newTankGameTwo();27 tankgametwo.showPanel();28 tankgame.add(tankgametwo);29

30

31

32 }33

34

35 }36 class li extendsWindowAdapter{37

38

39 public voidwindowClosing(WindowEvent e){40 Window i=(Window)e.getWindow();41 i.setVisible(false);42 System.exit(-1);43

44

45 }46

47

48 }49 class TankGameTwo extendsPanel{50 voidshowPanel(){51 setBackground(Color.black);52 setBounds(35,38,415,415);53 setVisible(true);54 setLayout(null);55

56 }57

63

64 65

66

67

68

69

70 }

坦克大战项目java_新手小项目-java坦克大战相关推荐

  1. java基础小项目_java基础小项目练习之1----3天做出飞机大战

    Shoot射击游戏第一天 一.关键问题(理论): 1.简述FlyingObject.Enemy.Award.Airplane.Bee.Bullet.Hero之间的继承与实现关系 2.简述Hero类构造 ...

  2. 新手学java_新手如何学习Java

    新手如何学习Java Java作为一门高级编程语言在信息科技时代有着广泛的应用.新手如何学习Java呢?下面小编来给大家介绍Java的学习方法,希望对大家有帮助! 1理解Java思想 Java是一门面 ...

  3. python小项目案例-Python小项目:快速开发出一个简单的学生管理系统

    本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...

  4. pyqt5优秀项目python_Python-PyQt5-第一个小项目--登录框--login

    Ps:水平有限,欢迎建议和挑错 我们在此之前,学习了PyQt的主窗口(QMainwindow),按钮(Qpushbutton),标签栏(QLabel),文本框编辑框(LineEdit)4个组件. 我们 ...

  5. python新手小项目-推荐:一个适合于Python新手的入门练手项目

    随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...

  6. 微信开发众筹项目视频教学小程序+java后端开发+mysql数据库

    用HBuilder X开发微信小程序,java后端开发工具idea,mysql数据库,主要功能有:用户管理.分类列表.分类金额.众筹列表.订单列表.系统设置.权限分配 源码下载地址:>>& ...

  7. 国外小项目,简单小项目赚美金,1个任务10秒,让你轻松赚美金,2022副业轻松赚钱

    很多时候我们在谈论网络赚钱的时候,首先都会想到如何建立一些实际的在线赚钱业务或者联盟行销,虽然这两种是当前网上赚钱的主流,但是很多人其实不太愿意去做,因为前期是需要花费很多时间和精力的,而且也需要一些 ...

  8. 小项目也可以学习到很多东西

    今天分享关于最近做的一个小项目学习一些感悟. 1.小项目也能学习到非常多的知识 最近做的是一个数据整理的一个项目,后台系统需要一些统计的数据,如果从原有的系统中查询,会大大影响到其他端的性能,而且相对 ...

  9. Python实战项目23个实战小项目小程序简单

    Python项目23个小项目简单 项目类别 部分项目运行截图 含代码注释 项目类别 51商城 AI智能联系人管理(双击即启动) BBS问答社区 DIY字符画(双击即启动) Excel数据分析师(双击即 ...

最新文章

  1. android java file 清理垃圾获取文件大小 删除文件等操作
  2. 剖析一个再次调整的seo排名案例
  3. spring一: 容器以及bean生命周期
  4. 我失败的阿里程序员生涯
  5. ABAP语言常用的系统字段及函数
  6. (转)向SDE库中写入栅格和矢量数据
  7. vue中 key 值的作用
  8. nginx 过滤post报文 防火墙_详解nginx限制IP恶意调用短信接口处理方法
  9. Tensorflow2.0之FGSM
  10. java启动tomcat9闪退
  11. 跨站脚本攻击(XSS)
  12. 2021ICPC网络赛第一场【A Busiest Computing Nodes】【D Edge of Taixuan】
  13. ksql整合debezium创建连接器出现500
  14. python画图颜色代码rgb_如何获取matplotlib颜色方案的RGB值?
  15. 支付项目:5、通用型支付系统(1)
  16. nodejs读取图片并将二进制数据转换成base64格式
  17. nema23_framesize NEMA23(56.4mm) 混合式步进电机 - MOONS'
  18. teamspeak搭建_centos7 teamspeak3的搭建
  19. 搜索不到投屏设备怎么办_乐播投屏搜索不到设备怎么办 手把手解决你的烦恼...
  20. 午睡过后最好喝一杯茶

热门文章

  1. 华为云数据库赋能数字化转型,为让云原生数据库走进千行百业
  2. 文档管理系统的核心技术与难点
  3. 微服务组件之Hystrix豪猪简介和简单学习-2021-8-20
  4. 小米9 字体样式问题
  5. JAVA报表(jor简表使用)
  6. 英语期刊写作-通往国际学术舞台的阶梯答案
  7. GJB 5000B 二级-MT运行维护
  8. 学习笔记1(sep+end+print)
  9. Tensorflow报错:ValueError: Trying to share variable ..., but specified shape ... and found shape ...
  10. idea代码格式化快捷键及使用注意事项