![]() |
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. |
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 :?: |
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...
|
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. ;) |
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 ^^ |
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
|
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:
|
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 14:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz