2010-10-12 8 views
9

tengo esta variable declaraciones en mi programa:para al azar cadenas en Commodore 64 BÁSICO

X="MAGENTA" 
Y="CYAN" 
Z="TAN" 
A="KHAKI" 

Ahora lo que quiero es elegir al azar uno de estos y PRINT ella. pero como hacer esto?

+1

+1 for Commodore 64 BASIC! Lástima que no sé la respuesta :-) –

+1

Guau, tendría que ir a casa para obtener mi Guía del programador para saber la manera correcta de usar RND, pero felicitaciones por una pregunta sobre C64 BASIC :) – p00ya

+0

@Dean : Sí. Sigo siendo un amante de Commodore 64. Sigue siendo una gran plataforma, principalmente si quieres hacer algunos viejos juegos BASIC **:) ** –

Respuesta

4

Mi BASIC es bastante oxidada, pero sólo debe ser capaz de usar algo como:

10 X$ = "MAGENTA" 
20 Y$ = "CYAN" 
30 Z$ = "TAN" 
40 A$ = "KHAKI" 
50 N = INT(RND(1) * 4) 
60 IF N = 0 THEN PRINT X$ 
70 IF N = 1 THEN PRINT Y$ 
80 IF N = 2 THEN PRINT Z$ 
90 IF N = 3 THEN PRINT A$ 

o, poniéndolo en una subrutina para la reutilización de código:

10 X$ = "MAGENTA" 
    20 Y$ = "CYAN" 
    30 Z$ = "TAN" 
    40 A$ = "KHAKI" 
    50 GOSUB 1000 
    60 PRINT RC$ 
    70 END 

1000 TV = INT(RND(1) * 4) 
1010 IF TV = 0 THEN RC$ = X$ 
1020 IF TV = 1 THEN RC$ = Y$ 
1030 IF TV = 2 THEN RC$ = Z$ 
1040 IF TV = 3 THEN RC$ = A$ 
1050 RETURN 

Por supuesto, probablemente deberías estar usando matrices para ese tipo de cosas, así que puedes usar:

10 DIM A$(3) 
10 A$(0) = "MAGENTA" 
20 A$(1) = "CYAN" 
30 A$(2) = "TAN" 
40 A$(3) = "KHAKI" 
50 PRINT A$(INT(RND(1)*4)) 
+1

¿Funcionarán esas igualdades? Si RND genera un flap, debería ser <= 1, <= 2, etc. ¿verdad? – p00ya

+1

Bueno, eso solo muestra cuán oxidado por BASIC en realidad es :-) Corregido con un 'INT()' alrededor. – paxdiablo

+0

No estoy seguro acerca de Commodore Basic, pero creo que en otros Basic's el índice inicial de una matriz es normalmente 1, por lo que debe 'DIM A $ (4)'. Si mi memoria (oxidada) me funciona bien, entonces en la publicación BASICA/GWBASIC age Basic, había un comando 'OPTION BASE' para determinar si la matriz comienza desde 0 o desde 1. – ysap