Pascal/Turbo Pascal - Simular en la pantalla del ordenador la lluvia de estrellas

 
Vista:

Simular en la pantalla del ordenador la lluvia de estrellas

Publicado por marta (2 intervenciones) el 16/11/2007 20:46:40
Neceito ayuda para este programa en PASCAL:

Simular en la pantalla del ordenador la lluvia de estrellas. Usar una tabla de 24 filas x 80 columnas para presentar en la pantala. El programa recibira como entrada el tiempo de la simulacion expresado en num de iteraciones. En cada iteracion, cada estrella del tablero (*) se mvera en direccion sudeste y se generara una nueva estrella en la fila superior, en una colmna calculada al azar. Para simular el movimento, al finalizar una iteracion, la pantalla se borara y se imprima el nuevo contenido de la tabla en la pantalla. las estrellas q alcancen el margen derecho reapareceran por el izquierdo.

gracias por vuestra ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Simular en la pantalla del ordenador la lluvia de estrellas

Publicado por Diego Romero (996 intervenciones) el 16/11/2007 22:01:54
¿No sabes hacer ese programa? muy simple, te lo envío la semana que viene terminado, saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Simular en la pantalla del ordenador la lluvia de estrellas

Publicado por Mechanic (177 intervenciones) el 18/11/2007 23:51:21
Marta!
No pretendo ser grocero, pero, dices que necesitas ayuda con un programa.
A mí me parece que lo que quieres es que te hagan el programa completo.

A los participantes del foro nos gustaría ver aquí el trabajo que has hecho aunque esté incompleto o no funcione. Seguramente así, alguien gustosamente se prestaría a darte ideas o corregir errores en tu código, pues si alguien te va a ayudar será con la intención de que aprendas Pascal y no para que No aprendas.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Simular en la pantalla del ordenador la lluvia de estrellas

Publicado por Marta (2 intervenciones) el 19/11/2007 14:39:45
Vale te escribo lo que he hecho, pero no sale lo que tiene que salir espero que si no os importa me lo mireis...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
programa:
program ejer11(input,output);
uses crt;
 
const
        f=24;
        c=80;
type
        tabla=array[1..80,1..24] of char;
 
var
        inter,i1:integer;
        sino:char;
        matri,matri2:tabla;
procedure inimat(var tab: tabla);
var
        inc2:integer;
        inf:integer;
        ini:integer;
 
begin
       clrscr;
       for inc2:= 1 to 80 do begin
           for inf:= 1 to 24 do begin
                tab[inc2,inf]:=' ';
           end;
       end;
       randomize;
       for ini:= 1 to inter do begin
            inc2:=random(79)+1;
            inf:=random(23)+1;
            tab[inc2,inf]:='*';
       end;
end;
procedure wrtmat(var tab: tabla);
var
        wrc:integer;
        wrf:integer;
begin
        for wrc:= 1 to 80 do begin
            for wrf:= 1 to 24 do begin
            gotoXY(wrc,wrf);
            write(tab[wrc,wrf]);
            end;
        end;
 
end;
procedure busco(var tab,tab2: tabla);
var
        ic2,if2:integer;
        ic3,if3:integer;
begin
        for ic2:= 1 to 80 do begin
            for if2:= 1 to 24 do begin
 
              if tab[ic2,if2] = '*' then begin
 
                 ic3:=ic2+i1;
                 if3:=if2+i1;
 
                 if ic3 > 80 then begin
                    ic3:=ic3-80;
                 end;
                 if if3 > 24 then begin
                    if3:=if3-24;
                 end;
                 tab2[ic3,if3]:='*';
                 ic3:=random(79)+1;
                 if3:=if3-1;
                 if if3 = 0 then begin
                    if3:=1;
                                 end;
                 tab2[ic3,if3]:='*';
 
                               end;
            end;
        end;
        for ic2:= 1 to 80 do begin
            for if2:= 1 to 24 do begin
              if tab2[ic2,if2] = '- 'then
                 tab2[ic2,if2]:='*';
 
            end;
        end;
end;
 
begin
        writeln (' escribe el num de interaciones:  ');
        readln (inter);
        inimat(matri);
        wrtmat(matri);
        writeln (' pulsa enter para ver la lluvia de estrellas:  ');
        readln (sino);
        for i1:= 1 to inter do begin
          busco(matri,matri2);
        end;
        matri:=matri2;
        wrtmat(matri);
        readln(inter);
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Simular en la pantalla del ordenador la lluvia de estrellas

Publicado por Diego Romero (996 intervenciones) el 20/11/2007 03:48:55
A ver si dejas de ser tan vaga marta, y haces el programa vos, acá no se hace la tarea restrera robacódigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Simular en la pantalla del ordenador la lluvia de estrellas

Publicado por yolmer.rosalles (10 intervenciones) el 22/11/2007 18:57:03
marta puedo ayudarte pero no entiendo muy bien por que parte salen las estrellas ¿es por arriba o por la izquierda? lo demás se mueven en diagonal hacia abajo y luego aparecen por la izquierda, y cuando dices que se borra la pantalla ¿que es lo que tiene que aparecer? realiza la etapa de dialogo para que entiendas bien que es lo que se pide en el problema original. por lo que yo entiendo te daré esta idea
- la inicialización esta bien borra la matriz y dejalo allí
- despues (si la lluvia comienza desde la fila uno) no hagas random(79)+1 haz
1
2
3
4
5
6
7
8
9
10
11
12
for contador := 0 to 79
  begin
    variable := ramdom(1)
     if variable = 0 then
         matriz[0,contador] := '*'
    else
       matriz[0,' '] {si usas un espacio en blanco no tienes que borrar Pantalla para
                             cada iteracción ya que el espacio reemplaza un posible asterisco}
  end;
       esto te coloca los asteriscos de manera aleatoria en la primera fila despues para moverlas rrecorre la matriz con dos for anidados y verifica el valor diagonal superior
    matriz[ x -1, y - 1]
    y copialo matriz[x ,y] := matriz[x-1,y-1];
incluye una verificación cuando sea la primera columna o sea
1
if x = 0 then
aqui busca en el valor derecho
1
matriz[80,y-1]
espero que esto te guíe un poco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar