想要QBASIC游戏快点
赛车
声明SUB showcar (row!,col!,c!)
声明子成功()
声明SUB MoveZ()
声明子MoveM (md!)
声明SUB Lose()
常数R0 = 3,C0 = 30,S0 = 12
CONST Left = -1,Right = 1
CONST KeyUp = 72,KeyDown = 80,KeyLeft = 75,KeyRight = 77
CONST KeySpace = 57,KeyEnter = 28,KeyEsc = 1
铅字
作为整数的行
列为整数
结束类型
将共享汽车(0到3)显示为汽车类型
DIM共享状态(127)为整数
DIM共享BasePtr(0到18)为整数
将共享形状(0到4,0到2)显示为整数
DIM共享mrow、mcol、count
CLS
随机化计时器
识别内存(recognition memory)
fk$ = "[][][][][][]"
颜色11
找到C0的R0-1:PRINT CHR $(201)+STRING $(20,205) + CHR$(187)
定位R0,C0 + 1:打印CHR $(186);SPC(20);加拿大元(186)
对于行= 1到18
定位R0 + row,C0+1:PRINT CHR $(186);SPC(20);加拿大元(186)
颜色0:定位R0 +行,C0 + 2:打印fk $;:颜色11
下一排
找到R0 + 19,C0 + 1:打印CHR$(200) +字符串$(20,205) + CHR$(188)
ptr = 160 *(R0-1)+2 *(C0-1)+1
对于行= 0到18
BasePtr(row) = ptr
ptr = ptr + 160
下一排
DEF SEG = & ampHB800
对于row = 1到18步骤4
对于dr = 0到1
ptr = BasePtr(row + dr)
戳ptr + 4,10
戳ptr + 6,10
戳ptr + 40,10
戳ptr + 42,10
下一个博士
下一排
定义分段
识别内存(recognition memory)
对于i = 0到4
对于j = 0到2
阅读x美元
shape(i,j) = VAL(x$)
下一个j
然后
数据0,0,0
数据0,1,0
数据1,1,1
数据0,1,0
数据1,0,1
mrow = 14: mcol = 3
致电showcar(mrow,mcol,12)
计数= 0
分数= 0
延迟时间= .06
防御命令(Defense Order)
如果count = 0,则score = score + 1
找到1,1:打印分数
如果得分= 50,则获胜
计数=计数+ 1
如果count = S0,则
计数= 0
汽车(0)。col = INT(2 * RND) * 3 + 3
汽车(0)。row = 0
对于i = 3到1步进-1
汽车(我)。row =汽车(识别号1)。排
汽车(我)。col =汽车(识别号1)。山口
接下来我
如果…就会结束
打电话给MoveZ
tim = TIMER + delaytime
防御命令(Defense Order)
k = INP(& amp;H60)
如果k & lt那么128
状态(k) = 1
其他
状态(k - 128) = 0
如果…就会结束
如果状态(左键)则
呼叫MoveM(左)
状态(左击键)= 0
如果…就会结束
IF state(右键)然后
呼叫MoveM(右)
state(KeyRight) = 0
如果…就会结束
IF state(KeySpace)然后
延迟时间= .01
如果…就会结束
如果状态(密钥空间)= 0,则
延迟时间= .06
如果…就会结束
如果状态(按键输入)则
边做边INKEY$ = " "
环
状态(键盘输入)= 0
如果…就会结束
IF状态(KeyEsc)然后
结束
如果…就会结束
定时器& lt定时(timing的缩写)
环
结束
子运动(md)
canmove = 1
如果mcol = 3且md = Left,则退出SUB
如果mcol = 6且md = Right,则退出SUB
对于i = 3到1
如果ABS(汽车(一)。row-mrow)& lt;4和汽车(一)。col & lt& gt那么mcol
canmove = 0
为...退出
如果…就会结束
接下来我
如果可以的话
调用showcar(mrow,mcol,0)
mcol = mcol + 3 * md
致电showcar(mrow,mcol,12)
如果…就会结束
末端接头
子移动z
对于i = 1到3
汽车(我)。row = count + S0 * (i - 1)
zrow = car(i)。row: zcol = car(i)。山口
致电showcar(zrow,zcol,10)
如果ABS(汽车(一)。row-mrow)& lt;4和汽车(一)。然后输了
接下来我
识别内存(recognition memory)
DEF SEG = & ampHB800
ptr = BasePtr(4): x = PEEK(ptr + 4)
ptr = BasePtr(0):戳ptr + 4,x
对于row = 18到1的步长-1
ptr = BasePtr(row - 1)
x = PEEK(ptr + 4)
ptr = BasePtr(row)
戳ptr + 4,x
戳ptr + 6,x
戳ptr + 40,x
戳ptr + 42,x
下一排
定义分段
末端接头
子展示车(世界其他地区,列,c)
st = 0: en = 4
如果col & lt& gt3和col & lt& gt6然后退出短节
如果row = mrow且col = mcol,则
st = 1
其他
如果行& lt1,则st = 1 -行
IF row & gt14则en = 18 -行
如果st & gt然后退出短节
如果…就会结束
DEF SEG = & ampHB800
因为i = st TO en
ptr = BasePtr(row + i) + 4 * col
对于j = 0到2
戳ptr + 4 * j,c * shape(i,j)
戳ptr + 4 * j + 2,c * shape(i,j)
下一个j
接下来我
定义分段
末端接头
子赢
找到23,1:打印“Win”
结束
末端接头
次级损失
定位23,1:打印“丢失”
结束
末端接头
拍摄
声明SUB zidan()
声明子目标()
声明SUB lose()
声明子成功()
DIM共享房间(0到24,0到15)
公共共享x0
枪= 7: x0 = 20
随机化计时器
0到25: CLS的初始化边界。
定位1,x0 + 1:打印CHR $(201);STRING$(30,205);加拿大元(187)
对于i = 2到24
定位I,x0 + 1:打印CHR $(186);SPC(30);加拿大元(186)
接下来我
DEF SEG = & ampHB800
戳24 * 160 + 2 * x0,200
对于j = 2至60,步骤2
戳24 * 160 + 2 * x0 + j,205
下一个j
戳24 * 160 + 2 * x0 + 62,188
颜色9
定位24,x0 + 2 *枪:打印“]”
防御命令(Defense Order)
叫穆彪‘目标下移’。
对于j = 1到15
如果房间(0,j) = 24,则
呼输
如果…就会结束
下一个j
mubiaotime = TIMER + 1.5
防御命令(Defense Order)
zidantime = TIMER + .01
防御命令(Defense Order)
key$ = INKEY$
循环直到TIMER & gtzidantime或key $ & lt& gt""
颜色9
选择案例关键字$
“案例费用(0)+费用(75)”按钮左侧
定位24,x0 + 2 *枪:打印" "
gun = gun - 1:如果gun = 0,则gun = 1
定位24,x0 + 2 *枪:打印“]”
CASE CHR$(0)+CHR$(77)' key right
定位24,x0 + 2 *枪:打印" "
gun = gun + 1:如果gun = 16,则gun = 15
定位24,x0 + 2 *枪:打印“]”
CASE“”键空间
房间(24,0) =枪
CASE CHR$(13)'按回车键:暂停。
边做边INKEY$ = " "
环
CASE CHR$(27)'键退出:退出。
颜色7
结束
结束选择
颜色7
打电话给紫丹
循环直到TIMER & gt目标时间
环
次级损失
结束
末端接头
子目标
颜色10
对于j = 1到15
房间(1,j) = 1:房间(0,j) =房间(0,j) + 1
定位24,1:打印“room(0,”;j;")=";房间(0,j)
下一个j
对于k = 1到5
r = INT(RND * 15 + 1)
房间(1,r) = 0
下一个k
对于i = 23到2步-1
对于j = 1到15
房间(I,j) =房间(i - 1,j)
如果room(i,j) = 1,则cc$ = "[]"否则cc$ = " "
定位I,x0 + 2 * j:打印cc$
下一个j
接下来我
对于j = 1到15
对于i = 24到2步-1
如果room(i,j) = 0,则
房间(0,j) =房间(0,j) - 1
其他
为...退出
如果…就会结束
接下来我
下一个j
颜色7
“清除”按钮
key$ = INKEY$
循环直到键$ = " "
末端接头
苏子丹
颜色12
对于i = 2到23
IF room(i,0)& lt;& gt那么0
定位I,x0 + 2 * room(i,0): PRINT " "
如果…就会结束
房间(I,0) =房间(i + 1,0)
接下来我
对于i = 2到23
如果room(i,0)>那么0
如果房间(I,房间(I,0)) = 0,则
定位I,x0 + 2 *房间(I,0):打印“[]”
其他
定位I,x0 + 2 * room(i,0): PRINT " "
room(i,room(i,0)) = 0
room(i,0) = 0
如果…就会结束
如果…就会结束
接下来我
room(24,0) = 0
颜色7
“清除”按钮
key$ = INKEY$
循环直到键$ = " "
末端接头