basic游戏吧 关注:80贴子:644
  • 10回复贴,共1

QB井字棋老外写的例子,学MOUSE

只看楼主收藏回复

DECLARE FUNCTION XWin% (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER, l AS INTEGER)
DECLARE FUNCTION OWin% (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER, l AS INTEGER)
DECLARE SUB Winner (Lineup AS INTEGER)
DECLARE SUB ShowWin (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER)
DECLARE SUB GetUserSignal ()
DECLARE SUB EnableMouse (c%)
DECLARE SUB DrawSCREEN ()
DECLARE SUB xo (Row%, Col%, symbol%)
DIM SHARED False AS INTEGER, True AS INTEGER: True = NOT False
DIM SHARED SymbolBOX(6000) AS INTEGER '<---NOTE
DIM SHARED cH AS INTEGER: 'Cursor Position Horizontal
DIM SHARED cV AS INTEGER: 'Cursor Position Vertical
DIM SHARED click AS INTEGER: ' 0=no click, 1=left click, 2=right
' EnableMouse 1 = Turn cursor on, return coordinates
' EnableMouse 0 = Turn cursor off in order to draw stuff, etc.
DIM SHARED cC AS STRING: 'User pressed key
' GetUserSignal will set return cC or will return Click
DIM i AS INTEGER, j AS INTEGER, k AS INTEGER
DIM WhoWon AS INTEGER
DIM MadeAMove AS INTEGER, MovesMade AS INTEGER
' ----------------------------------------------------------
' Title Screen (Main Program)
' -----------------------------------------------------------
SCREEN 12
RANDOMIZE TIMER
DIM Command AS INTEGER, Hard AS INTEGER
GOSUB InitializeScreen
DO
DO: GetUserSignal: LOOP UNTIL click = 1
GOSUB FindClickedCommand
SELECT CASE Command
CASE 1:
Hard = False
WhoWon = 0
GOSUB PlayGame
GOSUB ShowWhoWon
GOSUB InitializeScreen
CASE 2:
Hard = True
WhoWon = 0
GOSUB PlayGame
GOSUB ShowWhoWon
GOSUB InitializeScreen
CASE 3:
GOSUB DoHelp
GOSUB InitializeScreen
CASE 4:
EXIT DO
END SELECT
LOOP
COLOR 7: CLS
SYSTEM
' ----------------------------------------------------------
' Game Screen
' -----------------------------------------------------------
DIM SHARED zX(9) AS INTEGER: ' Where all X's are placed
DIM SHARED zO(9) AS INTEGER: ' Where all O's are placed
DIM SHARED zE(9) AS INTEGER: ' Where empty squares are
DIM theRow AS INTEGER, theColumn AS INTEGER, theBox AS INTEGER
FindClickedPosition:
CONST Delta = 4
theRow = 0: theColumn = 0: theBox = 0
SELECT CASE cH
CASE IS < 170 + Delta: RETURN
CASE IS < 269 - Delta: theColumn = 1
CASE IS < 269 + Delta: RETURN
CASE IS < 368 - Delta: theColumn = 2
CASE IS < 368 + Delta: RETURN
CASE IS < 467 - Delta: theColumn = 3
CASE ELSE: RETURN
END SELECT
SELECT CASE cV
CASE IS < 91 + Delta: RETURN
CASE IS < 190 - Delta: theRow = 1
CASE IS < 190 + Delta: RETURN
CASE IS < 289 - Delta: theRow = 2
CASE IS < 289 + Delta: RETURN
CASE IS < 388 - Delta: theRow = 3
CASE ELSE: RETURN
END SELECT
theBox = (3 * (theRow - 1)) + theColumn
RETURN
' ----------------------------------------------------------
' Play Game
' -----------------------------------------------------------
PlayGame:
DrawSCREEN 'draw the screen and create X and O symbols.



IP属地:天津1楼2010-07-12 21:57回复
    额...这、、学mouse就不用了吧?目前16位的程序基本不太可能了、在OOP的浪潮下、Windows application已经主宰了一切、mouse已经不成为一个问题了、


    IP属地:浙江5楼2010-07-13 09:34
    回复
      呵呵,确实现在如果用VB等可视化开发软件来编程,MOUSE不成问题。可是在QB中能够使用MOUSE,绝对是一大进步,还是有其现实意义的。
      不过楼主,我用这个程序去QB里试了一下,QB提示“有未定义的过程”,执行不了……是不是还缺了一些代码呢?


      IP属地:广东6楼2010-07-13 12:05
      回复
        这个让我吐槽不能啊、、这...让我说什么好呢?学技术也不是这么学的、也不是说旧的就不用学、可是这个年代太久远了吧、DOS的8位、16位的时代、这个太远了、现在用WIN32 SDK函数、简单的5、6个函数就有个挺标准的窗口了、这鼠标...唉、、算了、、我吐槽不能...


        IP属地:浙江7楼2010-07-13 14:20
        回复
          呵呵,因为在QB里要用到MOUSE,必须要自己写初始化的语句,还要链接库才能达到,这可以锻炼使用QB进行底层编程的能力
          而WIN32 SDK函数只要会用就可以达到目的,不需要去写初始化语句,这就是它们之间的区别。


          IP属地:广东8楼2010-07-13 17:59
          回复
            回复:9楼
            呵呵,多谢楼主提醒,我该用QB64编译通过了,游戏效果很不错啊!
            回复:7楼
            我搞错了,如果实在以前的QB中确实需要写初始化语句,但是在QB64里面不用这么麻烦,也跟WIN32 SDK一样,能使用鼠标函数就行了


            IP属地:广东10楼2010-07-13 19:14
            回复
              各位同学,此程序要使用QB64才能编译通过~~


              IP属地:广东11楼2010-07-13 19:15
              回复
                回复:12楼
                嗯嗯,谢谢,我努力修改吧……


                IP属地:广东13楼2010-07-13 20:11
                回复
                  说真的、、你们有学C的潜质、、
                  像我这么笨的基本就没戏啦、、


                  IP属地:浙江14楼2010-07-15 10:00
                  回复
                    太恐怖了,这么多代码


                    IP属地:荷兰15楼2010-07-15 12:49
                    回复
                      回复:14楼
                      C我试过了完全没潜质


                      IP属地:广东16楼2010-07-15 13:01
                      回复