感慨:
偶的坦克终于可以移动,可以发射子弹了~~
不过从昨天软件开发与实践的老师的角度去说~我这样做是不对的~开发一个程序之前需要做好构架,而我则是想到哪做哪..做错了再改!哈哈!..还有待学习..
代码:
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中,我们可以使用面向对象编程(OOP)来设计坦克类(Tank Class)。...
- `Bullet.java`: 子弹类,实现子弹的发射和移动。 - `Obstacle.java`: 障碍物类,可能包括固定和可破坏的类型。 - `Map.java`: 地图类,包含背景和障碍物布局。 - `InputHandler.java`: 输入处理器,处理用户输入以...
6. **游戏逻辑**:游戏的规则和行为,如子弹发射、坦克移动、得分计算、游戏结束条件等,都需要在代码中明确定义和实现。 通过研究这个坦克大战的源代码,开发者可以学习到如何用Java实现一个完整的、具有交互性的...
2. **zhuxunhuan.cpp**:可能代表“追踪旋转”或“主角循环”,这是游戏中控制主角坦克移动和旋转的核心逻辑,涉及到键盘输入处理、坐标系统和坦克运动状态的更新。 3. **zhidan.cpp**:可以推测为“子弹”模块,...
《基于C#的坦克大战游戏设计》是一款使用C#编程语言开发的电子游戏,它将经典的游戏模式——坦克大战——与现代编程技术相结合,为玩家提供了丰富的游戏体验。本项目涵盖了软件工程的多个方面,包括需求分析、设计、...
2. **JavaScript事件处理**: 游戏的交互性将依赖JavaScript,包括键盘事件监听(控制坦克移动)、鼠标点击事件(发射炮弹)等。 3. **游戏逻辑**: JavaScript代码会包含游戏规则的实现,如坦克移动、碰撞检测、得分...
位置计算涉及到坦克和子弹在游戏地图上的坐标移动,而碰撞检测则是判断子弹是否击中敌方坦克,这通常通过比较对象的边界矩形来实现。动画效果,比如坦克的移动和子弹的飞行轨迹,可以通过定时器和重绘机制来实现平滑...
Java的Swing和JavaFX库提供了用于创建用户界面和图形元素的工具,而Java的多线程特性则支持游戏中的并发处理,如坦克移动、碰撞检测和子弹发射等。 在坦克大战游戏的设计阶段,我们需要考虑以下几个核心组件: 1. ...
在这个项目中,开发者可能使用了这些库来绘制游戏场景、坦克、子弹等元素,并处理用户的键盘输入,实现坦克的移动和射击操作。同时,UI还需要实时更新,展示坦克的状态变化和游戏得分,这需要对事件监听和多线程有...
在这个项目中,JavaScript起着至关重要的作用,它负责处理游戏逻辑,如坦克移动、碰撞检测、子弹发射、得分计算、双人模式的同步等。 4. 双人模式:这个特性允许两个玩家在同一台设备上进行游戏,通过键盘的不同...
在这个项目中,我们将使用Python的基础知识和一些特定的游戏开发库,如Pygame,来构建游戏的框架、绘制游戏界面、处理用户输入和实现游戏逻辑。 首先,我们需要了解Pygame库。Pygame是Python的一个模块,专门用于2D...
2. 子弹轨迹:根据发射角度和速度,计算子弹的飞行路径,实现射击功能。 3. 碰撞检测:检测坦克、子弹与其他物体的碰撞,触发相应的游戏事件,如得分、损失生命等。 五、用户界面与交互 1. UI设计:index.html文件...
在本项目中,我们将探讨如何使用Python编程语言来实现一个经典的怀旧游戏——坦克大战。Python因其简洁易读的语法和丰富的库支持,成为初学者和专业开发者进行游戏开发的热门选择。通过这个项目,我们可以深入理解...
在Python编程领域,使用pygame模块可以轻松地创建出各种游戏,其中就包括了我们童年记忆中的经典游戏——坦克大战。pygame是Python的一个开源库,专为游戏开发设计,它提供了丰富的图形、声音和事件处理功能,使得...
7. 输入/输出(Input/Output):处理用户的键盘输入,如控制坦克移动和射击,以及游戏数据的保存和加载。 在源码中,你可能会看到以下技术的运用: - 面向对象编程:通过类和对象的封装、继承和多态性来组织代码。...
开发者可能还会用到Bitmap类来加载和处理图像资源,如游戏背景、坦克和子弹等。 4. **游戏逻辑与控制**:游戏的核心部分是游戏循环和事件处理。在Android中,这通常通过重写View或SurfaceView的onDraw()方法实现。...
在本次的C++游戏开发实战项目中,我们聚焦于一个经典的游戏——坦克大战。利用Qt框架,开发者可以构建出一款具有地图编辑、地图加载和保存功能的2D坦克游戏。下面我们将深入探讨该项目涉及的技术点和实现细节。 ...
编写射击逻辑,确定子弹发射角度和速度;并通过碰撞检测算法判断坦克和障碍物、子弹之间的交互。 四、输入处理 在Java中,键盘和鼠标事件的处理是通过监听器完成的。在坦克大战中,玩家通过键盘控制坦克移动和射击...
在Java Swing环境下,我们可以利用组件和事件监听来实现游戏的各个功能。 首先,我们需要创建游戏主窗口。使用JFrame作为游戏的容器,设置合适的大小和布局管理器,以便容纳游戏面板和其他元素。然后,创建一个...