要QBASIC GAME 快
猜拳游戏
3633 CLS
INPUT "How many?", cc
IF cc MOD 2 = 0 THEN 333
dd = cc \ 2 + 1
CLS
RANDOMIZE TIMER
PRINT "1:ROCK", "2:SISSOR", "3:PAPER"
DO UNTIL x = dd OR y = dd
i = INT(RND * 3)
SELECT CASE i
CASE 0
a$ = "r"
CASE 1
a$ = "s"
CASE 2
a$ = "p"
END SELECT
DO UNTIL c$ = "1" OR c$ = "2" OR c$ = "3"
c$ = INKEY$
LOOP
SELECT CASE c$
CASE "1"
b$ = "r"
CASE "2"
b$ = "s"
CASE "3"
b$ = "p"
END SELECT
c$ = ""
IF a$ = b$ THEN
PRINT "TIE",
ELSEIF a$ = "r" AND b$ = "s" THEN
PRINT "FAILED", : x = x + 1
ELSEIF a$ = "s" AND b$ = "p" THEN
PRINT "FAILED", : x = x + 1
ELSEIF a$ = "p" AND b$ = "r" THEN
PRINT "FAILED", : x = x + 1
ELSEIF (a$ = "r" AND b$ = "p") OR (a$ = "p" AND b$ = "s") OR (a$ = "s" AND b$ = "r") THEN
PRINT "WIN", : y = y + 1
END IF
IF a$ = "r" THEN
a$ = "ROCK"
ELSEIF a$ = "s" THEN
a$ = "SISSOR"
ELSE
a$ = "PAPER"
END IF
IF b$ = "r" THEN
b$ = "ROCK"
ELSEIF b$ = "s" THEN
b$ = "SISSOR"
ELSE
b$ = "PAPER"
END IF
PRINT "You:"; b$,
PRINT "Com:"; a$
LOOP
PRINT y; ":"; x
IF x = dd THEN
PRINT "You lose"
ELSEIF y = dd THEN
PRINT "You win"
END IF
PRINT TAB(30); :PRINT "Do you want to play again?"
PRINT TAB(30); : PRINT "1:YES 3:NO"
DO UNTIL g$ = "1" OR g$ = "3"
g$ = INKEY$
IF g$ = "1" THEN
g$ = "": x = 0: y = 0: GOTO 333
ELSEIF g$ = "3" THEN
END
END IF
LOOP
游戏程序未编过,但根据游戏的玩法来看,用QBASIC做游戏应遵循游戏细节,设置一些节点,运用顺序,循环,选择,键盘和鼠标事件的判断,陷阱,声音,画图和动画等QBASIC语句来实现的,在DOS系统下实现游戏过程.写QBAISC代码时也要重视程序的结构化原则,少用GOTO语句.
你想要多少赛车
DECLARE SUB showcar (row!, col!, c!)
DECLARE SUB Win ()
DECLARE SUB MoveZ ()
DECLARE SUB MoveM (md!)
DECLARE SUB Lose ()
CONST 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
TYPE cartype
row AS INTEGER
col AS INTEGER
END TYPE
DIM SHARED car(0 TO 3) AS cartype
DIM SHARED state(127) AS INTEGER
DIM SHARED BasePtr(0 TO 18) AS INTEGER
DIM SHARED shape(0 TO 4, 0 TO 2) AS INTEGER
DIM SHARED mrow, mcol, count
CLS
RANDOMIZE TIMER
REM
fk$ = "[][][][][][][][][][]"
COLOR 11
LOCATE R0 - 1, C0 + 1: PRINT CHR$(201) + STRING$(20, 205) + CHR$(187)
LOCATE R0, C0 + 1: PRINT CHR$(186); SPC(20); CHR$(186)
FOR row = 1 TO 18
LOCATE R0 + row, C0 + 1: PRINT CHR$(186); SPC(20); CHR$(186)
COLOR 0: LOCATE R0 + row, C0 + 2: PRINT fk$; : COLOR 11
NEXT row
LOCATE R0 + 19, C0 + 1: PRINT CHR$(200) + STRING$(20, 205) + CHR$(188)
ptr = 160 * (R0 - 1) + 2 * (C0 - 1) + 1
FOR row = 0 TO 18
BasePtr(row) = ptr
ptr = ptr + 160
NEXT row
DEF SEG = &HB800
FOR row = 1 TO 18 STEP 4
FOR dr = 0 TO 1
ptr = BasePtr(row + dr)
POKE ptr + 4, 10
POKE ptr + 6, 10
POKE ptr + 40, 10
POKE ptr + 42, 10
NEXT dr
NEXT row
DEF SEG
REM
FOR i = 0 TO 4
FOR j = 0 TO 2
READ x$
shape(i, j) = VAL(x$)
NEXT j
NEXT
DATA 0,0,0
DATA 0,1,0
DATA 1,1,1
DATA 0,1,0
DATA 1,0,1
mrow = 14: mcol = 3
CALL showcar(mrow, mcol, 12)
count = 0
score = 0
delaytime = .06
DO
IF count = 0 THEN score = score + 1
LOCATE 1, 1: PRINT score
IF score = 50 THEN Win
count = count + 1
IF count = S0 THEN
count = 0
car(0).col = INT(2 * RND) * 3 + 3
car(0).row = 0
FOR i = 3 TO 1 STEP -1
car(i).row = car(i - 1).row
car(i).col = car(i - 1).col
NEXT i
END IF
CALL MoveZ
tim = TIMER + delaytime
DO
k = INP(&H60)
IF k < 128 THEN
state(k) = 1
ELSE
state(k - 128) = 0
END IF
IF state(KeyLeft) THEN
CALL MoveM(Left)
state(KeyLeft) = 0
END IF
IF state(KeyRight) THEN
CALL MoveM(Right)
state(KeyRight) = 0
END IF
IF state(KeySpace) THEN
delaytime = .01
END IF
IF state(KeySpace) = 0 THEN
delaytime = .06
END IF
IF state(KeyEnter) THEN
DO WHILE INKEY$ = ""
LOOP
state(KeyEnter) = 0
END IF
IF state(KeyEsc) THEN
END
END IF
LOOP WHILE TIMER < tim
LOOP
END
SUB MoveM (md)
canmove = 1
IF mcol = 3 AND md = Left THEN EXIT SUB
IF mcol = 6 AND md = Right THEN EXIT SUB
FOR i = 3 TO 1
IF ABS(car(i).row - mrow) < 4 AND car(i).col <> mcol THEN
canmove = 0
EXIT FOR
END IF
NEXT i
IF canmove THEN
CALL showcar(mrow, mcol, 0)
mcol = mcol + 3 * md
CALL showcar(mrow, mcol, 12)
END IF
END SUB
SUB MoveZ
FOR i = 1 TO 3
car(i).row = count + S0 * (i - 1)
zrow = car(i).row: zcol = car(i).col
CALL showcar(zrow, zcol, 10)
IF ABS(car(i).row - mrow) < 4 AND car(i).col = mcol THEN Lose
NEXT i
REM
DEF SEG = &HB800
ptr = BasePtr(4): x = PEEK(ptr + 4)
ptr = BasePtr(0): POKE ptr + 4, x
FOR row = 18 TO 1 STEP -1
ptr = BasePtr(row - 1)
x = PEEK(ptr + 4)
ptr = BasePtr(row)
POKE ptr + 4, x
POKE ptr + 6, x
POKE ptr + 40, x
POKE ptr + 42, x
NEXT row
DEF SEG
END SUB
SUB showcar (row, col, c)
st = 0: en = 4
IF col <> 3 AND col <> 6 THEN EXIT SUB
IF row = mrow AND col = mcol THEN
st = 1
ELSE
IF row < 1 THEN st = 1 - row
IF row > 14 THEN en = 18 - row
IF st > en THEN EXIT SUB
END IF
DEF SEG = &HB800
FOR i = st TO en
ptr = BasePtr(row + i) + 4 * col
FOR j = 0 TO 2
POKE ptr + 4 * j, c * shape(i, j)
POKE ptr + 4 * j + 2, c * shape(i, j)
NEXT j
NEXT i
DEF SEG
END SUB
SUB Win
LOCATE 23, 1: PRINT "Win"
END
END SUB
SUB Lose
LOCATE 23, 1: PRINT "Lose"
END
END SUB
射击
DECLARE SUB zidan ()
DECLARE SUB mubiao ()
DECLARE SUB lose ()
DECLARE SUB win ()
DIM SHARED room(0 TO 24, 0 TO 15)
COMMON SHARED x0
gun = 7: x0 = 20
RANDOMIZE TIMER
VIEW PRINT 1 TO 25: CLS '初始化边界
LOCATE 1, x0 + 1: PRINT CHR$(201); STRING$(30, 205); CHR$(187)
FOR i = 2 TO 24
LOCATE i, x0 + 1: PRINT CHR$(186); SPC(30); CHR$(186)
NEXT i
DEF SEG = &HB800
POKE 24 * 160 + 2 * x0, 200
FOR j = 2 TO 60 STEP 2
POKE 24 * 160 + 2 * x0 + j, 205
NEXT j
POKE 24 * 160 + 2 * x0 + 62, 188
COLOR 9
LOCATE 24, x0 + 2 * gun: PRINT "[]"
DO
CALL mubiao '目标下移
FOR j = 1 TO 15
IF room(0, j) = 24 THEN
CALL lose
END IF
NEXT j
mubiaotime = TIMER + 1.5
DO
zidantime = TIMER + .01
DO
key$ = INKEY$
LOOP UNTIL TIMER > zidantime OR key$ <> ""
COLOR 9
SELECT CASE key$
CASE CHR$(0) + CHR$(75) '按键 左
LOCATE 24, x0 + 2 * gun: PRINT " "
gun = gun - 1: IF gun = 0 THEN gun = 1
LOCATE 24, x0 + 2 * gun: PRINT "[]"
CASE CHR$(0) + CHR$(77) '按键 右
LOCATE 24, x0 + 2 * gun: PRINT " "
gun = gun + 1: IF gun = 16 THEN gun = 15
LOCATE 24, x0 + 2 * gun: PRINT "[]"
CASE " " '按键 空格
room(24, 0) = gun
CASE CHR$(13) '按键 回车:暂停
DO WHILE INKEY$ = ""
LOOP
CASE CHR$(27) '按键 ESCape :退出
COLOR 7
END
END SELECT
COLOR 7
CALL zidan
LOOP UNTIL TIMER > mubiaotime
LOOP
SUB lose
END
END SUB
SUB mubiao
COLOR 10
FOR j = 1 TO 15
room(1, j) = 1: room(0, j) = room(0, j) + 1
'LOCATE 24, 1: PRINT "room(0,"; j; ")="; room(0, j)
NEXT j
FOR k = 1 TO 5
r = INT(RND * 15 + 1)
room(1, r) = 0
NEXT k
FOR i = 23 TO 2 STEP -1
FOR j = 1 TO 15
room(i, j) = room(i - 1, j)
IF room(i, j) = 1 THEN cc$ = "[]" ELSE cc$ = " "
LOCATE i, x0 + 2 * j: PRINT cc$
NEXT j
NEXT i
FOR j = 1 TO 15
FOR i = 24 TO 2 STEP -1
IF room(i, j) = 0 THEN
room(0, j) = room(0, j) - 1
ELSE
EXIT FOR
END IF
NEXT i
NEXT j
COLOR 7
DO '清空按键
key$ = INKEY$
LOOP UNTIL key$ = ""
END SUB
SUB zidan
COLOR 12
FOR i = 2 TO 23
IF room(i, 0) <> 0 THEN
LOCATE i, x0 + 2 * room(i, 0): PRINT " "
END IF
room(i, 0) = room(i + 1, 0)
NEXT i
FOR i = 2 TO 23
IF room(i, 0) > 0 THEN
IF room(i, room(i, 0)) = 0 THEN
LOCATE i, x0 + 2 * room(i, 0): PRINT "[]"
ELSE
LOCATE i, x0 + 2 * room(i, 0): PRINT " "
room(i, room(i, 0)) = 0
room(i, 0) = 0
END IF
END IF
NEXT i
room(24, 0) = 0
COLOR 7
DO '清空按键
key$ = INKEY$
LOOP UNTIL key$ = ""
END SUB
抽奖小游戏:
CLS
DIM a(30)
wer = 0
wert = 0
RANDOMIZE TIMER
a$ = "("
b$ = ")"
c$ = "["
d$ = "]"
FOR y = 1 TO 5
js = 0
p = 5000
CLS
FOR i = 1 TO 30
PRINT i,
a(i) = 0
NEXT i
FOR u = 1 TO 50
q = INT(RND * 29) + 1
PRINT "p="; p
PRINT "tom=";
INPUT a
PRINT "sha zi=";
INPUT b
CLS
PRINT "round: "; y
FOR i = 1 TO 30
IF a(i) = 1 THEN
PRINT a$; i; b$,
END IF
IF a(i) = 2 THEN
PRINT c$; i; d$,
END IF
IF a = i AND a(i) = 0 THEN
a(i) = 1
x = i
PRINT a$; x; b$,
END IF
IF b = i AND a(i) = 0 THEN
a(i) = 2
g = i
PRINT c$; g; d$,
END IF
IF i <> b AND i <> a AND a(i) = 0 THEN
PRINT i,
END IF
NEXT i
FOR i = 1 TO 30
IF i = q THEN
IF a(i) = 1 THEN
PRINT "jiang shi "; q;
PRINT "tom"; "win"; p;
INPUT "go on "; qpo$
wer = wer + p
js = 1
END IF
END IF
IF i = q THEN
IF a(i) = 2 THEN
PRINT "jiang shi "; q
PRINT "sha zi "; "win"; ; p
INPUT "go on "; q$
wert = wert + p
js = 1
END IF
END IF
NEXT i
IF js = 1 THEN
EXIT FOR
ELSE
p = p + 5000
PRINT "jiang shi"; " "; q
END IF
NEXT u
NEXT y
PRINT "tom "; wer
PRINT "sha zi "; wert
END
yum
糜林倍顺: 你想要多少赛车DECLARE SUB showcar (row!, col!, c!)DECLARE SUB Win ()DECLARE SUB MoveZ ()DECLARE SUB MoveM (md!)DECLARE SUB Lose ()CONST R0 = 3, C0 = 30, S0 = 12CONST Left = -1, Right = 1CONST KeyUp ...
武义县18447862754: 我很喜欢电脑,可是哪方面适合我? - ?
糜林倍顺: 首先你应该去学学QBASIC,这是编程的入门语言,很简单,就算你不学编程,学这个对你也很有好处的.你应该是喜欢软件都于硬件吧,那么你可以学点绘图的,比如3DMAX、FLASH、PHOTOSHOP,要学这些的话,建议你还是补一下英语...
武义县18447862754: 游戏开发的入门? - ?
糜林倍顺: 汤姆·霍尔的“快速”成为游戏开发者的秘诀 “离子风暴”开发公司的奠基人之一汤姆·霍尔先生在网上发表了一篇有趣的文章,披露了快速成为游戏开发者的“成功秘诀”.唉,世上哪有那么便宜的事呢?...
武义县18447862754: 如何将用qbasic语言编好的程序编译成可执行文件 - ?
糜林倍顺: 可以,QB3.0以上(不是QBASIC而是QuickBASIC)都能把源代码编译为可执行文件.在RUN菜单里面有一个make .EXE选项,然后选择以“stand-alone”方式,就可以生成可独立运...
武义县18447862754: 什么是编程?怎么编程? - ?
糜林倍顺: 简单的说,编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机虽然功能十分强大.可以供你上网、打游戏、管理公司人事关系等等,但是没有程序,它就等于是...
武义县18447862754: 用QBASIC编程超级素数 - ?
糜林倍顺: 10: for i=100 to 999for j=2 to sqr(i) if i mod j=0 then goto 10 next j for a=1 to n i=i\10 for b=2 to sqr(i) if i mod b=0 then goto 10 next b next a print i next i
武义县18447862754: 告诉我戴尔win7如何打开QBASIC程序??
糜林倍顺: 那是你电脑win7的版本和你的程序不兼容啊,检查你的程序需要看是在32位win7还是64位win7下才能用户,要找适合你程序版本的系统
武义县18447862754: qbasic每行列5个程序 - ?
糜林倍顺: 和Quick BASIC类似而又不同于微软其他BASIC的早期实现版本的是,QBASIC是一种结构化的编程语言.和GW-BASIC相比,QBASIC的主要改进是: 扩充了变量和常量的类型 变量名长度:40个字符 增加了长整型、定长字符型变量 可定...
武义县18447862754: QBASIC中运行程序的方法有哪几种?在程序窗口中输入程序然后运 ?
糜林倍顺: 1 按F5可运行. 2 用鼠标点击菜单RUN,在下拉菜单中选START可运行. 3 用鼠标点击菜单RUN,在下拉菜单中选RESTART可运行.
武义县18447862754: QBASIC他的优点是什么? ?
糜林倍顺: QBASIC采用先进的解释方式,速度更快,是一种会话式的语言,编写的程序可以立即运行并得到结果[3]