InicioInfoSnake II del Nokia 1100 con un bug - La famosa viborita

Snake II del Nokia 1100 con un bug - La famosa viborita

Info10/23/2008

La historia de la viborita o Snake (popularmente conocido y mas aun luego de la aparicion del Nokia 1100) es bastante interesante.

El juego aparecio en la decada del 70 donde el juego cobro popularidad y nunca se dejo de jugar. El juego consistia en una linea plana que iba creciendo en longitud conforme se iba "comiendo" los items. Luego aparecieron MILES de modificaciones de todo tipo, incluso aparecio Snake 3D que se distribuia con el telefono Nokia 6131.



Toda la historia comienza con Blockade , producido por Gremlin en 1976. La primera "viborita" que se programo en una computadora se llamaba WORM y salio a la luz en 1978 programado por P. Trefonas para la microcomputadora TRS-80 .



Año a año la viborita fue ganando popularidad hasta que llego QBasic. Este se distribuia con una version del adictivo juego llamada Nibbles (mas abajo les dejo el codigo). Desde ese momento se afianzo principalmente en el ambito de los programadores y poco a poco se fue metiendo en la cultura de todos.




http://www.youtube.com/watch?v=fZF6tnrfAX0




Su historia en los telefonos se hizo prospera con Nokia.

La primera aparicion la hizo en el Nokia 5110 y era solamente un cuadrado sin forma. Solamente para telefonos monocromos.
Luego salio la version Snake II para el Nokia 3310 (solamente para telefonos monocromos). Aqui ya se veia una patron con forma de viborita. Luego aparecio en una larga lista de telefonos incluido el Nokia 1100.
Al tiempo salio Snake Xenzia. Para el Nokia 1600 y 1112.
Snake EX aparecio en telefonos a color. El nokia 6260 la tenia de fabrica.
Snake EX2 aparecio con la serie S-40 de Nokia.
Snakes 3D aparecio en N-Gage producida por IOMO. Permitia el modo multiplayer y venia preinstalada en toda la serie N de nokia.
Snakes III que esta re groso esta disponible en Nokia 3250, 5310 y 5610.
Snakes Subsonic salio el 22 de Mayo de 2008 para la nueva gama de telefonos Nokia.


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Bueno, la verdad que todo lo que puse arriba era solamente para comentar un BUG que tiene el Snake del Nokia 1100 pero no queria que sea tan pobre jajaja. Hace muuuucho tiempo jugando me di cuenta del bug. La cosa es que el otro dia encontre mi Nokia 1100 tirado por ahi y recorde el bug y me gustaria compartirlo con ustedes.

Este bug sirve para juntar la cantidad de puntos que deseen. Hay que hacer lo siguiente.

Comenzar un juego nuevo (ejemplo: Clasico) en el nivel de dificultad que uno desee. Jugar un buen rato y sumar algunos puntos. Llegara un momento que no puedes mas y tendras que chocar indefectiblemente, en ese momento el programa hace titilar a la viborita unas 4 o 5 veces y te da el puntaje que hiciste y te dice si es un record. Aqui esta la parte importante. APENAS CHOQUES... cuando la viborita todavia esta titilando, debes apretar el boton C. Eso te mandara a un menu donde puedes jugar de nuevo, continuar, etc... presiona de nuevo la tecla C y elige el modo CAMPAÑA y comienza un nuevo juego. Apenas comiences el juego no hagas nada, no comas nada, no muevas nada, NO HAGAS NADA DE NADA. Presiona el boton C nuevamente y vuelve al modo clasico y presiona en CONTINUAR. Cuando hagas eso veras que la viborita esta chiquitita de nuevo pero el puntaje que tenias cuando chocaste sigue ahi, asi que es cuestion de seguir jugando y seguir acumulando puntos.

Este truquito lo pueden hacer MILES de veces. Asi tengo en mi celular un recor de 48.083 puntos con la viborita en modo Clasico.

ACLARACION: Este truquito solamente sirve en los primeros modelos de Nokia 1100. En los que son Gris con negro y tienen la pantalla Verde. Si intentas hacerlo en los que tienen la pantalla blanca o en los Nokia 1100b que tenian carcaza blanca y gris no te va a funcionar.


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Bueno y como prometi aqui les dejo el codigo del Nibbles.bas para que puedan jugar en su compu...

'
' Q B a s i c N i b b l e s
'
' Copyright (C) Microsoft Corporation 1990
'
' Nibbles is a game for one or two players. Navigate your snakes
' around the game board trying to eat up numbers while avoiding
' running into walls or other snakes. The more numbers you eat up,
' the more points you gain and the longer your snake becomes.
'
' To run this game, press Shift+F5.
'
' To exit QBasic, press Alt, F, X.
'
' To get help on a BASIC keyword, move the cursor to the keyword and press
' F1 or click the right mouse button.
'

'Set default data type to integer for faster game play
DEFINT A-Z

'User-defined TYPEs
TYPE snakeBody
row AS INTEGER
col AS INTEGER
END TYPE

'This type defines the player's snake
TYPE snaketype
head AS INTEGER
length AS INTEGER
row AS INTEGER
col AS INTEGER
direction AS INTEGER
lives AS INTEGER
score AS INTEGER
scolor AS INTEGER
alive AS INTEGER
END TYPE

'This type is used to represent the playing screen in memory
'It is used to simulate graphics in text mode, and has some interesting,
'and slightly advanced methods to increasing the speed of operation.
'Instead of the normal 80x25 text graphics using chr$(219) "Û", we will be
'using chr$(220)"Ü" and chr$(223) "ß" and chr$(219) "Û" to mimic an 80x50
'pixel screen.
'Check out sub-programs SET and POINTISTHERE to see how this is implemented
'feel free to copy these (as well as arenaType and the DIM ARENA stmt and the
'initialization code in the DrawScreen subprogram) and use them in your own
'programs
TYPE arenaType
realRow AS INTEGER 'Maps the 80x50 point into the real 80x25
acolor AS INTEGER 'Stores the current color of the point
sister AS INTEGER 'Each char has 2 points in it. .SISTER is
END TYPE '-1 if sister point is above, +1 if below

'Sub Declarations
DECLARE SUB SpacePause (text$)
DECLARE SUB PrintScore (NumPlayers%, score1%, score2%, lives1%, lives2%)
DECLARE SUB Intro ()
DECLARE SUB GetInputs (NumPlayers, speed, diff$, monitor$)
DECLARE SUB DrawScreen ()
DECLARE SUB PlayNibbles (NumPlayers, speed, diff$)
DECLARE SUB Set (row, col, acolor)
DECLARE SUB Center (row, text$)
DECLARE SUB DoIntro ()
DECLARE SUB Initialize ()
DECLARE SUB SparklePause ()
DECLARE SUB Level (WhatToDO, sammy() AS snaketype)
DECLARE SUB InitColors ()
DECLARE SUB EraseSnake (snake() AS ANY, snakeBod() AS ANY, snakeNum%)
DECLARE FUNCTION StillWantsToPlay ()
DECLARE FUNCTION PointIsThere (row, col, backColor)

'Constants
CONST TRUE = -1
CONST FALSE = NOT TRUE
CONST MAXSNAKELENGTH = 1000
CONST STARTOVER = 1 ' Parameters to 'Level' SUB
CONST SAMELEVEL = 2
CONST NEXTLEVEL = 3

'Global Variables
DIM SHARED arena(1 TO 50, 1 TO 80) AS arenaType
DIM SHARED curLevel, colorTable(10)

RANDOMIZE TIMER
GOSUB ClearKeyLocks
Intro
GetInputs NumPlayers, speed, diff$, monitor$
GOSUB SetColors
DrawScreen

DO
PlayNibbles NumPlayers, speed, diff$
LOOP WHILE StillWantsToPlay

GOSUB RestoreKeyLocks
COLOR 15, 0
CLS
END

ClearKeyLocks:
DEF SEG = 0 ' Turn off CapLock, NumLock and ScrollLock
KeyFlags = PEEK(1047)
POKE 1047, &H0
DEF SEG
RETURN

RestoreKeyLocks:
DEF SEG = 0 ' Restore CapLock, NumLock and ScrollLock states
POKE 1047, KeyFlags
DEF SEG
RETURN

SetColors:
IF monitor$ = "M" THEN
RESTORE mono
ELSE
RESTORE normal
END IF

FOR a = 1 TO 6
READ colorTable(a)
NEXT a
RETURN

'snake1 snake2 Walls Background Dialogs-Fore Back
mono: DATA 15, 7, 7, 0, 15, 0
normal: DATA 14, 13, 12, 1, 15, 4
END

'Center:
' Centers text on given row
SUB Center (row, text$)
LOCATE row, 41 - LEN(text$) / 2
PRINT text$;
END SUB

'DrawScreen:
' Draws playing field
SUB DrawScreen

'initialize screen
VIEW PRINT
COLOR colorTable(1), colorTable(4)
CLS

'Print title & message
Center 1, "Nibbles!"
Center 11, "Initializing Playing Field..."

'Initialize arena array
FOR row = 1 TO 50
FOR col = 1 TO 80
arena(row, col).realRow = INT((row + 1) / 2)
arena(row, col).sister = (row MOD 2) * 2 - 1
NEXT col
NEXT row
END SUB

'EraseSnake:
' Erases snake to facilitate moving through playing field
SUB EraseSnake (snake() AS snaketype, snakeBod() AS snakeBody, snakeNum)

FOR c = 0 TO 9
FOR b = snake(snakeNum).length - c TO 0 STEP -10
tail = (snake(snakeNum).head + MAXSNAKELENGTH - b) MOD MAXSNAKELENGTH
Set snakeBod(tail, snakeNum).row, snakeBod(tail, snakeNum).col, colorTable(4)
NEXT b
NEXT c

END SUB

'GetInputs:
' Gets player inputs
SUB GetInputs (NumPlayers, speed, diff$, monitor$)

COLOR 7, 0
CLS

DO
LOCATE 5, 47: PRINT SPACE$(34);
LOCATE 5, 20
INPUT "How many players (1 or 2)"; num$
LOOP UNTIL VAL(num$) = 1 OR VAL(num$) = 2
NumPlayers = VAL(num$)

LOCATE 8, 21: PRINT "Skill level (1 to 100)"
LOCATE 9, 22: PRINT "1 = Novice"
LOCATE 10, 22: PRINT "90 = Expert"
LOCATE 11, 22: PRINT "100 = Twiddle Fingers"
LOCATE 12, 15: PRINT "(Computer speed may affect your skill level)"
DO
LOCATE 8, 44: PRINT SPACE$(35);
LOCATE 8, 43
INPUT gamespeed$
LOOP UNTIL VAL(gamespeed$) >= 1 AND VAL(gamespeed$) <= 100
speed = VAL(gamespeed$)

speed = (100 - speed) * 5 + 1

DO
LOCATE 15, 56: PRINT SPACE$(25);
LOCATE 15, 15
INPUT "Increase game speed during play (Y or N)"; diff$
diff$ = UCASE$(diff$)
LOOP UNTIL diff$ = "Y" OR diff$ = "N"

DO
LOCATE 17, 46: PRINT SPACE$(34);
LOCATE 17, 17
INPUT "Monochrome or color monitor (M or C)"; monitor$
monitor$ = UCASE$(monitor$)
LOOP UNTIL monitor$ = "M" OR monitor$ = "C"

startTime# = TIMER ' Calculate speed of system
FOR i# = 1 TO 1000: NEXT i# ' and do some compensation
stopTime# = TIMER
speed = speed * .5 / (stopTime# - startTime#)

END SUB

'InitColors:
'Initializes playing field colors
SUB InitColors

FOR row = 1 TO 50
FOR col = 1 TO 80
arena(row, col).acolor = colorTable(4)
NEXT col
NEXT row

CLS

'Set (turn on) pixels for screen border
FOR col = 1 TO 80
Set 3, col, colorTable(3)
Set 50, col, colorTable(3)
NEXT col

FOR row = 4 TO 49
Set row, 1, colorTable(3)
Set row, 80, colorTable(3)
NEXT row

END SUB

'Intro:
' Displays game introduction
SUB Intro
SCREEN 0
WIDTH 80, 25
COLOR 15, 0
CLS

Center 4, "Q B a s i c N i b b l e s"
COLOR 7
Center 6, "Copyright (C) Microsoft Corporation 1990"
Center 8, "Nibbles is a game for one or two players. Navigate your snakes"
Center 9, "around the game board trying to eat up numbers while avoiding"
Center 10, "running into walls or other snakes. The more numbers you eat up,"
Center 11, "the more points you gain and the longer your snake becomes."
Center 13, " Game Controls "
Center 15, " General Player 1 Player 2 "
Center 16, " (Up) (Up) "
Center 17, "P - Pause " + CHR$(24) + " W "
Center 18, " (Left) " + CHR$(27) + " " + CHR$(26) + " (Right) (Left) A D (Right) "
Center 19, " " + CHR$(25) + " S "
Center 20, " (Down) (Down) "
Center 24, "Press any key to continue"

PLAY "MBT160O1L8CDEDCDL4ECC"
SparklePause

END SUB

'Level:
'Sets game level
SUB Level (WhatToDO, sammy() AS snaketype) STATIC

SELECT CASE (WhatToDO)

CASE STARTOVER
curLevel = 1
CASE NEXTLEVEL
curLevel = curLevel + 1
END SELECT

sammy(1).head = 1 'Initialize Snakes
sammy(1).length = 2
sammy(1).alive = TRUE
sammy(2).head = 1
sammy(2).length = 2
sammy(2).alive = TRUE

InitColors

SELECT CASE curLevel
CASE 1
sammy(1).row = 25: sammy(2).row = 25
sammy(1).col = 50: sammy(2).col = 30
sammy(1).direction = 4: sammy(2).direction = 3


CASE 2
FOR i = 20 TO 60
Set 25, i, colorTable(3)
NEXT i
sammy(1).row = 7: sammy(2).row = 43
sammy(1).col = 60: sammy(2).col = 20
sammy(1).direction = 3: sammy(2).direction = 4

CASE 3
FOR i = 10 TO 40
Set i, 20, colorTable(3)
Set i, 60, colorTable(3)
NEXT i
sammy(1).row = 25: sammy(2).row = 25
sammy(1).col = 50: sammy(2).col = 30
sammy(1).direction = 1: sammy(2).direction = 2

CASE 4
FOR i = 4 TO 30
Set i, 20, colorTable(3)
Set 53 - i, 60, colorTable(3)
NEXT i
FOR i = 2 TO 40
Set 38, i, colorTable(3)
Set 15, 81 - i, colorTable(3)
NEXT i
sammy(1).row = 7: sammy(2).row = 43
sammy(1).col = 60: sammy(2).col = 20
sammy(1).direction = 3: sammy(2).direction = 4

CASE 5
FOR i = 13 TO 39
Set i, 21, colorTable(3)
Set i, 59, colorTable(3)
NEXT i
FOR i = 23 TO 57
Set 11, i, colorTable(3)
Set 41, i, colorTable(3)
NEXT i
sammy(1).row = 25: sammy(2).row = 25
sammy(1).col = 50: sammy(2).col = 30
sammy(1).direction = 1: sammy(2).direction = 2

CASE 6
FOR i = 4 TO 49
IF i > 30 OR i < 23 THEN
Set i, 10, colorTable(3)
Set i, 20, colorTable(3)
Set i, 30, colorTable(3)
Set i, 40, colorTable(3)
Set i, 50, colorTable(3)
Set i, 60, colorTable(3)
Set i, 70, colorTable(3)
END IF
NEXT i
sammy(1).row = 7: sammy(2).row = 43
sammy(1).col = 65: sammy(2).col = 15
sammy(1).direction = 2: sammy(2).direction = 1

CASE 7
FOR i = 4 TO 49 STEP 2
Set i, 40, colorTable(3)
NEXT i
sammy(1).row = 7: sammy(2).row = 43
sammy(1).col = 65: sammy(2).col = 15
sammy(1).direction = 2: sammy(2).direction = 1

CASE 8
FOR i = 4 TO 40
Set i, 10, colorTable(3)
Set 53 - i, 20, colorTable(3)
Set i, 30, colorTable(3)
Set 53 - i, 40, colorTable(3)
Set i, 50, colorTable(3)
Set 53 - i, 60, colorTable(3)
Set i, 70, colorTable(3)
NEXT i
sammy(1).row = 7: sammy(2).row = 43
sammy(1).col = 65: sammy(2).col = 15
sammy(1).direction = 2: sammy(2).direction = 1

CASE 9
FOR i = 6 TO 47
Set i, i, colorTable(3)
Set i, i + 28, colorTable(3)
NEXT i
sammy(1).row = 40: sammy(2).row = 15
sammy(1).col = 75: sammy(2).col = 5
sammy(1).direction = 1: sammy(2).direction = 2

CASE ELSE
FOR i = 4 TO 49 STEP 2
Set i, 10, colorTable(3)
Set i + 1, 20, colorTable(3)
Set i, 30, colorTable(3)
Set i + 1, 40, colorTable(3)
Set i, 50, colorTable(3)
Set i + 1, 60, colorTable(3)
Set i, 70, colorTable(3)
NEXT i
sammy(1).row = 7: sammy(2).row = 43
sammy(1).col = 65: sammy(2).col = 15
sammy(1).direction = 2: sammy(2).direction = 1

END SELECT
END SUB

'PlayNibbles:
' Main routine that controls game play
SUB PlayNibbles (NumPlayers, speed, diff$)

'Initialize Snakes
DIM sammyBody(MAXSNAKELENGTH - 1, 1 TO 2) AS snakeBody
DIM sammy(1 TO 2) AS snaketype
sammy(1).lives = 5
sammy(1).score = 0
sammy(1).scolor = colorTable(1)
sammy(2).lives = 5
sammy(2).score = 0
sammy(2).scolor = colorTable(2)

Level STARTOVER, sammy()
startRow1 = sammy(1).row: startCol1 = sammy(1).col
startRow2 = sammy(2).row: startCol2 = sammy(2).col

curSpeed = speed

'play Nibbles until finished

SpacePause " Level" + STR$(curLevel) + ", Push Space"
gameOver = FALSE
DO
IF NumPlayers = 1 THEN
sammy(2).row = 0
END IF

number = 1 'Current number that snakes are trying to run into
nonum = TRUE 'nonum = TRUE if a number is not on the screen

playerDied = FALSE
PrintScore NumPlayers, sammy(1).score, sammy(2).score, sammy(1).lives, sammy(2).lives
PLAY "T160O1>L20CDEDCDL10ECC"

DO
'Print number if no number exists
IF nonum = TRUE THEN
DO
numberRow = INT(RND(1) * 47 + 3)
NumberCol = INT(RND(1) * 78 + 2)
sisterRow = numberRow + arena(numberRow, NumberCol).sister
LOOP UNTIL NOT PointIsThere(numberRow, NumberCol, colorTable(4)) AND NOT PointIsThere(sisterRow, NumberCol, colorTable(4))
numberRow = arena(numberRow, NumberCol).realRow
nonum = FALSE
COLOR colorTable(1), colorTable(4)
LOCATE numberRow, NumberCol
PRINT RIGHT$(STR$(number), 1);
count = 0
END IF

'Delay game
FOR a# = 1 TO curSpeed: NEXT a#

'Get keyboard input & Change direction accordingly
kbd$ = INKEY$
SELECT CASE kbd$
CASE "w", "W": IF sammy(2).direction <> 2 THEN sammy(2).direction = 1
CASE "s", "S": IF sammy(2).direction <> 1 THEN sammy(2).direction = 2
CASE "a", "A": IF sammy(2).direction <> 4 THEN sammy(2).direction = 3
CASE "d", "D": IF sammy(2).direction <> 3 THEN sammy(2).direction = 4
CASE CHR$(0) + "H": IF sammy(1).direction <> 2 THEN sammy(1).direction = 1
CASE CHR$(0) + "P": IF sammy(1).direction <> 1 THEN sammy(1).direction = 2
CASE CHR$(0) + "K": IF sammy(1).direction <> 4 THEN sammy(1).direction = 3
CASE CHR$(0) + "M": IF sammy(1).direction <> 3 THEN sammy(1).direction = 4
CASE "p", "P": SpacePause " Game Paused ... Push Space "
CASE ELSE
END SELECT

FOR a = 1 TO NumPlayers
'Move Snake
SELECT CASE sammy(a).direction
CASE 1: sammy(a).row = sammy(a).row - 1
CASE 2: sammy(a).row = sammy(a).row + 1
CASE 3: sammy(a).col = sammy(a).col - 1
CASE 4: sammy(a).col = sammy(a).col + 1
END SELECT

'If snake hits number, respond accordingly
IF numberRow = INT((sammy(a).row + 1) / 2) AND NumberCol = sammy(a).col THEN
PLAY "MBO0L16>CCCE"
IF sammy(a).length < (MAXSNAKELENGTH - 30) THEN
sammy(a).length = sammy(a).length + number * 4
END IF
sammy(a).score = sammy(a).score + number
PrintScore NumPlayers, sammy(1).score, sammy(2).score, sammy(1).lives, sammy(2).lives
number = number + 1
IF number = 10 THEN
EraseSnake sammy(), sammyBody(), 1
EraseSnake sammy(), sammyBody(), 2
LOCATE numberRow, NumberCol: PRINT " "
Level NEXTLEVEL, sammy()
PrintScore NumPlayers, sammy(1).score, sammy(2).score, sammy(1).lives, sammy(2).lives
SpacePause " Level" + STR$(curLevel) + ", Push Space"
IF NumPlayers = 1 THEN sammy(2).row = 0
number = 1
IF diff$ = "P" THEN speed = speed - 10: curSpeed = speed
END IF
nonum = TRUE
IF curSpeed < 1 THEN curSpeed = 1
END IF
NEXT a

FOR a = 1 TO NumPlayers
'If player runs into any point, or the head of the other snake, it dies.
IF PointIsThere(sammy(a).row, sammy(a).col, colorTable(4)) OR (sammy(1).row = sammy(2).row AND sammy(1).col = sammy(2).col) THEN
PLAY "MBO0L32EFGEFDC"
COLOR , colorTable(4)
LOCATE numberRow, NumberCol
PRINT " "

playerDied = TRUE
sammy(a).alive = FALSE
sammy(a).lives = sammy(a).lives - 1

'Otherwise, move the snake, and erase the tail
ELSE
sammy(a).head = (sammy(a).head + 1) MOD MAXSNAKELENGTH
sammyBody(sammy(a).head, a).row = sammy(a).row
sammyBody(sammy(a).head, a).col = sammy(a).col
tail = (sammy(a).head + MAXSNAKELENGTH - sammy(a).length) MOD MAXSNAKELENGTH
Set sammyBody(tail, a).row, sammyBody(tail, a).col, colorTable(4)
sammyBody(tail, a).row = 0
Set sammy(a).row, sammy(a).col, sammy(a).scolor
END IF
NEXT a

LOOP UNTIL playerDied

curSpeed = speed ' reset speed to initial value

FOR a = 1 TO NumPlayers
EraseSnake sammy(), sammyBody(), a

'If dead, then erase snake in really cool way
IF sammy(a).alive = FALSE THEN
'Update score
sammy(a).score = sammy(a).score - 10
PrintScore NumPlayers, sammy(1).score, sammy(2).score, sammy(1).lives, sammy(2).lives

IF a = 1 THEN
SpacePause " Sammy Dies! Push Space! --->"
ELSE
SpacePause " <---- Jake Dies! Push Space "
END IF
END IF
NEXT a

Level SAMELEVEL, sammy()
PrintScore NumPlayers, sammy(1).score, sammy(2).score, sammy(1).lives, sammy(2).lives

'Play next round, until either of snake's lives have run out.
LOOP UNTIL sammy(1).lives = 0 OR sammy(2).lives = 0

END SUB

'PointIsThere:
' Checks the global arena array to see if the boolean flag is set
FUNCTION PointIsThere (row, col, acolor)
IF row <> 0 THEN
IF arena(row, col).acolor <> acolor THEN
PointIsThere = TRUE
ELSE
PointIsThere = FALSE
END IF
END IF
END FUNCTION

'PrintScore:
' Prints players scores and number of lives remaining
SUB PrintScore (NumPlayers, score1, score2, lives1, lives2)
COLOR 15, colorTable(4)

IF NumPlayers = 2 THEN
LOCATE 1, 1
PRINT USING "#,###,#00 Lives: # <--JAKE"; score2; lives2
END IF

LOCATE 1, 49
PRINT USING "SAMMY--> Lives: # #,###,#00"; lives1; score1
END SUB

'Set:
' Sets row and column on playing field to given color to facilitate moving
' of snakes around the field.
SUB Set (row, col, acolor)
IF row <> 0 THEN
arena(row, col).acolor = acolor 'assign color to arena
realRow = arena(row, col).realRow 'Get real row of pixel
topFlag = arena(row, col).sister + 1 / 2 'Deduce whether pixel
'is on topß, or bottomÜ
sisterRow = row + arena(row, col).sister 'Get arena row of sister
sisterColor = arena(sisterRow, col).acolor 'Determine sister's color

LOCATE realRow, col

IF acolor = sisterColor THEN 'If both points are same
COLOR acolor, acolor 'Print chr$(219) "Û"
PRINT CHR$(219);
ELSE
IF topFlag THEN 'Since you cannot have
IF acolor > 7 THEN 'bright backgrounds
COLOR acolor, sisterColor 'determine best combo
PRINT CHR$(223); 'to use.
ELSE
COLOR sisterColor, acolor
PRINT CHR$(220);
END IF
ELSE
IF acolor > 7 THEN
COLOR acolor, sisterColor
PRINT CHR$(220);
ELSE
COLOR sisterColor, acolor
PRINT CHR$(223);
END IF
END IF
END IF
END IF
END SUB

'SpacePause:
' Pauses game play and waits for space bar to be pressed before continuing
SUB SpacePause (text$)

COLOR colorTable(5), colorTable(6)
Center 11, "ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ"
Center 12, "Û " + LEFT$(text$ + SPACE$(29), 29) + " Û"
Center 13, "ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ"
WHILE INKEY$ <> "": WEND
WHILE INKEY$ <> " ": WEND
COLOR 15, colorTable(4)

FOR i = 21 TO 26 ' Restore the screen background
FOR j = 24 TO 56
Set i, j, arena(i, j).acolor
NEXT j
NEXT i

END SUB

'SparklePause:
' Creates flashing border for intro screen
SUB SparklePause

COLOR 4, 0
a$ = "* * * * * * * * * * * * * * * * * "
WHILE INKEY$ <> "": WEND 'Clear keyboard buffer

WHILE INKEY$ = ""
FOR a = 1 TO 5
LOCATE 1, 1 'print horizontal sparkles
PRINT MID$(a$, a, 80);
LOCATE 22, 1
PRINT MID$(a$, 6 - a, 80);

FOR b = 2 TO 21 'Print Vertical sparkles
c = (a + b) MOD 5
IF c = 1 THEN
LOCATE b, 80
PRINT "*";
LOCATE 23 - b, 1
PRINT "*";
ELSE
LOCATE b, 80
PRINT " ";
LOCATE 23 - b, 1
PRINT " ";
END IF
NEXT b
NEXT a
WEND

END SUB

'StillWantsToPlay:
' Determines if users want to play game again.
FUNCTION StillWantsToPlay

COLOR colorTable(5), colorTable(6)
Center 10, "ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ"
Center 11, "Û G A M E O V E R Û"
Center 12, "Û Û"
Center 13, "Û Play Again? (Y/N) Û"
Center 14, "ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ"

WHILE INKEY$ <> "": WEND
DO
kbd$ = UCASE$(INKEY$)
LOOP UNTIL kbd$ = "Y" OR kbd$ = "N"

COLOR 15, colorTable(4)
Center 10, " "
Center 11, " "
Center 12, " "
Center 13, " "
Center 14, " "

IF kbd$ = "Y" THEN
StillWantsToPlay = TRUE
ELSE
StillWantsToPlay = FALSE
COLOR 7, 0
CLS
END IF

END FUNCTION


http://www.megaunder.com.ar/showthread.php?p=15167

Datos archivados del Taringa! original
0puntos
445visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
5visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

i
inf0bugs🇦🇷
Usuario
Puntos0
Posts2
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.