Pascal/Turbo Pascal - Juego Spelling

 
Vista:

Juego Spelling

Publicado por joaquin (6 intervenciones) el 01/06/2013 23:28:07
Ayuda hacer programa en pascal tipo juego deletreo (spelling bee), 3 niveles de juego: principiante, medio, avanzado, se toma una palabra al azar de un arreglo de 300 o desde base datos o desde un diccionario integrado al programa...por donde empezar?
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

Juego Spelling

Publicado por ramon (2158 intervenciones) el 03/06/2013 16:08:09
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
{Mira a ver si esto te ayuda}
 
  program juego;
 uses
    crt;
  type
    datospregunt = record
         numero   : word;
         pregunta : string;
         respuest : string;
        end;
 
  var
    dato : datospregunt;
    f : file of datospregunt;
    cont : longint;
 
 
    procedure entradatos;
    begin
        clrscr;
        write('   Pregunta  : ');
        readln(dato.pregunta);
        write('   Respuesta : ');
        readln(dato.respuest);
        dato.numero := cont;
    end;
 
    procedure crearbasedatos;
    begin
       assign(f,'basejueg.bst');
   {$I-} reset(f); {$I+}
      if ioresult <> 0 then
      begin
         rewrite(f);
         cont := 1;
         entradatos;
         seek(f,0);
         write(f,dato);
         close(f);
      end
  else
     begin
        cont := filesize(f);
        seek(f,filesize(f));
        entradatos;
        write(f,dato);
         close(f);
     end;
    end;
 
    procedure presentapregunta;
    var
      nn, preg : longint;
      respu : string;
      v1 : integer;
    begin
       assign(f,'basejueg.bst');
   {$I-} reset(f); {$I+}
      if ioresult <> 0 then
      begin
         clrscr;
         writeln('   Error De Archivo No Encontrado Pulse Una Tecla ');
         readkey;
      end
   else
      begin
         preg := filesize(f) - 1;
         randomize;
         nn := random(preg);
         seek(f, nn);
         read(f,dato);
         close(f);
         clrscr;
         writeln('  La Pregunta Es : ',dato.pregunta);
         writeln;
         write('  La Respuesta Dimela : ');
         readln(respu);
         for v1 := 1 to Length(respu) do
         respu[v1] := upcase(respu[v1]);
         for v1 := 1 to Length(dato.respuest) do
         dato.respuest[v1] := upcase(dato.respuest[v1]);
         if respu = dato.respuest then
         writeln('   Respuesta Correcta')
       else
         writeln('   Respuesta In Correcta');
         writeln;
         writeln('  Pulse Una Tecla');
         readkey;
      end;
    end;
 
    procedure verdatostodos;
    var
      y, arch : longint;
    begin
        assign(f,'basejueg.bst');
   {$I-} reset(f); {$I+}
      if ioresult <> 0 then
      begin
         clrscr;
         writeln('   Error De Archivo No Encontrado Pulse Una Tecla ');
         readkey;
      end
   else
      begin
         arch := filesize(f) - 1;
         y := 0;
         clrscr;
      repeat
      seek(f,y);
      read(f,dato);
      writeln('  Pregunta   : ',dato.pregunta);
      writeln('  Respuesta  : ',dato.respuest);
      writeln('  Pulse Una Tecla');
      readkey;
      clrscr;
      y := y + 1;
      until y > arch;
      end;
    end;
 
    procedure menu;
   var
     sal : boolean;
     tec : char;
   begin
      sal := false;
    repeat
       clrscr;
       writeln('     ****** Menu General ******');
       writeln;
       writeln('          1 = Entrada Base Datos');
       writeln('          2 = Ver Datos Todos');
       writeln('          3 = Pregunta juego');
       writeln('          4 = Salir');
       writeln;
       writeln('      >>> Elija Opcion <<<');
       repeat
           tec := readkey;
       until tec in['1','2','3','4'];
       clrscr;
   case tec of
 '1' : begin
          crearbasedatos;
       end;
 '2' : begin
          verdatostodos;
       end;
 '3' : begin
          presentapregunta;
       end;
 '4' : sal := true;
    end;
    until sal = true;
   end;
 
    begin
        menu;
    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

Juego Spelling

Publicado por joaquin (6 intervenciones) el 03/06/2013 19:27:31
Hola...no...esto es mas para un juego tipo quiz...lo que necesito es de una lista de 300 palabras (mínimo...que pueda agregarle tantas como quiera) por ejemplo que pueden estar en un txt, el programa selecciona una aleatoriamente (random?) la muestra en pantalla cuando se presiona una tecla...ah...y no se puede repetir la palabra...por eso la base de datos es tan extensa...
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

Juego Spelling

Publicado por ramon (2158 intervenciones) el 03/06/2013 21:54:07
La lista la tienes que crear tu entrando los datos en la entrada que tienes por lógica también tienes
que entrar las respuestas.
Entra unos pocos datos y sus respuestas y comprueba lo que pasa dime la cantidad de preguntas
a realiza por jugada y jugadores que intervienen en juego al mismo tiempo.
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

Juego Spelling

Publicado por joaquin (6 intervenciones) el 03/06/2013 22:04:40
si, se q debo alimentar la base de datos...es q no son preguntas...es solo presionar la opcion mostrar palabra, el programa selecciona una al azar random, se visualiza en pantalla, luego se repite el procedimiento, basicamente es mostrar una palabra aleatoriamente...no se si me explico...
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

Juego Spelling

Publicado por ramon (2158 intervenciones) el 07/06/2013 16:10:46
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
{Mira esto leerá de un archivo de texto una cadena dependiendo del numero entrado por random
espero que sea esto no se repetirán las palabras fíjate que fijo 10 preguntas}
 
 program juego;
  uses
     crt;
  type
     datos = array[0..8192] of char; {Almacen de preguntas 8Kb}
  const
     npreg = 10;   {Un total de 10 preguntas para mas aumentar numero}
  var
    archivo : string;
    numer : word;
    tecla, letra : char;
    dat : ^datos;
    f : text;
    preguntanum : integer;
    g, tama : word;
    final, memori : boolean;
    preguntas : array[1..100] of word;
 
   procedure cargaarchivo(nomb : string);
   var
      mh, w, k : longint;
      cot : word;
   begin
      numer := 0;
      cot := 0;
      assign(f,nomb);
   {$I-} reset(f); {$I+}
   if ioresult <> 0 then
   begin
       writeln('  Error De Archibo Pulse Una Tecla');
       readkey;
   end
 else
     begin
        k := 0;
        while not Eof(F) do
        begin
           read(f,letra);
           dat^[k] := letra;
           k := k + 1;
           if k > sizeof(datos) then
           begin
           k := sizeof(datos);
           break;
           end;
        end;
        tama := k - 1;
        close(f);
        mh := 0;
        repeat
        if dat^[mh] in[#48..#57,#65..#90,#97..#122,#164,#165] then
        begin
           w := 0;
           repeat
              w := w + 1;
           until (w > 255) or (dat^[mh + w] in[#32,#44,#46]);
           if w < 255 then
           begin
           cot := cot + 1;
           mh := mh + w - 1;
           end;
        end;
        mh := mh + 1;
    until (mh > tama) or (keypressed);
        numer := cot - 1;
     end;
   end;
 
   procedure buscacadena(nu : word);
   var
      uy : longint;
      frase : string;
      z : integer;
      cotd : word;
      salir : boolean;
   begin
      cotd := 0;
      uy := 0;
      salir := false;
      fillchar(frase,256,' ');
      frase[0] := chr(255);
    repeat
        if dat^[uy] in[#48..#57,#65..#90,#97..#122,#164,#165] then
        begin
           z := 0;
           repeat
              frase[z + 1] := dat^[uy + z];
              frase[0] := chr(z + 1);
              z := z + 1;
           until (z > 255) or (dat^[uy + z] in[#32,#44,#46,#13,#10]);
           cotd := cotd + 1;
           if cotd = nu then
           begin
              writeln('  La Pregunta [ ',preguntanum,' ] Es : ',frase);
              salir := true;
           end;
            if salir = false then
            uy := uy + z - 1;
        end;
        if salir = false then
        uy := uy + 1;
    until (salir = true) or (uy > tama);
   end;
 
   function jenerapegunta : word;
   var
     k1, k2 : word;
     repe : boolean;
   begin
      repe := false;
      jenerapegunta := 0;
    repeat
        k1 := random(numer);
        for k2 := 1 to g - 1 do
        begin
        if preguntas[k2] = k1 then
        repe := true;
        end;
    until repe = false;
    preguntas[g] := k1;
    g := g + 1;
    if g > 100 then
    g := 100;
    if k1 > numer then
    k1 := numer;
    jenerapegunta := k1;
   end;
 
 
 
  begin
     clrscr;
     g := 1;
     memori := false;
     if memavail >= sizeof(datos) then
     begin
     getmem(dat,sizeof(datos));
     memori := true;
     end;
     fillchar(preguntas,sizeof(preguntas),0);
     writeln(' Esto Seria Un Ejemplo Nombre Archivo A Cargar : aaclave.pas');
     writeln;
     write(' Entre Nombre De Archivo De Texto : ');
     readln(archivo);
     cargaarchivo(archivo);
     randomize;
     final := false;
     preguntanum := 1;
   repeat
       clrscr;
       buscacadena(jenerapegunta);
       preguntanum := preguntanum + 1;
       if preguntanum - 1 > npreg then
       begin
       final := true;
       end;
     if final = false then
     begin
       writeln;
       writeln('  Para Segir Pulse [ Espacio ] Para Salir Pulse [ Esc ]');
     repeat
       tecla := readkey;
     until tecla in[#32,#27];
       if tecla = #32 then
       begin
       fillchar(preguntas,sizeof(preguntas),0);
       clrscr;
       end;
     end;
   until (tecla = #27) or (final = true);
   if memori = true then
   freemem(dat,sizeof(datos));
  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

Juego Spelling

Publicado por joaquin (6 intervenciones) el 26/06/2013 16:06:17
Intento ejecutar pero indica error con memavail...
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

Juego Spelling

Publicado por ramon (2158 intervenciones) el 26/06/2013 23:10:41
quita esto
1
2
3
4
5
6
memori := false;
     if memavail >= sizeof(datos) then
     begin
     getmem(dat,sizeof(datos));
     memori := true;
     end;


y esto

1
2
if memori = true then
   freemem(dat,sizeof(datos));
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