该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

;左移右移End键结束游戏

;编译环境 TASM3.0 编译成.com文件比较好!

sleep macro timeb;延时宏指令

push cx

mov cx, timeb

call waits

pop  cx

endm

cls macro ;清屏宏指令

push ax

push bx

push cx

push dx

mov ah, 06H

mov al, 0

mov ch, 0

mov cl,  0

mov dh, 30h

mov dl,  5fh

mov bh, 0fh

int 10H

pop dx

pop cx

pop bx

pop ax

endm

drawRect macro x, y, w, h, att;绘图宏指令

push ax

push bx

push cx

push dx

mov ah, 06h

mov ch,  y

mov cl,   x

Call SafeXY;保证坐标安全

mov dl,  cl

mov dh, ch

add  dl,   w

add  dh,  h

mov al,   dh

sub  al,   ch

mov bh, att

int 10H

pop dx

pop cx

pop bx

pop ax

endm;==========主程序开始===========

Code segment USE16

assume cs:code, ds:code

org 100H

start:

mov dl,  1;dl,dh寄存器作为全局坐标增量

mov dh, 1

for1: cls;所有操作全部在for1 循环里

push cx;双For绘制砖块

mov cx,  4

mov byte ptr[recy],  0

mov si, offset rec_array

rec1:

push cx

mov cx, 12

mov byte ptr[recx], 0

rec2:

cmp byte ptr[si], 0;判断是否已经被销毁

JZ go4;已经不存在了

drawRectrecx, recy, 6, 2, clr1;还存在

mov bh, byte ptr[ypos];判断小球的临时坐标

mov bl,  byte ptr[xpos]

cmp bh,  recy;

JG go4;是否进入砖块区

push ax

mov ah, 0

mov al,  recx

cmp bl,  al

JL te

add  al,  6

cmp bl, al

JG te;是否撞上砖块

mov  byte ptr[si],  0;将此坐标置为0

NOT dh;小球要反弹

te: pop   ax

go4:

add byte  ptr[recx],  6

add byte  ptr[clr1],  0fh

cmp byte ptr[clr1],  7fh

JL go3

mov byte ptr[clr1],  1fh

go3: inc si

loop rec2

pop   cx

add  byte ptr[recy],  3

loop rec1

pop   cx

IN AL, 60H;读取键盘操作左右

CMP AL, 79

jne ifL

jmp Exit0

ifL: cmp al, 75;操作挡板左右移动

jne ifR

cmp byte ptr[ballx], 6

JL go2

sub byte ptr[ballx], 6

ifR: cmp al, 77

jne go2

cmp byte ptr[ballx], 64

JG go2

add byte ptr[ballx], 6

go2: ;移动小球

add byte ptr [xpos], dl

add byte ptr [ypos], dh

drawRect   xpos,  ypos,  1, 1,  2eh

drawRect   ballx,  bally,  12,1, 3eh

sleep  60

push bx

mov bl,  byte ptr[xpos]

mov bh, byte ptr[ypos]

b1: cmp bl, 72;撞上右边界?

JL b2

NOT dl

b2: cmp bl,   1;撞上左边界?

JG b3

add byte ptr[xpos], 4

NOT dl

b3: cmp bh,  46;掉到下边界,程序结束!

JL b4

jmp Exit0

b4: cmp bh,  1;撞上顶?

JG b5

add byte ptr[ypos], 2

NOT dh

b5: push ax;判断小球是否撞到挡板

mov ah, 0

mov al,  bally

sub  al,  12

cmp bh, al

JL be

mov al,  ballx

cmp bl,  al

JL be

add  al,   6

cmp bl,  al

JG be

NOT dh

be:   pop ax

go1: pop   bx

jmp for1;返回for1

Exit0: mov ah, 4ch

int 21h

;===========延时子程序===========

waits proc near

w1: Wait

push cx

mov cx, 0ffh

w2: Wait

push cx

mov cx, 0fffh

w3: Wait

Loop w3

pop   cx

Loop w2

pop   cx

Loop w1

RET

waits endp

SafeXY proc near;保证坐标安全子程序

d0: cmp ch, 1

jg d1

mov ch, 1

d1: cmp cl,  1

jg d2

mov cl, 1

d2: cmp cl, 64

jl d3

mov cl, 64

d3: ret

SafeXY endp

;============数据段=============

rec_arraydb 4*12 dup(1)

recxdb2

recydb0

clr1db1fh

xpos db12

ypos db7

xddb2

yddb1

ballxdb32

ballydb44

code ends

end start

linux编写弹球游戏,汇编写的DOS弹球游戏相关推荐

  1. Linux编程——入门级Makefile文件编写

    前言 1.在Linux开发环境中,编写Makefile文件是一个必须的技能,虽然现在有好多IDE可以自动生成所需要的Makefile文件,但有时能看懂Makefile文件也是更好的了解项目的编译过程. ...

  2. Java黑皮书课后题第7章:***7.35(游戏:猜字词游戏)编写一个猜字词游戏,随机产生一个单词,当用户猜测正确后,正确的字母显示出来。当用户猜出一个单词,显示猜错的次数,并询问用户是否继续猜测

    ***7.35(游戏:猜字词游戏)编写一个猜字词游戏,随机产生一个单词,当用户猜测正确后,正确的字母显示出来.当用户猜出一个单词,显示猜错的次数,并询问用户是否继续猜测 题目 题目描述与运行示例 破题 ...

  3. Java黑皮书课后题第3章:*3.17(游戏:剪刀、石头、布)编写可以玩流行的剪刀-石头-布游戏的程序

    *3.17(游戏:剪刀.石头.布)编写可以玩流行的剪刀-石头-布游戏的程序 题目 题目概述 运行示例 ***特别注意*** 破题 代码 题目 题目概述 *3.17(游戏:剪刀.石头.布)编写可以玩流行 ...

  4. Linux平台Makefile文件的编写基础篇和GCC参数详解

    问:gcc中的-I.是什么意思....看到了有的是gcc -I. -I/usr/xxxxx..那个-I.是什么意思呢 最佳答案 答:-Ixxx 的意思是除了默认的头文件搜索路径(比如/usr/incl ...

  5. 【转】Linux下c++调用自己编写的matlab函数:通过mcc动态链接库.so实现

    转自:Linux下c++调用自己编写的matlab函数:通过mcc动态链接库.so实现_Jaster_wisdom的专栏-CSDN博客 之前在这里和这里调用了matlab自带的一些函数,是通过matl ...

  6. 编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,掷两枚骰子之后,计算点数之和。

    编写程序模拟掷骰子游戏.已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1.2.3.4.5.6个点,掷两枚骰子之后,计算点数之和.如果第一次掷的点数和为7或11,则游戏者获胜:如果第一次掷的点数 ...

  7. java语言开发手机游戏_手机上的JAVA游戏和JAVA软件,是电脑上的JAVA语言编写的吗?他们之间有什么联系...

    手机上的JAVA游戏和JAVA软件,是电脑上的JAVA语言编写的吗?他们之间有什么联系以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...

  8. linux的LCD的驱动编写

    Framebuffer设备 ​ Framebuffer 翻译过来就是帧缓冲,简称 fb,因 此大家在以后的 Linux 学习中见到"Framebuffer"或者"fb&q ...

  9. PLC也能制作小游戏----Codesys编写推箱子小游戏

    1.序言 前文已介绍,Codesys编程软件拥有的各种编译方式,以及强大的可视化功能,完全可以实现类似的小游戏程序编写,让疲惫的工控人员在调机的空闲之余可以休闲下,本文编写另一个小游戏,也是十几年前的 ...

  10. Java黑皮书课后题第6章:**6.30(游戏:双骰子)掷双骰子游戏是某场景中非常流行的骰子游戏。编写程序,玩这个游戏的变种

    6.30(游戏:双骰子)掷双骰子游戏是某场景中非常流行的骰子游戏.编写程序,玩这个游戏的变种 题目 题目描述 破题 代码 题目 题目描述 6.30(游戏:双骰子)掷双骰子游戏是某场境中非常流行的骰子游 ...

最新文章

  1. 【设计模式】前端控制器模式
  2. tc351i  发送短信息 代码
  3. SQL2008使用json.net实现XML与JSON互转
  4. ASP.NET Core 集成测试中结合 WebApplicationFactory 使用 SQLite 内存数据库
  5. 团队作业——项目Alpha版本发布
  6. 科研这条路:一位数学博士给本科生的建议
  7. IDEA Translation插件安装及设置鼠标悬浮提示的自动翻译
  8. Mac 使用常见问题汇集
  9. VMware Workstation安装虚拟机失败
  10. 《软件工程》课堂作业:返回一个整数数组中最大字数组的和
  11. 冲刺第五天 1.6 SUN
  12. 词汇的理解 —— 英译汉
  13. Linux使用CLASS_ATTR创建节点
  14. 浙江省智慧城市建设改变百姓生活
  15. import java.sql.date_java.sql.Date日期比较
  16. JAVA三大器之拦截器
  17. QT 菜单栏、工具栏和状态栏
  18. 邮件群发软件如何群发邮件,企业邮箱可以吗?
  19. matlab 贝叶斯网络工具箱的安装
  20. CSDN论坛如何查看我发布的帖子?

热门文章

  1. Jquery.ajax使用
  2. 【嵌入式09】STM32串口通信,发送Hello Windows示例
  3. ubuntu配置全局系统代理
  4. 获得代理ippython_Python自动获取代理IP
  5. 操作系统 进程调度实验报告
  6. 克鲁伊夫:巴萨孤独求败 无巨星照样演完美风暴(2009-11-26)
  7. 排名前十的天使投资机构
  8. 2017-9-13 NOIP模拟赛[xxy]
  9. ADO方法操作数据库
  10. 在你的 Android 手机上「云养猫」:Android 11 Beta 3 具透