| QUOTE (geniusalz @ Dec 30 2003, 02:38 AM) |
| How far along are the negotiations for boost mode? Heard UX is getting it. |
| CODE |
| ;Tetris by geniusalz ;Beta, do not put up anywhere ;Change the path accordingly XMLOPEN pieces c:\pieces.xml OPENWRITE log c:\log.txt XMLCREATE counts Count XMLCREATE board Board XMLCREATE SET pieceExists 1 SET globalTop 100 SET globalLeft 200 SET curPiece 1 SET curState 1 SET curLeft 0 SET curTop 0 SET nextPiece 1 SET nextState 1 SET nextLeft 0 SET nextTop 0 SET changed 1 :Begin SET endTime $timer$ ADD endTime 1000 :BeginLoop IF# %pieceExists% == 0 GOSUB MakePiece IF# %changed% == 1 GOSUB CheckLine IF# %changed% == 1 GOSUB DrawBoard SETFUNC MSG_ID1 IQPeekMsgID IF %MSG_ID1% GOSUB ExecuteInput IF# %endTime% < $timer$ GOTO TimeUp GOTO BeginLoop :TimeUp GOSUB MoveDown GOTO Begin GOTO BeginLoop :MakePiece SET curPiece 1 SET curState 1 SET curLeft 0 SET curTop 0 SET nextPiece 1 SET nextState 1 SET nextLeft 0 SET nextTop 0 SET pieceExists 1 RETURN :MoveDown SET nextTop %curTop% ADD nextTop 1 SET nextPiece %curPiece% GOSUB CheckValidity IF# %isValid% == 1 GOTO Keep GOSUB FixPiece :Keep SET curTop %nextTop% SET changed 1 RETURN :ExecuteInput IQWaitMsg ANY SET nextTop %curTop% SET nextLeft %curLeft% SET nextState %curState% SET nextPiece %curPiece% IF %MSG_ID% == "UI_UP" GOTO ChangePiece IF %MSG_ID% == "UI_DN" GOTO MoveDn IF %MSG_ID% == "UI_LF" GOTO MoveLeft IF %MSG_ID% == "UI_RT" GOTO MoveRight IF %MSG_ID% == "UI_Select" GOTO SpinLeft BeginDraw Messagebox %MSG_ID% Delay 1 Enddraw GOTO Quit :MoveDn ADD nextTop 1 GOTO DontFix :MoveRight ADD nextLeft 1 GOTO DontFix :MoveLeft SUB nextLeft 1 GOTO DontFix :ChangePiece ADD nextPiece 1 IF# %nextPiece% > 7 GOTO FixPiec GOTO DontFix :FixPiec SUB nextPiece 7 GOTO DontFix :SpinLeft ADD nextState 1 IF# %nextState% > 4 GOTO Fix GOTO DontFix :Fix SUB nextState 4 :DontFix GOSUB CheckValidity IF# %isValid% == 1 GOTO KeepInput GOTO DiscardInput :KeepInput IF# %nextTop% == %curTop% GOTO DontResetTimer SET endTime $timer$ ADD endTime 1000 :DontResetTimer SET curLeft %nextLeft% SET curTop %nextTop% SET curState %nextState% SET curPiece %nextPiece% SET changed 1 :DiscardInput SET nextTop %curTop% SET nextLeft %curLeft% SET nextState %curState% SET nextPiece %curPiece% IQClear RETURN :DrawBoard BeginDraw SET leftVal %globalLeft% ADD leftVal 9 SET topVal %globalTop% ADD topVal 9 BOX %leftVal% %topVal% 101 201 0x000000 0x88FFFFFF FOR x = 1 to 11 FOR y = 1 to 21 XMLGetValue board toDraw !.%x%.%y% IF# %toDraw% == 1 GOTO DrawThis1 GOTO DontDraw1 :DrawThis1 SET xPos %x% MULT xPos 10 SET yPos %y% MULT yPos 10 ADD xPos %globalLeft% ADD yPos %globalTop% BOX %xPos% %yPos% 9 9 0xF2182228 0xF2182228 :DontDraw1 NEXT NEXT FOR y = 1 to 5 XMLGetValue pieces curRow !.piece%curPiece%.state%curState%.row%y% FOR x = 1 to 5 SET x2 %x% SUB x2 1 SETFUNC toDraw1 MID %x2% 1 %curRow% IF# %toDraw1% == 1 GOTO DrawThis2 GOTO DontDraw2 :DrawThis2 SET xPos %x% ADD xPos %curLeft% MULT xPos 10 ADD xPos %globalLeft% SET yPos %y% ADD yPos %curTop% MULT yPos 10 ADD yPos %globalTop% BOX %xPos% %yPos% 9 9 0xF2182228 0xF2182228 :DontDraw2 NEXT NEXT EndDraw SET changed 0 RETURN :CheckValidity SET isValid 1 FOR y = 1 to 5 XMLGetValue pieces curRow !.piece%nextPiece%.state%nextState%.row%y% FOR x = 1 to 5 SET x2 %x% SUB x2 1 SETFUNC toCheck4 MID %x2% 1 %curRow% IF# %toCheck4% == 1 GOTO CheckThis4 GOTO DontCheck4 :CheckThis4 SET xPos %x% ADD xPos %nextLeft% SET yPos %y% ADD yPos %nextTop% XMLGetValue board checkVal !.%xPos%.%yPos% 0 IF# %checkVal% == 1 GOTO ThisIsInvalid IF# %xPos% < 1 GOTO ThisIsInvalid IF# %yPos% < 1 GOTO ThisIsInvalid IF# %xPos% > 10 GOTO ThisIsInvalid IF# %yPos% > 20 GOTO ThisIsInvalid GOTO DontCheck4 :ThisIsInvalid SET isValid 0 :DontCheck4 NEXT NEXT RETURN :FixPiece FOR y = 1 to 5 XMLGetValue pieces curRow !.piece%curPiece%.state%curState%.row%y% FOR x = 1 to 5 SET x2 %x% SUB x2 1 SETFUNC toDraw3 MID %x2% 1 %curRow% IF# %toDraw3% == 1 GOTO DrawThis3 GOTO DontDraw3 :DrawThis3 SET xPos %x% ADD xPos %curLeft% SET yPos %y% ADD yPos %curTop% XMLSetValue board !.%xPos%.%yPos% 1 XMLGetValue counts TEMP !.%yPos% ADD TEMP 1 XMLSetValue counts !.%yPos% %TEMP% :DontDraw3 NEXT NEXT SET pieceExists 0 SET changed 1 RETURN :CheckLine FOR y = 1 to 21 XMLGetValue counts lineTotal !.%y% IF# %lineTotal% < 10 GOTO skipLine SET y2 %y% ADD y2 1 FOR z = %y% to 0 step -1 SET z2 %z% SUB z2 1 FOR x = 1 to 11 XMLGetValue board TEMP !.%x%.%z2% XMLSetValue board !.%x%.%z% %TEMP% NEXT XMLGetValue counts TEMP !.%z2% XMLSetValue counts !.%z% %TEMP% NEXT :skipLine NEXT SET changed 1 RETURN :Quit QUIT |
| CODE |
| QUOTE (geniusalz @ Dec 30 2003, 09:26 AM) | ||
| Tetris Beta 1 For any WIP user who wants to try it out Since theres no randomness, all pieces start off as a bar. You can press UP to change them. Left/right to move, A to rotate. tetris.xas
|
| QUOTE (geniusalz @ Dec 30 2003, 09:21 PM) |
| I think its pretty neat that MXM lets u write a game with gameplay identical to a commercial game for xbox. That, and I like doing stuff no one's done before. This is the first time a homebrew game has been written for a dashboard EDIT: Have you tried it out? Any thoughts? |
| CODE |
| BeginDraw LockRefresh blah blah blah EndDraw |
| CODE |
| ;Tetris by geniusalz ;Beta, do not redistribute ;Change the path accordingly XMLOPEN pieces c:pieces.xml XMLCREATE counts Count XMLCREATE board Board SET score 0 SET lineTotal 0 SET interval 1000 SET pieceExists 1 SET globalTop 100 SET globalLeft 200 SET curPiece 1 SET curState 1 SET curLeft 0 SET curTop 0 SET nextPiece 1 SET nextState 1 SET nextLeft 0 SET nextTop 0 SET changed 1 SET falling 0 :Begin SET endTime $timer$ ADD endTime %interval% :BeginLoop IF# %falling% == 1 GOTO TimeUp IF# %pieceExists% == 0 GOSUB MakePiece IF# %changed% == 1 GOSUB DrawBoard SETFUNC MSG_ID1 IQPeekMsgID IF %MSG_ID1% GOSUB ExecuteInput IF# %endTime% < $timer$ GOTO TimeUp GOTO BeginLoop :TimeUp GOSUB MoveDown GOTO Begin GOTO BeginLoop :MakePiece SETFUNC nextPiece RIGHT 3 $rand$ MOD nextPiece 7 ADD nextPiece 1 SET nextState 1 SET nextLeft 2 SET nextTop 0 GOSUB CheckValidity IF# %isValid% == 1 GOTO GetNewPiece GOSUB EndGame :GetNewPiece SET curPiece %nextPiece% SET curState 1 SET curLeft 2 SET curTop 0 SET pieceExists 1 RETURN :MoveDown SET nextTop %curTop% ADD nextTop 1 SET nextPiece %curPiece% GOSUB CheckValidity IF# %isValid% == 1 GOTO Keep GOSUB FixPiece :Keep SET curTop %nextTop% SET changed 1 RETURN :ExecuteInput IQWaitMsg ANY SET nextTop %curTop% SET nextLeft %curLeft% SET nextState %curState% SET nextPiece %curPiece% ; IF %MSG_ID% == "UI_UP" GOTO ChangePiece IF %MSG_ID% == "UI_DN" GOTO MoveDn IF %MSG_ID% == "UI_LF" GOTO MoveLeft IF %MSG_ID% == "UI_RT" GOTO MoveRight IF %MSG_ID% == "UI_Select" GOTO SpinLeft IF %MSG_ID% == "UI_Back" GOTO DropIt BeginDraw Messagebox "Paused $eol$Press Y to quit$eol$Anything else to continue" Enddraw IQWaitMsg ANY IF %MSG_ID% == "SYS_MENU" GOTO Quit GOTO DiscardInput :DropIt SET falling 1 GOTO DiscardInput :MoveDn ADD nextTop 1 GOTO DontFix :MoveRight ADD nextLeft 1 GOTO DontFix :MoveLeft SUB nextLeft 1 GOTO DontFix :ChangePiece ADD nextPiece 1 IF# %nextPiece% > 7 GOTO FixPiec GOTO DontFix :FixPiec SUB nextPiece 7 GOTO DontFix :SpinLeft ADD nextState 1 IF# %nextState% > 4 GOTO Fix GOTO DontFix :Fix SUB nextState 4 :DontFix GOSUB CheckValidity IF# %isValid% == 1 GOTO KeepInput GOTO DiscardInput :KeepInput IF# %nextTop% != %curTop% GOSUB ResetTimer SET curLeft %nextLeft% SET curTop %nextTop% SET curState %nextState% SET curPiece %nextPiece% SET changed 1 :DiscardInput SET nextTop %curTop% SET nextLeft %curLeft% SET nextState %curState% SET nextPiece %curPiece% RETURN :DrawBoard BeginDraw SET leftVal %globalLeft% ADD leftVal 9 SET topVal %globalTop% ADD topVal 9 BOX %leftVal% %topVal% 101 201 0xFF000000 0x88FFFFFF SUB topVal 24 BOX %leftVal% %topVal% 101 24 0xFF000000 0x88FFFFFF TEXT %leftVal% %topVal% LEFT " Tetris 1.0" ADD leftVal 50 ADD topVal 225 TEXT %leftVal% %topVal% CENTER "Score: %score%" ADD topVal 24 TEXT %leftVal% %topVal% CENTER "Lines: %lineTotal%" FOR x = 1 to 11 FOR y = 1 to 21 XMLGetValue board toDraw !.%x%.%y% IF# %toDraw% == 1 GOTO DrawThis1 GOTO DontDraw1 :DrawThis1 SET xPos %x% MULT xPos 10 SET yPos %y% MULT yPos 10 ADD xPos %globalLeft% ADD yPos %globalTop% BOX %xPos% %yPos% 9 9 0xF2182228 0xF2182228 :DontDraw1 NEXT NEXT FOR y = 1 to 5 XMLGetValue pieces curRow !.piece%curPiece%.state%curState%.row%y% FOR x = 1 to 5 SET x2 %x% SUB x2 1 SETFUNC toDraw1 MID %x2% 1 %curRow% IF# %toDraw1% == 1 GOTO DrawThis2 GOTO DontDraw2 :DrawThis2 SET xPos %x% ADD xPos %curLeft% MULT xPos 10 ADD xPos %globalLeft% SET yPos %y% ADD yPos %curTop% MULT yPos 10 ADD yPos %globalTop% BOX %xPos% %yPos% 9 9 0xF2182228 0xF2182228 :DontDraw2 NEXT NEXT SET changed 0 EndDraw RETURN :CheckValidity SET isValid 1 FOR y = 1 to 5 XMLGetValue pieces curRow !.piece%nextPiece%.state%nextState%.row%y% FOR x = 1 to 5 SET x2 %x% SUB x2 1 SETFUNC toCheck4 MID %x2% 1 %curRow% IF# %toCheck4% == 1 GOTO CheckThis4 GOTO DontCheck4 :CheckThis4 SET xPos %x% ADD xPos %nextLeft% SET yPos %y% ADD yPos %nextTop% XMLGetValue board checkVal !.%xPos%.%yPos% 0 IF# %checkVal% == 1 GOTO ThisIsInvalid IF# %xPos% < 1 GOTO ThisIsInvalid IF# %yPos% < 1 GOTO ThisIsInvalid IF# %xPos% > 10 GOTO ThisIsInvalid IF# %yPos% > 20 GOTO ThisIsInvalid GOTO DontCheck4 :ThisIsInvalid SET isValid 0 :DontCheck4 NEXT NEXT RETURN :FixPiece SET falling 0 FOR y = 1 to 5 XMLGetValue pieces curRow !.piece%curPiece%.state%curState%.row%y% FOR x = 1 to 5 SET x2 %x% SUB x2 1 SETFUNC toDraw3 MID %x2% 1 %curRow% IF# %toDraw3% == 1 GOTO DrawThis3 GOTO DontDraw3 :DrawThis3 SET xPos %x% ADD xPos %curLeft% SET yPos %y% ADD yPos %curTop% XMLSetValue board !.%xPos%.%yPos% 1 XMLGetValue counts TEMP !.%yPos% ADD TEMP 1 XMLSetValue counts !.%yPos% %TEMP% :DontDraw3 NEXT NEXT SET pieceExists 0 SET changed 1 GOSUB CheckLine RETURN :CheckLine SET lineCount 0 FOR y = 1 to 21 XMLGetValue counts lineTot !.%y% IF# %lineTot% < 10 GOTO SkipLine GOSUB ResetTimer ADD lineCount 1 SET y2 %y% ADD y2 1 FOR z = %y% to 0 STEP -1 SET z2 %z% SUB z2 1 FOR x = 1 to 11 XMLGetValue board TEMP !.%x%.%z2% XMLSetValue board !.%x%.%z% %TEMP% NEXT XMLGetValue counts TEMP !.%z2% XMLSetValue counts !.%z% %TEMP% NEXT :SkipLine NEXT IF# %lineCount% == 1 GOTO OneLine ;100 IF# %lineCount% == 2 GOTO TwoLines ;300 IF# %lineCount% == 3 GOTO ThreeLines ;600 IF# %lineCount% == 4 GOTO FourLines ;1000 GOTO NoLines :FourLines ADD lineTotal 1 ADD score 400 :ThreeLines ADD lineTotal 1 ADD score 300 :TwoLines ADD lineTotal 1 ADD score 200 :OneLine ADD lineTotal 1 ADD score 100 SET changed 1 IF# %lineTotal% > 120 GOTO Line5 IF# %lineTotal% > 80 GOTO Line4 IF# %lineTotal% > 50 GOTO Line3 IF# %lineTotal% > 30 GOTO Line2 IF# %lineTotal% > 10 GOTO Line1 GOTO NoLines :Line1 SET interval 800 GOTO NoLines :Line2 SET interval 600 GOTO NoLines :Line3 SET interval 400 GOTO NoLines :Line4 SET interval 200 GOTO NoLines :Line5 SET interval 100 :NoLines RETURN :ResetTimer SET endTime $timer$ ADD endTime %interval% RETURN :EndGame BeginDraw Messagebox "Game over. Your score was %score% with %lineTotal% lines." IQWaitMsg ANY Enddraw :Quit QUIT |
| CODE |
| CODE |
;Tetris by geniusalz ;Beta, do not redistribute ;Change the path accordingly XMLOPEN pieces pieces.xml XMLCREATE counts Count XMLCREATE board Board SET score 0 SET lineTotal 0 SET interval 1000 SET pieceExists 1 SET globalTop 100 SET globalLeft 200 SET curPiece 1 SET curState 1 SET curLeft 0 SET curTop 0 SET nextPiece 1 SET nextState 1 SET nextLeft 0 SET nextTop 0 SET changed 1 SET falling 0 :Begin SET endTime $timer$ ADD endTime %interval% :BeginLoop IF# %falling% == 1 GOTO TimeUp IF# %pieceExists% == 0 GOSUB MakePiece IF# %changed% == 1 GOSUB DrawBoard SETFUNC MSG_ID1 IQPeekMsgID IF %MSG_ID1% GOSUB ExecuteInput IF# %endTime% < $timer$ GOTO TimeUp GOTO BeginLoop :TimeUp GOSUB MoveDown GOTO Begin GOTO BeginLoop :MakePiece SETFUNC nextPiece RIGHT 3 $rand$ MOD nextPiece 7 ADD nextPiece 1 SET nextState 1 SET nextLeft 2 SET nextTop 0 GOSUB CheckValidity IF# %isValid% == 1 GOTO GetNewPiece GOSUB EndGame :GetNewPiece SET curPiece %nextPiece% SET curState 1 SET curLeft 2 SET curTop 0 SET pieceExists 1 RETURN :MoveDown SET nextTop %curTop% ADD nextTop 1 SET nextPiece %curPiece% GOSUB CheckValidity IF# %isValid% == 1 GOTO Keep GOSUB FixPiece :Keep SET curTop %nextTop% SET changed 1 RETURN :ExecuteInput IQWaitMsg ANY SET nextTop %curTop% SET nextLeft %curLeft% SET nextState %curState% SET nextPiece %curPiece% ; IF %MSG_ID% == "UI_UP" GOTO ChangePiece IF %MSG_ID% == "UI_DN" GOTO MoveDn IF %MSG_ID% == "UI_LF" GOTO MoveLeft IF %MSG_ID% == "UI_RT" GOTO MoveRight IF %MSG_ID% == "UI_Select" GOTO SpinLeft IF %MSG_ID% == "UI_Back" GOTO DropIt BeginDraw Messagebox "Paused $eol$Press Y to quit$eol$Anything else to continue" Enddraw IQWaitMsg ANY IF %MSG_ID% == "SYS_MENU" GOTO Quit GOTO DiscardInput :DropIt SET falling 1 GOTO DiscardInput :MoveDn ADD nextTop 1 GOTO DontFix :MoveRight ADD nextLeft 1 GOTO DontFix :MoveLeft SUB nextLeft 1 GOTO DontFix :ChangePiece ADD nextPiece 1 IF# %nextPiece% > 7 GOTO FixPiec GOTO DontFix :FixPiec SUB nextPiece 7 GOTO DontFix :SpinLeft ADD nextState 1 IF# %nextState% > 4 GOTO Fix GOTO DontFix :Fix SUB nextState 4 :DontFix GOSUB CheckValidity IF# %isValid% == 1 GOTO KeepInput GOTO DiscardInput :KeepInput IF# %nextTop% != %curTop% GOSUB ResetTimer SET curLeft %nextLeft% SET curTop %nextTop% SET curState %nextState% SET curPiece %nextPiece% SET changed 1 :DiscardInput SET nextTop %curTop% SET nextLeft %curLeft% SET nextState %curState% SET nextPiece %curPiece% RETURN :DrawBoard BeginDraw SET leftVal %globalLeft% ADD leftVal 9 SET topVal %globalTop% ADD topVal 9 BOX %leftVal% %topVal% 101 201 0xFF000000 0x88FFFFFF SUB topVal 24 BOX %leftVal% %topVal% 101 24 0xFF000000 0x88FFFFFF TEXT %leftVal% %topVal% LEFT " Tetris 1.0" ADD leftVal 50 ADD topVal 225 TEXT %leftVal% %topVal% CENTER "Score: %score%" ADD topVal 24 TEXT %leftVal% %topVal% CENTER "Lines: %lineTotal%" FOR x = 1 to 11 FOR y = 1 to 21 XMLGetValue board toDraw !.%x%.%y% IF# %toDraw% == 1 GOTO DrawThis1 GOTO DontDraw1 :DrawThis1 SET xPos %x% MULT xPos 10 SET yPos %y% MULT yPos 10 ADD xPos %globalLeft% ADD yPos %globalTop% BOX %xPos% %yPos% 9 9 0xFF1822FF 0xFF1822FF :DontDraw1 NEXT NEXT FOR y = 1 to 5 XMLGetValue pieces curRow !.piece%curPiece%.state%curState%.row%y% XMLGetValue pieces PieceColor !.piece%curPiece%.color FOR x = 1 to 5 SET x2 %x% SUB x2 1 SETFUNC toDraw1 MID %x2% 1 %curRow% IF# %toDraw1% == 1 GOTO DrawThis2 GOTO DontDraw2 :DrawThis2 SET xPos %x% ADD xPos %curLeft% MULT xPos 10 ADD xPos %globalLeft% SET yPos %y% ADD yPos %curTop% MULT yPos 10 ADD yPos %globalTop% BOX %xPos% %yPos% 9 9 %PieceColor% %PieceColor% '0xFF1822FF 0xFF1822FF %curPiece% :DontDraw2 NEXT NEXT SET changed 0 EndDraw RETURN :CheckValidity SET isValid 1 FOR y = 1 to 5 XMLGetValue pieces curRow !.piece%nextPiece%.state%nextState%.row%y% FOR x = 1 to 5 SET x2 %x% SUB x2 1 SETFUNC toCheck4 MID %x2% 1 %curRow% IF# %toCheck4% == 1 GOTO CheckThis4 GOTO DontCheck4 :CheckThis4 SET xPos %x% ADD xPos %nextLeft% SET yPos %y% ADD yPos %nextTop% XMLGetValue board checkVal !.%xPos%.%yPos% 0 IF# %checkVal% == 1 GOTO ThisIsInvalid IF# %xPos% < 1 GOTO ThisIsInvalid IF# %yPos% < 1 GOTO ThisIsInvalid IF# %xPos% > 10 GOTO ThisIsInvalid IF# %yPos% > 20 GOTO ThisIsInvalid GOTO DontCheck4 :ThisIsInvalid SET isValid 0 :DontCheck4 NEXT NEXT RETURN :FixPiece SET falling 0 FOR y = 1 to 5 XMLGetValue pieces curRow !.piece%curPiece%.state%curState%.row%y% FOR x = 1 to 5 SET x2 %x% SUB x2 1 SETFUNC toDraw3 MID %x2% 1 %curRow% IF# %toDraw3% == 1 GOTO DrawThis3 GOTO DontDraw3 :DrawThis3 SET xPos %x% ADD xPos %curLeft% SET yPos %y% ADD yPos %curTop% XMLSetValue board !.%xPos%.%yPos% 1 XMLGetValue counts TEMP !.%yPos% ADD TEMP 1 XMLSetValue counts !.%yPos% %TEMP% :DontDraw3 NEXT NEXT SET pieceExists 0 SET changed 1 GOSUB CheckLine RETURN :CheckLine SET lineCount 0 FOR y = 1 to 21 XMLGetValue counts lineTot !.%y% IF# %lineTot% < 10 GOTO SkipLine GOSUB ResetTimer ADD lineCount 1 SET y2 %y% ADD y2 1 FOR z = %y% to 0 STEP -1 SET z2 %z% SUB z2 1 FOR x = 1 to 11 XMLGetValue board TEMP !.%x%.%z2% XMLSetValue board !.%x%.%z% %TEMP% NEXT XMLGetValue counts TEMP !.%z2% XMLSetValue counts !.%z% %TEMP% NEXT :SkipLine NEXT IF# %lineCount% == 1 GOTO OneLine ;100 IF# %lineCount% == 2 GOTO TwoLines ;300 IF# %lineCount% == 3 GOTO ThreeLines ;600 IF# %lineCount% == 4 GOTO FourLines ;1000 GOTO NoLines :FourLines ADD lineTotal 1 ADD score 400 :ThreeLines ADD lineTotal 1 ADD score 300 :TwoLines ADD lineTotal 1 ADD score 200 :OneLine ADD lineTotal 1 ADD score 100 SET changed 1 IF# %lineTotal% > 120 GOTO Line5 IF# %lineTotal% > 80 GOTO Line4 IF# %lineTotal% > 50 GOTO Line3 IF# %lineTotal% > 30 GOTO Line2 IF# %lineTotal% > 10 GOTO Line1 GOTO NoLines :Line1 SET interval 800 GOTO NoLines :Line2 SET interval 600 GOTO NoLines :Line3 SET interval 400 GOTO NoLines :Line4 SET interval 200 GOTO NoLines :Line5 SET interval 100 :NoLines RETURN :ResetTimer SET endTime $timer$ ADD endTime %interval% RETURN :EndGame BeginDraw Messagebox "Game over. Your score was %score% with %lineTotal% lines." IQWaitMsg ANY Enddraw :Quit QUIT |



| QUOTE (geniusalz @ Jan 3 2004, 12:00 PM) |
| That would also add the ability to use arrays SET myItem%index% "aaa" SET blah %myItem[index]% <-- This statement couldn't be done before now. |
| QUOTE (BenJeremy @ Jan 3 2004, 02:15 PM) |
| Some stuff I may save for a follow-on to MXM - implementing it in a true tokenizing BASIC client. If the other dashbuilders would consider the module concept (using DLLs) and help out, I could create a nice unified BASIC module that would allow freely distributable apps for Xboxers! |
| QUOTE (geniusalz @ Jan 3 2004, 05:12 PM) | ||
I was going to suggest a tokenizer, and function calls with parameters and return values. I don't really get why you want to 'save' it for later, seeing how well actionscripting is progressing. You could even create a module to run actionscripts in other dashes, or even slowly add on to actionscripting to turn it into BASIC (it's similar enough already). |
| QUOTE (geniusalz @ Jan 3 2004, 07:54 PM) |
| And deceptively easier to code? Well, maybe you could expand the SET statement to allow expressions. SET y=(%x%+3)/2 As opposed to SET y=%x% ADD y 3 DIV y 2 You get my point. Similarly, allow expressions in brackets as parameters. Shouldn't be too hard to implement once the above is done. BOX (%x%*3) (%y%+2) 10 10 blah blah etc. |
| QUOTE (BenJeremy @ Jan 3 2004, 12:48 PM) |
| Well, I've added LINE (will be in next update) to the draw set, but image is a bit more complicated. I am also looking at a scheme where you can reference back to Draw List objects and manipulate them withouth having to redefine the draw list (handy for images, when sprites are working) |
| QUOTE (geniusalz @ Jan 3 2004, 09:58 PM) | ||
Some sort of ID? SETFUNC boxID BOX 1 1 100 100 SETPOS %boxID% 2 2 100 100 DESTROY %boxID% same with image |
| QUOTE (oswald @ Jan 7 2004, 05:01 AM) |
| the uninitiated would see this thread as BenJeremy tweaking MXM to run Tetris faster |
| CODE |
| BeginDraw UseCurrent Messagebox "Press Any Key Now" Enddraw :TOP SETFUNC MSG_ID1 IQPeekMsgID IF %MSG_ID1% GOTO BLAH GOTO TOP :BLAH SETFUNC MSG_ID2 IQGetMsgID ANY BeginDraw UseCurrent Messagebox "Func IQGetMsgID gives ... %MSG_ID2%" Enddraw Delay 4 BeginDraw UseCurrent Messagebox "Just MSG_ID ... %MSG_ID% ... this is blank" Enddraw Delay 4 QUIT |