Snake: Difference between revisions

Content deleted Content added
Mr Dalien (talk | contribs)
Mr Dalien (talk | contribs)
Line 21: Line 21:
/* Implementing this task in Hopper-FLOW-MATIC++ */
/* Implementing this task in Hopper-FLOW-MATIC++ */
/* The snake must catch a bite before time runs out, which decreases by
/* The snake must catch a bite before time runs out, which decreases by
10 points every 500 milliseconds.
10 points every 800 milliseconds.
The remaining time will be added to your total score. */
The remaining time will be added to your total score. */


Line 42: Line 42:
SET( TIME, 100 )
SET( TIME, 100 )
LET( Size := MUL(w,h) )
LET( Size := MUL(w,h) )
SET( TLimit := 0.05 )
SET( TLimit := 100 )
VOID( big number, numL1, numL2, numL3 )
VOID( big number, numL1, numL2, numL3 )
GOSUB( set score )
GOSUB( set score )
Line 55: Line 55:
TIC( T )
TIC( T )
WHILE( NOT (quit) )
WHILE( NOT (quit) )
GOSUB( show )
DEVIATE-IF( TLimit ~= TPlay ){
WHEN( KEY-PRESSED? ){
GOSUB( show )
SCAN-CODE( C )
WHEN( KEY-PRESSED? ){
SWITCH( C )
SCAN-CODE( C )
CASE( K_UP ) { dir = N, EXIT }
SWITCH( C )
CASE( K_RIGHT ){ dir = E, EXIT }
CASE( K_UP ) { dir = N, EXIT }
CASE( K_DOWN ) { dir = S, EXIT }
CASE( K_RIGHT ){ dir = E, EXIT }
CASE( K_LEFT ) { dir = W, EXIT }
CASE( K_DOWN ) { dir = S, EXIT }
CASE( K_ESC ) { quit = 1, EXIT }
CASE( K_LEFT ) { dir = W, EXIT }
CASE( 32 ) { PAUSE, EXIT }
CASE( K_ESC ) { quit = 1, EXIT }
SWEND
CASE( 32 ) { PAUSE, EXIT }
SWEND
}
GOSUB( step )
}
}
GOSUB( step )
DEVIATE-IF( 800 ~= T ) {
SLEEP( TLimit ) // beware, this approach
TIME-=10, CLAMP(0,100,TIME)
{TIME, 12, 52} GOSUB( put time )
// is not suitable for anything but toy projects like this
DEVIATE-IF( 500 ~= T ) {
TIME-=10, CLAMP(0,100,TIME)
{TIME, 12, 52} GOSUB( put time )
}
}
WEND
WEND
Line 189: Line 189:
{SCORE, 4, 52} GOSUB( put score )
{SCORE, 4, 52} GOSUB( put score )
LET( TIME := 100 )
LET( TIME := 100 )
++counter, COND( GT?( counter, 3 ) )
++counter, COND( GT?( counter, 5 ) )
LET( TLimit := SUB( TLimit,0.01 ))
LET( TLimit := SUB( TLimit,5 ))
CLAMP(30,100,TLimit)
LET( counter := 0 )
LET( counter := 0 )
CEND
CEND