• Sábado 27 de Abril de 2024, 08:10

Autor Tema:  Pong En Pascal  (Leído 1779 veces)

LautaroMedrano

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Pong En Pascal
« en: Viernes 20 de Junio de 2008, 17:41 »
0
Buenas, hace cerca de dos meses empezé la carrera de Análisis de Sistemas, y empezaron enseñando algo de Pascal, la cosa es que me puse a buscar por Internet info para aprender más y me dieron ganas de hacer un par de jueguitos, como por ejemplo, el Pong que estoy intentando hacer ahora, pero tiene un problema que es que no me lee las teclas para mover los jugadores.
Parece como que el readkey no funciona en modo gráfico, así que les dejo el código a ver si alguien me puede ayudar un poco con este tema.
Ya sé que tiene otros errores el programa, como por ejemplo cuando choca con las paredes laterales pero eso lo soluciono después.

Código: Text
  1. Program Pong;
  2.  
  3. Uses crt,graph;
  4.  
  5. {*------------------------------Procedimientos--------------------------------*}
  6.  
  7. Procedure Dibujar_Jugador(x:integer;y:integer);
  8. Begin
  9.      setfillstyle(solidfill,white);
  10.      bar(x-6,y-15,x+6,y+15);
  11. End;
  12.  
  13. Procedure Borrar_Jugador(x,y:integer);
  14. Begin
  15.      setfillstyle(solidfill,green);
  16.      bar(x-6,y-15,x+6,y+15);
  17. End;
  18.  
  19. Procedure Dibujar_Bola(xb,yb:integer);
  20. Begin
  21.      setfillstyle(solidfill,red);
  22.      fillellipse(xb,yb,10,10);
  23. End;
  24.  
  25. Procedure Borrar_Bola(xb,yb:integer);
  26. Begin
  27.      setfillstyle(solidfill,green);
  28.      bar(xb-10,yb-10,xb+10,yb+10);
  29. End;
  30.  
  31. {------------------------------------------------------------------------------}
  32.  
  33. Var x1,y1,x2,y2,xb,yb,movx,movy:integer;
  34.     tec:byte;
  35.     gd,gm:smallint;
  36.     pathtodriver:string;
  37.  
  38. Begin
  39.      {*---------------------Inicializacion de variables-----------------------*}
  40.      x1:=207;
  41.      y1:=340;
  42.      x2:=793;
  43.      y2:=340;
  44.      xb:=500;
  45.      yb:=340;
  46.  
  47.      {*-------------------Inicialización del modo Gráfico---------------------*}
  48.  
  49.      gd:=detect; { highest possible resolution }
  50.      gm:=0; { not needed, auto detection }
  51.      PathToDriver:='C:PPBGI';
  52.      Initgraph(gd,gm,pathtodriver);
  53.  
  54.      {*--------------------Inicialización de posiciones-----------------------*}
  55.  
  56.      setfillstyle(solidfill,green);
  57.      bar(200,140,800,540);
  58.  
  59.      Dibujar_Jugador(x1,y1);
  60.      Dibujar_Jugador(x2,y2);
  61.  
  62.      {*----------------Inicialización de movimiento de la bola----------------*}
  63.  
  64.      if random(2)=1 then movx:=10 //Inicialización de
  65.         else movx:=-10;           //dirección del
  66.      if random(2)=1 then movy:=10 //movimiento aleatoriamente
  67.         else movy:=-10;
  68.  
  69.      {*-----------------------------------------------------------------------*}
  70.  
  71.      repeat
  72.            if (yb=150)or(yb=530) then movy:=-movy; //La bola choca los bordes?
  73.  
  74.            if (xb=210)and((yb>=y1-10)or(yb<=y1+10))then movx:=-movx; //Choca las
  75.            if (xb=790)and((yb>=y2-10)or(yb<=y2+10))then movx:=-movx; //paletas?
  76.  
  77.            if keypressed then
  78.               begin
  79.                    tec:=ord(readkey);
  80.  
  81.                    if (tec=ord('w')) and (y1>55) then
  82.                       begin
  83.                            Borrar_Jugador(x1,y1);
  84.                            y1:=y1-1;
  85.                            Dibujar_Jugador(x1,y1);
  86.                       end
  87.                       else
  88.                           if (tec=ord('s')) and (y1<525) then
  89.                              begin
  90.                                   Borrar_Jugador(x1,y1);
  91.                                   y1:=y1+1;
  92.                                   Dibujar_Jugador(x1,y1);
  93.                              end;
  94.               end;
  95.            Borrar_Bola(xb,yb);
  96.  
  97.            xb:=xb+movx; //Movimiento de la bola
  98.            yb:=yb+movy;
  99.  
  100.            Dibujar_Bola(xb,yb);
  101.            delay(100);
  102.  
  103.      until (xb=209)or(xb=791);
  104. End.
  105.