Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi PingPong spiel schulprojekt help (https://www.delphipraxis.net/69648-delphi-pingpong-spiel-schulprojekt-help.html)

Travis 18. Mai 2006 00:21


Delphi PingPong spiel schulprojekt help
 
hallo
hab ein problem mit meinen delphi projekt was ein schulprojekt ist und wichtig für meine zensur ist =)
also ich hab shape komponente genommen für die balken von den der ball abprallen soll jedoch prallt der ball vom einen garnicht ab und vom anderen erst wenn er von links kommt da ich nur noch knapp 2 wochen zeit hab wollt ich fragen ob ihr vielleicht eine lösung wisst wer sehr nett schonma danke im vorraus ich poste ma quellcode
vielleicht seht ihr ja noch etwas was ich verbessern könnt =)
Delphi-Quellcode:
unit USpiel;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, jpeg, UPunkte , UDaten;

type
  TFSpiel = class(TForm)
    Spielfeld: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Spieler1: TShape;
    spieler2: TShape;
    Sh_ball: TShape;
    Timer_ball: TTimer;
    Label5: TLabel;
    procedure Label5Click(Sender: TObject);
    procedure Timer_ballTimer(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure Shape2ContextPopup(Sender: TObject; MousePos: TPoint;
      var Key: Word; Shift: TShiftState);
    procedure Shape1ContextPopup(Sender: TObject; MousePos: TPoint;
      var Key: Char);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  const
   links = 2;
   rechts = 1;
var
    FSpiel: TFSpiel;
  Balltop, Ballleft, Richtung, LeftStep, TopStep :Integer;

implementation
{$R *.dfm}

procedure TFSpiel.Shape1ContextPopup(Sender: TObject; MousePos: TPoint;
  var Key: Char);
begin
  case key of
     'w' : begin
             Spieler1.Top := Spieler1.Top-12;
           end;
     's' : begin
             Spieler1.Top := Spieler1.Top+12;
           end;
end;
end;

procedure TFSpiel.Shape2ContextPopup(Sender: TObject; MousePos: TPoint;
  var Key: Word; Shift: TShiftState);
begin
  case key of
    vk_up : begin
      Spieler2.Top := spieler2.Top-12;
    end;
    vk_down : begin
      Spieler2.Top := Spieler2.Top+12;
    end;
end;
end;

procedure TFSpiel.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  case key of
    vk_up : begin
      if Spieler2.Top >=55 then begin
       spieler2.Top := spieler2.top-12;
            end;
                          end;
    vk_down : begin
      if Spieler2.Top <=348 then begin
       Spieler2.Top := spieler2.top+12;
            end;
                            end;
end;
end;

procedure TFSpiel.FormKeyPress(Sender: TObject; var Key: Char);
 begin
  case key of
    'w' : begin
             if spieler1.top>=55 then begin
               spieler1.Top := spieler1.Top-12;
             end;
           end;
     's' : begin
              if spieler1.Top<=348 then begin
                spieler1.Top := spieler1.Top+12;
          end;
          end;
 end;
end;

procedure TFSpiel.Timer_ballTimer(Sender: TObject);
begin
  Sh_Ball.Visible:=true;

  if TopStep<0 then   {Ball bewegt sich nach oben}
  begin
    if sh_Ball.Top <=49 then TopStep:=TopStep*(-1); {Ball trifft oben, Richtung umdrehen}
  end
  else                {TopStep>=0, Ball bewegt sich nach unten}
  begin
    if sh_Ball.Top >=390 then TopStep:=TopStep*(-1); {Ball trifft unten, Richtung umdrehen}
  end;
  sh_Ball.Top := sh_Ball.top+TopStep;
  if LeftStep<0 then {Richtung=links}
  begin
    if sh_Ball.Left <=44-(sh_ball.width) then begin
       Punkte_Zaehlen(SpRechts);
      LeftStep:=Leftstep*(-1);
    end;
  end
  else {Richtung=rechts}
  begin
    if sh_Ball.Left >=672-(sh_ball.width) then LeftStep:=Leftstep*(-1);
    //ab hier abprallen von balken
    if (sh_ball.left<spieler1.left+spieler1.width) and (sh_ball.top>spieler1.top) and
 (sh_ball.top+sh_ball.height<spieler1.top+spieler1.height) then
  LeftStep:=Leftstep*(-1);
if (sh_ball.left+sh_ball.width>spieler2.left) and (sh_ball.top>spieler2.top) and
(sh_ball.top+sh_ball.height<spieler2.top+spieler2.height) then
  TopStep:=TopStep*(-1);
  end;
  //ende abprallen von balken
  sh_Ball.Left := sh_Ball.left+LeftStep;
end;

procedure TFSpiel.Label5Click(Sender: TObject);
var i: Integer;
     Winkel : real;
     Richtung : extended;

begin

   Timer_Ball.Enabled := true;
   randomize;
   LeftStep :=5*(random(4)+1);
   Winkel :=random(360)+1;
   if Winkel>180 then LeftStep:=LeftStep*(-1);

   Winkel:=Winkel*Pi/180;
   TopStep:=trunc(10*cos(Winkel));
   Timer_Ball.Interval:=5*(random(10)+1);
   if timer_ball.Interval <60 then timer_ball.Interval:=40;
   Ballleft:= random(540)+40;
   Balltop:= random(150)+50;
      sh_Ball.Left := Ballleft;
       sh_Ball.Top := Balltop;

end;

end.

Kroko1999 18. Mai 2006 06:18

Re: Delphi PingPong spiel schulprojekt help
 
schicke mir mal die Aufgabe auf einem 100 Euronen-Schein, ich kann deine Quelle so nicht lesen :wink:

P S:Wer soll die Hausaufgaben machen :?:

mquadrat 18. Mai 2006 09:48

Re: Delphi PingPong spiel schulprojekt help
 
In deinem Block "Richtung links" ist doch gar kein Code für das Abprallen.... Wieso sollte der Ball das also tun...

turboPASCAL 18. Mai 2006 12:58

Re: Delphi PingPong spiel schulprojekt help
 
Für die richtig Faulen, Anwesende Ausgenommen, gigt es auch eine Suchfunktion. Mit Hilfe des Suchwortes "Pong" oder "Phong" sollte sich etwas erreichen lassen.
Mann muss den Code dann nurnoch durchdenken und Nachvollziehen können...

Keine weiteren Hilfestellungen. ;)

Travis 19. Mai 2006 20:15

Re: Delphi PingPong spiel schulprojekt help
 
hmm naja thx
delphi is halt net ganz so meine stärke und tu mich ziemlich schwer aber naja dann werd ich wohl doch wieder ganz lange nachdenken müssn ^^

AndiSt 22. Mai 2006 10:12

Re: Delphi PingPong spiel schulprojekt help
 
ich hätte es einfach mit einer Mainschleife gemacht wie man z.B. in den meisten Basic Programmiersprachen benutzt. Das ist zwar net sehr elegant aber das Programm/Spiel was du machen musst ist ja auch nicht gerade das schwerste... Also unnötig Kompley machn ist auch net das wahre

AndiSt 22. Mai 2006 10:14

Re: Delphi PingPong spiel schulprojekt help
 
ausserdem ist es net sehr günstig sowas im Forum nachzusehen, da hier sowieso keiner deinen Quelltext auf anhib durchschaut und ich bezweifle stark das sich Leute die Zeit nehmen dafür :gruebel:

turboPASCAL 22. Mai 2006 10:32

Re: Delphi PingPong spiel schulprojekt help
 
@AndiSt, du kannst (deine) Beiträge editieren. Doppelposts sind hier nicht gern gesehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz