VB设计坦克大战。

VB设计坦克大战。,第1张

要求如下~~~~

实现基本要求代码: 100行 主要涉及: 基本控件及算法

基本要求

要求使用面向对象和结构化程序设计的编程思路

能通过键盘W(上)、S(下)、A(左)、D(右)移动坦克

可以通过上述按键随时改变坦克的方向。

炮身和炮筒分别为标签控件

当坦克移动到窗体边框时停止前进,但能改变方向。

按键J时可以按炮筒方向发射炮d(炮d为标签控件)。

增加不固定障碍物。

可发射连续炮d。

用户可自行设置按键。

增加坦克移动速度等级。

坦克使用其他控件

其它创新(有一定难度,实现代码在30行以上)

设计方法和基本原理

1.问题描述

坦克由两个控件构成label1作为坦克的主体部分,label2作为炮管。在一个矩形区域内可以通过键盘控制坦克向上下左右移动,当移动到边界后就不再移动但可以变换方向继续移动。通过键盘控制可发炮。

2.问题的解决方案

①设计程序界面

因为用的全是基本控件,界面设计没有什么难度,照样子拼就可以了。

②编写代码

代码包括事件处理过程和功能函数,还有必要的声明。变量声明部分声明本程序所需要的变量和数组。

事件处理包括下面的主要事件:

Form_Load()

作一些初始化的工作。

Sub Form_KeyPress(KeyAscii As Integer)

坦克的移动通过窗体的keypress事件接受键盘按键,w键控制坦克向上,s键控制坦克向下,a键控制坦克向左,d键控制坦克向右。

炮d的发射由键盘事件控制,单击j键发射炮d。利用timer控件控制炮d延直线移动(改变炮d的top和left属性),当炮d击中边缘后消失。

Sub Timer1_Timer()

炮d的运动是由timer控件控制,发炮时启动timer事件。

四、主要技术问题的描述

本题中的难点并不在于界面设计,只需要放几个标签和一个时钟控件就可以了。

1. 坦克的移动

每当触发keypress事件后改变坦克的组成部分label1和label2的top和left属性,注意当坦克改变方向时,label1控件和label2控件的相对位置会改变。

2.炮d的移动

每当利用keypress事件触发坦克的发炮,首先判断是否炮d在运行当中,如果运行当中则不进行响应。炮d的运动是由timer控件控制,发炮时启动timer事件。

问题补充:如果有发我邮箱里,告诉我你的ID,给你分。

给链结的一律无效。

邮箱:[email protected]

利用vb控件做个坦克大战类的游戏即可,炮d和坦克都用控件实现就行。唯一难点是控制控件移动以及炮d击中目标的碰撞检测判断。给你一个简单实现代码

这是一种碰撞检测方法,下述属于简化的矩形碰撞检测,若是需要复杂碰撞可以用一个数组来记录大量需要碰撞检测的物体

image1里读入坦克的图片

image2里读入地雷的图片

然后用下面代码即可实现

Private

Sub

Form_KeyPress(KeyAscii

As

Integer)

'按键盘A和D键控制猫图片image1左右移动

If

KeyAscii

=

97

Then

Image1.Left

=

Image1.Left

-

10

If

KeyAscii

=

100

Then

Image1.Left

=

Image1.Left

+

10

'如果坦克图片与地雷图片相遇则提示碰撞到了

If

Image1.Left

+

Image1.Width

>

Image2.Left

Then

If

Image1.Left

<

Image2.Left

+

Image2.Width

Then

If

Image1.Top

+

Image1.Height

>

Image2.Top

Then

If

Image1.Top

<

Image2.Top

+

Image2.Height

Then

MsgBox

"坦克碰到地雷,已经被炸毁了"

End

If

End

If

End

If

End

If

End

Sub

用if语句来控制。

如果 坦克的位置等于窗口的大小 if tanke.left=form.weigth.

那么 then

坦克停止 tankerun=false;tankerun是你自己写的一个控制坦克运动状态的函数

我建议你用timer来控制,timer=false,坦克就不跑了

d出对话框提示已到最右边。 messagebox(“坦克已到最右边”)

我是学Java的。VB的代码写不来,所以上面的代码你多包涵。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11463215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存