求 用汇编语言编写的程序 小车运动

求 用汇编语言编写的程序 小车运动,第1张

data segment

car db 2,2,2,2,2,2,2,2,2,2

db 2,2,2,2,2,2,0,0,0,2

db 2,2,2,2,2,2,0,0,0,2

db 2,2,2,2,2,2,0,0,0,2

db 2,2,2,2,2,2,2,2,2,2

db 2,2,2,2,2,2,2,2,2,2

db 0,0,2,0,0,0,0,2,0,0

db 0,2,0,2,0,0,2,0,2,0

db 0,0,2,0,0,0,0,2,0,0

x dw 10

y dw 10

msg db 'car program finish!!$'

speed dw 5

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov ax,0a000h

mov es,ax

mov ax,13h

int 10h

call picture

ag: mov ah,7

int 21h

cmp al,'s'

jne ag

start1: in al,60h

cmp al,80h if release key

jae keyrelease

cmp al,2 1 key

jz upspeed

cmp al,3 2 key

jz downspeed

jmp keyrelease

upspeed:

mov si,speed

inc si

mov speed,si

jmp keyrelease

downspeed:

mov si,speed

dec si

mov speed,si

jmp keyrelease

keyrelease:

call clearpicture

mov si,speed

add si,x

mov x,si

call picture

call delay

mov si,x

cmp si,310

jc start1

mov ah,9

mov dx,offset msg

int 21h

mov ah,7

int 21h

mov ax,4c00h

int 21h

picture proc near

mov dx,y

mov bx,0

again: cmp dx,0

je over

add bx,320

dec dx

jmp again

over: mov dx,9

lea si,car

next1: mov cx,10

mov di,x

next: mov al,[si]

mov es:[bx+di],al

inc si

inc di

loop next

add bx,320

dec dx

jne next1

ret

picture endp

clearpicture proc near

mov dx,y

mov bx,0

again2: cmp dx,0

je over2

add bx,320

dec dx

jmp again2

over2: mov dx,9

next12: mov cx,10

mov di,x

next2: mov al,0

mov es:[bx+di],al

inc di

loop next2

add bx,320

dec dx

jne next12

ret

clearpicture endp

delay proc near

push bx

push cx

mov bx,1234

back:

mov cx,66

push ax

wait1:

in al,61h

and al,10h

cmp al,ah

je wait1

mov ah,al

loop wait1

pop ax

dec bx

jne back

pop cx

pop bx

ret

delay endp

code ends

end start

小车运动实验步骤如下:

1、把一端附有定滑轮的长木板平放在实验桌上,并使滑轮伸出桌面,把打点计时器固定在长木板上没有滑轮的一端,连接好电路。

2、把一条细绳拴在小车上,细绳跨过滑轮,并在细绳的另一端挂上合适的钩码,试放手后,小车能在长木板上平稳地加速滑行一段距离,把纸带穿过打点计时器,并把他的另一端固定在小车后面。

3、把小车停在靠近打点计时器处,先接通电源,再放开小车,让小车运动,打点计时器就在纸带上打下一系列的点,取下纸带,换上新纸带,重复实验三次。

4、取下纸带,从能看得清的某个点开始,数一数纸带上共有多少个点。如果共有n个点,点子的间隔数就为n-1个,用t=0.02(n-1)s计算出纸带的运动时间。

5、用刻度尺测量一下,打下这些点,纸带通过的距离s有多长。利用公式计算出纸带在这段时间内的平均速度。把测量和计算的结果填入表中。

6、在纸带上找出连续的6个点,分别标上记号A、B、C、D、E、F。用刻度尺测出两个相邻点间的距离s1、s2、s3、s4、s5把数据填入表中。根据这些数据,运用你学过的知识,判断纸带的运动是匀速运动还是变速运动,并把判断的结果和理由写清楚。

小程序就用小程序做法,画几个地图,自己下载也行,保存在一个文件夹里,你也可以把文件夹加壳,这个代码有点多,初学你就保存在bin目录一个文件夹就行了。

载如地图就是加载图片,图片放在pictrueBox中,pictrueBox尺寸设置为图片实际尺寸,图片实际尺寸画成一个关卡从出发点到终点全部画全了,小车也放在一个pictrueBox里面,背景抽成透明(实际上小车每一种状态都存放一个图片,当快截键或者 *** 作改变状态时就加载gif动画图片,你就看到小车象是在动)。

控制运动方向是个相对运动原理,地图图片象下移动top值按加速事件变化递增,小车图片左右移动。这样你就象是看到车子在想前走,一路披靡。

timer做计时器,加速的时候timer的intaver变化,车子和地图移动速度就会变化。

设置关卡,一个地图跑完你要继续下一个或者开始结束提示。

最后一个是最关键的要素,设置障碍物,设置路段坐标,哪是路哪是边界你要搞清楚,我们用XML或者数据库记录几个障碍物坐标就好了,路边界是有规律的,平均记录几个横向边距,通过横向边距给路边定宽度,你知道左边路边坐标,就知道路的边界。最精确的方法,是再覆盖一个透明图片,判断小车图片非透明部分路段图片。

其实一般我们都是导入模型用DirectX或者调用flash控制flash参数去做,但这样比上面我介绍的难度大。


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

原文地址: http://outofmemory.cn/yw/8168844.html

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

发表评论

登录后才能评论

评论列表(0条)

保存