坦克大战1.0版项目实战

  这里终于要开始我们的坦克大战的开发了!

  正文

    我个人并不认为在一个足够大的项目中一个人能尽善尽美地把所有因素都考虑在内,或许有那样的人,但做程序员太可惜了:),但是我们不能说不能全部顾着,就什么都不管不顾了。既然大多数人都不能把所有因素都考虑在内,又不能不管不顾,那么我们要考虑什么?要怎么去做,让我们的程序有章法,有很好地扩展性?我想这会是一个恒久的问题。但我个人有几点对自己做项目时考虑的想法!

  首先:我们的项目得有版本意识,就正如市场上所有的软件一样,它们必定会有版本,我们不可能一次性把所有功能,所有想法都实现了,再去发布,这显然是不现实的,你可能这样做了并且成功。但或许将产品投入使用后,会发现用户或许并不喜欢你的这个想法。那么,又该如何处理?我认为做一件事,首先只需要把最基本的东西给先搞定,然后一步一步去拓展,一边听取意见,一边自己想出一些更好的办法之类的。一步一步地去做。而不需要一开始考虑过多细节!

  在这里我们首先由一个基本要求:坦克大战1.0版本的基本要求就是使用GUI绘图技术在窗口上绘画出一个坦克(最好是漂亮的坦克)。

  我们这里有一个对应关系

    先得有窗口 -->  JFrame

    然后有画板 -->  JPanel

    再有坦克   -->  Graphics 和 paint

 1 package cn.vizdl.TankGame1;
 2
 3 import java.awt.Graphics;
 4
 5 import javax.swing.JFrame;
 6 import javax.swing.JPanel;
 7
 8
 9 //我的窗口
10 public class MyFrame extends JFrame{
11     MyPanel mp = null;
12
13     //主函数
14     public static void main (String[] args) {
15
16     }
17
18
19     //构造方法初始化
20     public MyFrame() {}
21 }
22
23 //我的画板
24 class MyPanel extends JPanel {
25     //重写paint方法
26     public void paint(Graphics  g) {}
27 }
28
29 //坦克类
30 class Tank{}
31
32 //我的坦克类
33 class MyTank extends Tank{}

  代码解释:

    这样就简单地给出了基础框架了,首先,1.0是有四个类的,画板贴在窗口,坦克画在画板上。

  问题1:为什么要有坦克类然后让我的坦克类继承坦克类?

    坦克类是父类,添加我的坦克和敌方坦克的所有共性(即 坦克共性),方便后续敌方坦克的添加(增加了扩展性)。

  自己思考:

    1.那么如何将 :“画板贴在窗口,坦克画在画板上。”的关系建立?

    2.坦克类具有什么属性和方法?

    3.我的坦克类具有什么属性和方法?

    4.应该如何设计坦克?怎么才能真正地把坦克花在画板上?

==================================================================未完待续============================================================================================================

原文地址:https://www.cnblogs.com/vizdl/p/9102071.html

时间: 2024-11-05 20:25:09

坦克大战1.0版项目实战的相关文章

坦克大战1.0版

心得 1.熟悉了Actionlistener的用法 2.了解了awt类的使用方法 体会 1.创建了属于自己的坦克 2.未来将不断更新,做出一款好玩的坦克大战 原文地址:https://www.cnblogs.com/kendn/p/8319290.html

(java项目)坦克大战 2.0

这个版本,只能算是一个雏形,把最基本的东西给完成了,不过,后面可添加的也不多.有一点,还是想去实现,那就是敌方坦克自己寻找对手!也就是游戏AI. emmm, 什么时候可以了解一下这个AI.顺便学学python. 这个帖子只是为了贴上代码,对后续的代码作为优化和添加游戏AI做准备的. 1. 各类接口 package Event; /* *具有攻击力的接口 */ public interface Attackable { /* * 校验具有攻击力的实物, 和, 具有被攻击的实物,是否能撞在一起 *

例子:web版坦克大战1.0

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>坦克大战</title> </head><body onkeydown="hero.move(event)"> <div id="filed" style="background:#

加强版坦克大战(java版)

转载自:http://blog.csdn.net/lihongxun945/article/details/6275581 这个坦克大战参考了初学java时看的马士兵的一个教程和小霸王上的坦克大战,并且加入了很多在魔兽中的英雄属性(移动速度,攻击速度,攻击力,生命上限等),还加入了一个小巧的地图编辑器. 废话不多说,先上图: 游戏界面: 地图编辑器: 详细说明: 1,除了坦克的图片外,其他图片全部为自己手绘,可能有点丑,特别是那个基地——! 2,游戏主界面,右边为属性窗口,在主界面按F4打开地图

JAVA写的坦克大战(单机图片版)

第一次写那么大的程序(感觉还是不错) package _25增加配置文件; import java.awt.*; import java.awt.event.*; import java.util.List; import java.util.ArrayList; /** * 这是这款游戏的主窗口,各个类都有他的引用 * @author ☆东★ * */ public class TankClient extends Frame{ private Image offScreamImage = n

Android Studio 1.0.2项目实战——从一个APP的开发过程认识Android Studio

Android Studio 1.0.1刚刚发布不久,谷歌紧接着发布了Android Studio 1.0.2版本,和1.0.0一样,是一个Bug修复版本.在上一篇Android Studio 1.0.1 + Genymotion安卓模拟器打造高效安卓开发环境,我们介绍了Android开发环境的搭建,今天先来说一下上一篇中大家问道比较多的问题,然后说一些Android Studio的使用技巧.  一.搭建开发环境中遇到的问题及解决办法 1.Genymotion模拟器网络错误 我们顺利的安装完了G

ASP.NET Core 2.0 MVC项目实战

 一.前言 毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的.之前实习时主要是做.NET的B/S架构的项目,主要还是用的那种传统的开发模式,只有一个项目用到了Web API,自己负责后端的接口功能实现.既然现在没办法改变现状,那就先改变自己吧.定了个计划,下班后慢慢的开始学习ASP.NET Core Web API和Vue,准备从前端到后端自己写一个小项目玩玩,毕竟代码这个东西,时间长了是会忘的.       

坦克大战系列(3.0版)

无论头上是怎样的天空,我准备承受任何风暴.--拜伦 本讲内容:坦克3.0版(面向对象的思想) 要求:画出我方坦克会动并且会发射子弹.画出敌人坦克 一.同一个包下建二个文件分别为:MyTankGame.Members(负责其它成员譬如:制造坦克.子弹等) MyTankGame类 /** * 功能:坦克游戏的3.0版本 * 1:画出坦克 * 2:实现我方坦克移动并且會發子彈,并 画出敌人的坦克 */ package a; import javax.swing.*; import java.awt.*

坦克大战系列(8.0版)

人生在勤,不索何获.--张衡 本讲内容:坦克大战8.0版(面向对象的思想) 一.解决:防止敌人坦克重叠运动 1.定义一个Vector容器,装所有敌人的坦克(为了得到所有坦克坐标) 2.定义一个方法getEts()可以得到敌人的坦克(为了得到所有坦克坐标) 3.在我的我的面板的构造方法调用getEts() 4.定义一个判断是否碰到了别的敌人的坦克的方法isTouchOtherEnemy() 5.在设置敌人坦克随机走动那调用isTouchOtherEnemy() 二.解决:我方坦克死亡(即隐身)后,