坦克大战项目java_新手小项目-java坦克大战
我们需要知道窗口显示了哪些东西。百度搜索这个小游戏,或者上小游戏网站玩几次就可以知道游戏规则了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坦克大战相关推荐
- java基础小项目_java基础小项目练习之1----3天做出飞机大战
Shoot射击游戏第一天 一.关键问题(理论): 1.简述FlyingObject.Enemy.Award.Airplane.Bee.Bullet.Hero之间的继承与实现关系 2.简述Hero类构造 ...
- 新手学java_新手如何学习Java
新手如何学习Java Java作为一门高级编程语言在信息科技时代有着广泛的应用.新手如何学习Java呢?下面小编来给大家介绍Java的学习方法,希望对大家有帮助! 1理解Java思想 Java是一门面 ...
- python小项目案例-Python小项目:快速开发出一个简单的学生管理系统
本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...
- pyqt5优秀项目python_Python-PyQt5-第一个小项目--登录框--login
Ps:水平有限,欢迎建议和挑错 我们在此之前,学习了PyQt的主窗口(QMainwindow),按钮(Qpushbutton),标签栏(QLabel),文本框编辑框(LineEdit)4个组件. 我们 ...
- python新手小项目-推荐:一个适合于Python新手的入门练手项目
随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...
- 微信开发众筹项目视频教学小程序+java后端开发+mysql数据库
用HBuilder X开发微信小程序,java后端开发工具idea,mysql数据库,主要功能有:用户管理.分类列表.分类金额.众筹列表.订单列表.系统设置.权限分配 源码下载地址:>>& ...
- 国外小项目,简单小项目赚美金,1个任务10秒,让你轻松赚美金,2022副业轻松赚钱
很多时候我们在谈论网络赚钱的时候,首先都会想到如何建立一些实际的在线赚钱业务或者联盟行销,虽然这两种是当前网上赚钱的主流,但是很多人其实不太愿意去做,因为前期是需要花费很多时间和精力的,而且也需要一些 ...
- 小项目也可以学习到很多东西
今天分享关于最近做的一个小项目学习一些感悟. 1.小项目也能学习到非常多的知识 最近做的是一个数据整理的一个项目,后台系统需要一些统计的数据,如果从原有的系统中查询,会大大影响到其他端的性能,而且相对 ...
- Python实战项目23个实战小项目小程序简单
Python项目23个小项目简单 项目类别 部分项目运行截图 含代码注释 项目类别 51商城 AI智能联系人管理(双击即启动) BBS问答社区 DIY字符画(双击即启动) Excel数据分析师(双击即 ...
最新文章
- android java file 清理垃圾获取文件大小 删除文件等操作
- 剖析一个再次调整的seo排名案例
- spring一: 容器以及bean生命周期
- 我失败的阿里程序员生涯
- ABAP语言常用的系统字段及函数
- (转)向SDE库中写入栅格和矢量数据
- vue中 key 值的作用
- nginx 过滤post报文 防火墙_详解nginx限制IP恶意调用短信接口处理方法
- Tensorflow2.0之FGSM
- java启动tomcat9闪退
- 跨站脚本攻击(XSS)
- 2021ICPC网络赛第一场【A Busiest Computing Nodes】【D Edge of Taixuan】
- ksql整合debezium创建连接器出现500
- python画图颜色代码rgb_如何获取matplotlib颜色方案的RGB值?
- 支付项目:5、通用型支付系统(1)
- nodejs读取图片并将二进制数据转换成base64格式
- nema23_framesize NEMA23(56.4mm) 混合式步进电机 - MOONS'
- teamspeak搭建_centos7 teamspeak3的搭建
- 搜索不到投屏设备怎么办_乐播投屏搜索不到设备怎么办 手把手解决你的烦恼...
- 午睡过后最好喝一杯茶
热门文章
- 华为云数据库赋能数字化转型,为让云原生数据库走进千行百业
- 文档管理系统的核心技术与难点
- 微服务组件之Hystrix豪猪简介和简单学习-2021-8-20
- 小米9 字体样式问题
- JAVA报表(jor简表使用)
- 英语期刊写作-通往国际学术舞台的阶梯答案
- GJB 5000B 二级-MT运行维护
- 学习笔记1(sep+end+print)
- Tensorflow报错:ValueError: Trying to share variable ..., but specified shape ... and found shape ...
- idea代码格式化快捷键及使用注意事项