Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Programar Juego Basico (https://www.clubdelphi.com/foros/showthread.php?t=93368)

einer 23-08-2018 21:14:34

Programar Juego Basico
 
HOLA MUY BUENAS....
quisiera pedir a los que saben de programacion en delphi si pueden ayudarme con mi proyecto(tarea)

es lo sgt en clases el docente nos hizo hacer un programa en el cual mediante un boton hacemos recorrer la imagen de izquierda a derecha.. al finalizar la clase nos dio como tarea lo sgt: que programemos para que cuando la imagen llegase al borde derecho vuelva automaticamente al inicio.... nose si alguien tendria algun ejemplo de como puedo hacerlo... la medida de la ventana es de 910*440 ...... o quiza alguien tenga un juego o un ejemplo con el cual pueda guiarme..... espero vuestras respuestas

Casimiro Notevi 23-08-2018 21:59:06

Bienvenido, creo que no has leído nuestra guía de estilo, saludos.

einer 23-08-2018 22:05:16

Como lo edito?

Casimiro Notevi 23-08-2018 22:14:21

No te preocupes, solamente tenlo en cuenta para otras ocasiones :)

duilioisola 24-08-2018 10:25:31

Suponiendo que ya tienes la parte del botón y la imagen moviendose, es tan simple como verificar la posición de la imagen antes de moverla.

El Pseudocódigo sería algo asi:

Código:

// Hasta donde puede avanzar la imagen
LimitePosicionDerecha := 900

// Cantidad de pixels que se moverá al presionar una tecla
Avence := 10

OnKeyPress
begin
  // Avanzo la imagen
  Imagen.Left := Imagen.Left + Avence

  // Verifico si me he salido de la pantalla
  if Imagen.Left > LimitePosicionDerecha then
      Imagen.Left := 1
end


escafandra 24-08-2018 19:32:48

Es posible que esto te interese: TPelota. Al menos para tomar ideas.





Saludo.

ecfisa 24-08-2018 22:38:49

Hola.

Un ejemplo simple que desplaza horizontalmente un TImage de forma cíclica:
Código Delphi [-]
...
implementation

type
  TSentido = (toLeft, toDown, toRight, toUp); //  Por si hubiera un futuro desplaz. vertical 

procedure MoveImage(Img: TImage; const Sense: TSentido; const Disp: Integer);
begin
  case Sense of
    toRight:
    begin
      if Img.Left >= Img.Parent.ClientWidth - Disp then
        Img.Left := -Img.Width + Disp;
      Img.Left := Img.Left + Disp;
    end;
    toLeft:
    begin
      if Img.Left + Img.Width <= Disp then
        Img.Left := Img.Parent.Width;
      Img.Left := Img.Left - Disp;
    end;
    // toDown:
    // toTop:
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Self.KeyPreview            := True;
  Self.HorzScrollBar.Visible := False;
  Self.DoubleBuffered        := True;
  Image1.Width  := Image1.Picture.Width;
  Image1.Height := Image1.Picture.Height;
end;

Luego podes llamar a la función en el/los eventos que prefieras, v.gr.:
Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_LEFT then
    MoveImage(Image1, toLeft, 10);
  if Key = VK_RIGHT then
    MoveImage(Image1, toRight, 10);
end;
Resultado:


Saludos :)

gatosoft 27-08-2018 20:01:20

Cita:

Empezado por escafandra (Mensaje 528176)
Es posible que esto te interese: TPelota. Al menos para tomar ideas.
Saludo.

Alguien se debe estar revolcando frente a su ordenador en éste momento... :D:D:D:D

( y NO lo digo por Einer revisando el código... )

Casimiro Notevi 27-08-2018 20:21:15

Cita:

Empezado por gatosoft (Mensaje 528202)
Alguien se debe estar revolcando frente a su ordenador en éste momento... :D:D:D:D
( y NO lo digo por Einer revisando el código... )

:):):):):)

escafandra 27-08-2018 21:56:10

Cita:

Empezado por gatosoft (Mensaje 528202)
Alguien se debe estar revolcando frente a su ordenador en éste momento... :D:D:D:D

( y NO lo digo por Einer revisando el código... )


Alguien ya ejecutó el ejemplo :D:D:D


Saludos.

Casimiro Notevi 27-08-2018 22:24:13

Cita:

Empezado por escafandra (Mensaje 528204)
Alguien ya ejecutó el ejemplo :D:D:D
Saludos.

¿La "sombra" está descolocada?

escafandra 27-08-2018 23:15:56

Cita:

Empezado por Casimiro Notevi (Mensaje 528205)
¿La "sombra" está descolocada?


No, no hay sombra, si ves una pelota negra es que no copiaste el archivo Pelota7.png a la carpeta del ejecutable. La clase TPelota puede incorporar imágenes en los recursos o leerlas de un archivo. en el segundo caso será negra si no encuentra el archivo.

En un primer lugar aparece una pelota con esa imagen y un balón de fútbol. Cada uno tiene un comportamiento ligeramente distinto. El balón termina cayendo al suelo y frenando. Al parar se disparan dos balones, el antiguo y otro nuevo. El asunto se repite hasta un número de pelotas limitado para no saturar los recursos.




Saludos.




Casimiro Notevi 28-08-2018 01:48:22

Es lo que dices, no copié la imagen de esa pelota :)


La franja horaria es GMT +2. Ahora son las 17:32:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi