码迷,mamicode.com
首页 > 编程语言 > 详细

新手小项目-java坦克大战

时间:2017-09-13 23:23:58      阅读:355      评论:0      收藏:0      [点我收藏+]

标签:phi   es2017   rac   graphic   图像   col   win   坦克大战   awt   

1.界面(图形化-前端部分)

  • 图形化用于交互,不管是用文字形式给用户选择,还是图形方式式的选择都是一种交互方式。在java中如果我们需要用到图形界面,就得想到GUI(Graphic user interface),那么我们需要用到什么,就直接去查看API(图形化显示能让我们做完项目后将结果看得舒服,而不是全部都是代码)
  • 要做GUI,就要想到java中的AWT(abstract windows toolkit),我们写图形化都需要用到这个类库。那为什么叫抽象窗口呢?因为java是跨平台的,java编写的界面源程序最后在计算机的实现可能由其他语言来最终完成。(AWT的初衷是与平台无关性,意思就是界面在任何操作系统上显示的长宽等格局都不会发生变化,保持审美。但是AWT在设计的时候用了关于操作系统的相关东西,没有做到完全的跨平台。AWT的运行没有用到java虚拟机。但是swing开发包用到了java虚拟机,它是完全跨平台的,所以现在都用swing,但是它的基础知识还是AWT)
  • 说到AWT我们就要理解component与container的的区别,见API。component是一切可显示的东西,container继承了component,所以container也是可显示的东西,但是container又有一个特性,可以包含一切可见的东西。所以container可以容纳conponent,也可以容纳它自己。(知道前端工程师知识的也应该能理解container与conponent制之间的区别)
  • 技术分享

     

  • 技术分享

2.编写窗口windows

  • 我们需要知道窗口显示了哪些东西。百度搜索这个小游戏,或者上小游戏网站玩几次就可以知道游戏规则了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 extends Frame {
     3   public void showFrame(){
     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 void main(String[] args){
    17    
    18 
    19     new TankGame().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 extends Frame {
     3   public void showFrame(){
     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 void main(String[] args){
    17    
    18 
    19     TankGame tankgame=new TankGame();
    20     tankgame.showFrame();
    21     TankGameTwo tankgametwo=new TankGameTwo();
    22     tankgametwo.showPanel();
    23     tankgame.add(tankgametwo);
    24     
    25 
    26   }
    27   
    28 
    29 }
    30  class TankGameTwo extends Panel{
    31    void showPanel(){
    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 extends Frame {
     3   public void showFrame(){
     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 void main(String[] args){
    18    
    19 
    20     TankGame tankgame=new TankGame();
    21     tankgame.showFrame();
    22     TankGameTwo tankgametwo=new TankGameTwo();
    23     tankgametwo.showPanel();
    24     tankgame.add(tankgametwo);
    25     
    26 
    27   }
    28   
    29 
    30 }
    31  class TankGameTwo extends Panel{
    32    void showPanel(){
    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)
  • 未完,,,,,,

3.窗口图片的处理(不是指窗口的背景)

  • 在界面上我们可以看出我们需要哪些图片,截图就行。

4.动画的处理(人工动画+自动动画)

5.动画的路径

新手小项目-java坦克大战

标签:phi   es2017   rac   graphic   图像   col   win   坦克大战   awt   

原文地址:http://www.cnblogs.com/S-Mustard/p/7515096.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!