`

坦克游戏——实现坦克的移动和子弹的发射

阅读更多

感慨:

偶的坦克终于可以移动,可以发射子弹了~~

不过从昨天软件开发与实践的老师的角度去说~我这样做是不对的~开发一个程序之前需要做好构架,而我则是想到哪做哪..做错了再改!哈哈!..还有待学习..

代码:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class YouXi extends JFrame
{
 Container c;
 Draw_table d_table;  //中间的画板
 Mypanel panel_east;  //右边的面板
 private static Icon[] faces;
 YouXi()
 {
  super("傻瓜坦克                                                                        版权所有:久城");
  c = getContentPane();
  c.setLayout(new BorderLayout());
  panel_east = new Mypanel();
  panel_east.setLayout(new GridLayout(6,1,20,20));
  
  faces= new Icon[]{new ImageIcon("d:\11.jpg","")};
  JButton button1 = new JButton("重新开始");
  JButton button2 = new JButton(new String ("傻瓜坦克"),new ImageIcon(getClass().getResource("11.jpg")));
  JTextField text1 = new JTextField("realsmy");
  JTextField text2 = new JTextField("0");
  JLabel lb1 = new JLabel("玩  家");
  JLabel lb2 = new JLabel("杀人数");
  text1.setEditable(false);
  text2.setEditable(false);
  panel_east.add(button2);
  panel_east.add(lb1);
  panel_east.add(text1);
  panel_east.add(lb2);
  panel_east.add(text2);
  panel_east.add(button1);
  //添加键盘监听,不知道加到哪好,随表找个按钮加上去了哈哈!
  button2.addKeyListener(new KeyAdapter()
   {
        public void keyPressed(KeyEvent e)
    {
      if(e.getKeyCode()==KeyEvent.VK_ENTER)
      {  
       if(d_table.fangxiang == 1)
       {
       d_table.zx = d_table.x+50;
       d_table.zy = d_table.y+10;
       d_table.key_fangxiang = 1;
       }
       if(d_table.fangxiang == 2)
       {
       d_table.zx = d_table.x+10;
       d_table.zy = d_table.y+50;
       d_table.key_fangxiang = 2;
       }
       if(d_table.fangxiang == 3)
       {
       d_table.zx = d_table.x-10;
       d_table.zy = d_table.y+10;
       d_table.key_fangxiang = 3;
       }
       if(d_table.fangxiang == 4)
       {
       d_table.zx = d_table.x+10;
       d_table.zy = d_table.y-10;
       d_table.key_fangxiang = 4;
       }
       d_table.key = true;
      }
      if(e.getKeyCode()==KeyEvent.VK_UP){
      d_table.y-=10;
      d_table.fangxiang = 4;
      }
      if(e.getKeyCode()==KeyEvent.VK_DOWN){
      d_table.y += 10;
      d_table.fangxiang = 2;
      }
      if(e.getKeyCode()==KeyEvent.VK_LEFT){
      d_table.x -= 10;
      d_table.fangxiang = 3;
      }
      if(e.getKeyCode()==KeyEvent.VK_RIGHT){
      d_table.x +=10;
      d_table.fangxiang = 1;
      }

     }
   }
    );
  d_table = new Draw_table();
  d_table.setBackground(Color.red);
  c.add(panel_east,BorderLayout.EAST);
  c.add(d_table,BorderLayout.CENTER);
  setSize(600,600);
  setLocation(200,100);
  setVisible(true);
 }

 public static void main(String args[])
 {
  YouXi yx = new YouXi();
  yx.setDefaultCloseOperation(EXIT_ON_CLOSE);
 }
}

//定义画板类
class Draw_table extends Canvas// implements runnable
{
 static boolean key = false;
 static int x=20,y=20;        //坦克坐标
 static int zx,zy;            //子弹起点坐标
 static int fangxiang = 1;        //定义车头方向
 static int key_fangxiang = 1;  //定义子弹方向
 int k = 1;
 public void paint(Graphics g)
 {
  if(fangxiang == 1)
  {
   g.setColor(Color.black);
   g.fillRect(x,y,50,30);   //车身
   g.fillRect(x+50,y+10,10,10);//车头=子弹
   g.setColor(Color.blue);
   g.fillOval(x+15,y+5,20,20);
  }
  if(fangxiang == 2)
  {
   g.setColor(Color.black);
   g.fillRect(x,y,30,50);   //车身
   g.fillRect(x+10,y+50,10,10);//车头=子弹
   g.setColor(Color.blue);
   g.fillOval(x+5,y+15,20,20);
  }
  if(fangxiang == 3)
  {
   g.setColor(Color.black);
   g.fillRect(x,y,50,30);   //车身
   g.fillRect(x-10,y+10,10,10);//车头=子弹
   g.setColor(Color.blue);
   g.fillOval(x+15,y+5,20,20);
  }
  if(fangxiang == 4)
  {
   g.setColor(Color.black);
   g.fillRect(x,y,30,50);   //车身
   g.fillRect(x+10,y-10,10,10);//车头=子弹
   g.setColor(Color.blue);
   g.fillOval(x+5,y+15,20,20);
  }
  if(k==1)
  {
   try{Thread.sleep(200);}catch(Exception e){}
  }
   if(key == true)
   {
    //new Thread(new draw_table()).start();
    //key = false;
    //new Zidan_thread().start();
    k = 0;
    zidan();
   }
   repaint();
 }
 public void zidan()
 {
  Graphics g = getGraphics();
  g.setColor(Color.yellow);
  g.fillRect(zx, zy, 10, 10);
  if(key_fangxiang == 1)
  {
   zx+=10;
  }
  if(key_fangxiang == 2)
  {
   zy+=10;
  }
  if(key_fangxiang == 3)
  {
   zx-=10;
  }
  if(key_fangxiang == 4)
  {
   zy-=10;
  }
  try{Thread.sleep(200);}catch(Exception e){}
 }
 //public void run()
 //{
 // zidan();
 //}
}
//面板类定义
class Mypanel extends JPanel
{
 public Insets insets()
 {
  return new Insets(60,10,200,10);
 }
}

分享到:
评论

相关推荐

    java小游戏——坦克大战 tank.zip

    游戏中,玩家需灵活操作,发射子弹,上下左右移动,以消灭所有敌方坦克为目标,从而获得胜利。 首先,游戏的核心是坦克的移动和射击机制。在Java中,我们可以使用面向对象编程(OOP)来设计坦克类(Tank Class)。...

    坦克大战游戏代码——成功版

    - `Bullet.java`: 子弹类,实现子弹的发射和移动。 - `Obstacle.java`: 障碍物类,可能包括固定和可破坏的类型。 - `Map.java`: 地图类,包含背景和障碍物布局。 - `InputHandler.java`: 输入处理器,处理用户输入以...

    JAVA——坦克大战.rar

    6. **游戏逻辑**:游戏的规则和行为,如子弹发射、坦克移动、得分计算、游戏结束条件等,都需要在代码中明确定义和实现。 通过研究这个坦克大战的源代码,开发者可以学习到如何用Java实现一个完整的、具有交互性的...

    C语言实例开发源码——c语言坦克游戏源代码.zip

    2. **zhuxunhuan.cpp**:可能代表“追踪旋转”或“主角循环”,这是游戏中控制主角坦克移动和旋转的核心逻辑,涉及到键盘输入处理、坐标系统和坦克运动状态的更新。 3. **zhidan.cpp**:可以推测为“子弹”模块,...

    基于c#的坦克大战游戏设计

    《基于C#的坦克大战游戏设计》是一款使用C#编程语言开发的电子游戏,它将经典的游戏模式——坦克大战——与现代编程技术相结合,为玩家提供了丰富的游戏体验。本项目涵盖了软件工程的多个方面,包括需求分析、设计、...

    网页模板——基于HTML5实现的坦克大战单机游戏源码.zip

    2. **JavaScript事件处理**: 游戏的交互性将依赖JavaScript,包括键盘事件监听(控制坦克移动)、鼠标点击事件(发射炮弹)等。 3. **游戏逻辑**: JavaScript代码会包含游戏规则的实现,如坦克移动、碰撞检测、得分...

    坦克大战----j2se

    位置计算涉及到坦克和子弹在游戏地图上的坐标移动,而碰撞检测则是判断子弹是否击中敌方坦克,这通常通过比较对象的边界矩形来实现。动画效果,比如坦克的移动和子弹的飞行轨迹,可以通过定时器和重绘机制来实现平滑...

    基于Java的坦克大战游戏的设计与实现(源码+lun文).rar

    Java的Swing和JavaFX库提供了用于创建用户界面和图形元素的工具,而Java的多线程特性则支持游戏中的并发处理,如坦克移动、碰撞检测和子弹发射等。 在坦克大战游戏的设计阶段,我们需要考虑以下几个核心组件: 1. ...

    Java实现坦克大战游戏.zip

    在这个项目中,开发者可能使用了这些库来绘制游戏场景、坦克、子弹等元素,并处理用户的键盘输入,实现坦克的移动和射击操作。同时,UI还需要实时更新,展示坦克的状态变化和游戏得分,这需要对事件监听和多线程有...

    基于HTML+CSS+JavaScript实现的小霸王坦克游戏源码,支持双人模式

    在这个项目中,JavaScript起着至关重要的作用,它负责处理游戏逻辑,如坦克移动、碰撞检测、子弹发射、得分计算、双人模式的同步等。 4. 双人模式:这个特性允许两个玩家在同一台设备上进行游戏,通过键盘的不同...

    坦克大战.zip_Python游戏_castvm4_python_坦克大战_坦克大战gif

    在这个项目中,我们将使用Python的基础知识和一些特定的游戏开发库,如Pygame,来构建游戏的框架、绘制游戏界面、处理用户输入和实现游戏逻辑。 首先,我们需要了解Pygame库。Pygame是Python的一个模块,专门用于2D...

    js坦克游戏

    2. 子弹轨迹:根据发射角度和速度,计算子弹的飞行路径,实现射击功能。 3. 碰撞检测:检测坦克、子弹与其他物体的碰撞,触发相应的游戏事件,如得分、损失生命等。 五、用户界面与交互 1. UI设计:index.html文件...

    游戏开发-基于Python实现的怀旧游戏之坦克大战.zip

    在本项目中,我们将探讨如何使用Python编程语言来实现一个经典的怀旧游戏——坦克大战。Python因其简洁易读的语法和丰富的库支持,成为初学者和专业开发者进行游戏开发的热门选择。通过这个项目,我们可以深入理解...

    坦克大战.zip

    在Python编程领域,使用pygame模块可以轻松地创建出各种游戏,其中就包括了我们童年记忆中的经典游戏——坦克大战。pygame是Python的一个开源库,专为游戏开发设计,它提供了丰富的图形、声音和事件处理功能,使得...

    经典坦克大战游戏源码,VC++编写

    7. 输入/输出(Input/Output):处理用户的键盘输入,如控制坦克移动和射击,以及游戏数据的保存和加载。 在源码中,你可能会看到以下技术的运用: - 面向对象编程:通过类和对象的封装、继承和多态性来组织代码。...

    安卓Android源码——纯java编写2d坦克小游戏.zip

    开发者可能还会用到Bitmap类来加载和处理图像资源,如游戏背景、坦克和子弹等。 4. **游戏逻辑与控制**:游戏的核心部分是游戏循环和事件处理。在Android中,这通常通过重写View或SurfaceView的onDraw()方法实现。...

    C++(qt)游戏实战项目:坦克大战(源代码)

    在本次的C++游戏开发实战项目中,我们聚焦于一个经典的游戏——坦克大战。利用Qt框架,开发者可以构建出一款具有地图编辑、地图加载和保存功能的2D坦克游戏。下面我们将深入探讨该项目涉及的技术点和实现细节。 ...

    java写的坦克大战(坦克大战单机版)

    编写射击逻辑,确定子弹发射角度和速度;并通过碰撞检测算法判断坦克和障碍物、子弹之间的交互。 四、输入处理 在Java中,键盘和鼠标事件的处理是通过监听器完成的。在坦克大战中,玩家通过键盘控制坦克移动和射击...

    java模拟坦克大战小游戏

    在Java Swing环境下,我们可以利用组件和事件监听来实现游戏的各个功能。 首先,我们需要创建游戏主窗口。使用JFrame作为游戏的容器,设置合适的大小和布局管理器,以便容纳游戏面板和其他元素。然后,创建一个...

Global site tag (gtag.js) - Google Analytics