Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi breakout clon, datei problem (https://www.delphipraxis.net/111088-breakout-clon-datei-problem.html)

geojanm 29. Mär 2008 11:43


breakout clon, datei problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, für ein Infoabschlussprojekt habe ich mir einen Breakoutclon vorgenommen. Dabei hänge ich gerade an der Dateiarbeit bzw deren umsetzung. Ich speichere das Level in der DAtei Level.txt per Editor (siehe Anhang).beim auslesen und anschließenden Zeichnen passiert aber der Fehler, dass alle blöcke immer länger werden. dabei muss es sich um einen "logischen" Fehler handeln. Könntet ihr eventuell mal drüber schauen und mir helfen diesen fehler zu finden.
Vielen Dank schonmal.

Delphi-Quellcode:
for i:=0 to endofarray do
if ((ball_xl<=block[i].xr)and(ball_xr>=block[i].xl)and(ball_yo<=block[i].yu)and(ball_yu>=block[i].yo)) then
Ändere Richtung, deaktivieren den Block und erhöhe die Punkte
das währe dann noch meine kollision zu den einzelnen blöcken. das ganze funktioniert jetzt auch noch nicht. ich weiß aber nicht, ob das jetzt, an dem oben genannten fehler liegt. ich habe mir das ganze mal aufgezeichnet. mit meinem logischen verständniss ist die schnittmenge dieser anweisungen genau der block, sodass die entsprechenden anweisungen ausgeführt werden. das ganze klappt allerdings auch nicht. wieder die logik, oder wegen dem anderen fehler?

taaktaak 29. Mär 2008 12:23

Re: breakout clon, datei problem
 
Moin, Moin,

1. Ich kann in Unit1 nicht entdecken, dass hier etwas in der Datei gespeichert wird.
2. Die Datei wird zwar um Lesen geöffnet, aber nicht wieder geschlossen.
3. Warum verwendest du in FormKeyDown "GetAsyncKeystate" und nicht einfach "Key"?

Die Reaktion auf die Tasten CursorLeft/Right ist viel zu träge - oder?

geojanm 29. Mär 2008 12:28

Re: breakout clon, datei problem
 
zu 1. in der datei wird auch nichts gespeichert. ich habe die level datei einfach nur mit dem editor geschrieben und öffne diese dann in delphi.

zu 2. danke, das habe ich gleich geändert. nachdem alles ausgelesen wird schließe ich die datei jetzt.

zu 3. in der schule hatten wir nur diese eine methode, ist deine methode für diesen fall von vorteil?

Vielen Dank für die Antwort

taaktaak 29. Mär 2008 12:39

Re: breakout clon, datei problem
 
Hmmmmm, bin ich nun für Spiele zu alt???? Es ist schon frustierend :oops:

Na, ist ein wenig kürzer, ohne "GetAsync..." zu arbeiten:

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender:TObject;var Key:Word;Shift:TShiftState);
begin
  if Key=VK_RIGHT then
    if paddle_xr<image1.ClientWidth then begin
      paddle_xl:=paddle_xl+10;
      paddle_xr:=paddle_xr+10;
      end;

  if Key=VK_LEFT then
    if paddle_xl>0 then begin
      paddle_xl:=paddle_xl-10;
      paddle_xr:=paddle_xr-10;
      end;
end;
Aber trotzdem ist die Reaktion nach meinem Empfinden immer noch zu träge

taaktaak 29. Mär 2008 12:57

Re: breakout clon, datei problem
 
Das Bedienungsproblem kann dadurch gelöst werden, dass die Tastaturabfrage in die TimerMethode integeriert wird; damit sind wir dann wieder bei der ursprünglichen "GetAsync.." Lösung. Nun reagiert der "Schläger" zufriedenstellend schnell:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer;
begin

  if GetAsyncKeyState(vk_Right)<>0 then
    if paddle_xr<image1.ClientWidth then begin
      paddle_xl:=paddle_xl+10;
      paddle_xr:=paddle_xr+10;
      end ;

  if GetAsyncKeyState(vk_left)<>0 then
    if paddle_xl>0 then begin
     paddle_xl:=paddle_xl-10;
     paddle_xr:=paddle_xr-10;
     end;
//...
//..
Dein Problem mit der willkürlichen Änderung der Blocklängen habe ich leider nicht wirklich verstanden :stupid:

geojanm 30. Mär 2008 18:42

Re: breakout clon, datei problem
 
das mit der tastatur habe ich so übernommen. das ist wirklich um einiges besser. vielen dank dafür.
hat jemand vielleicht noch eine idee, warum die blöcke so seltsam aussehhen?

geojanm 30. Mär 2008 20:56

Re: breakout clon, datei problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich habe heute noch etwas weiter gemacht. das ist das resultat für heute. leider kann ich den fehler immer noch nicht finden. sowohl in der dateiarbeit als auch in der kollision. Am Start habe ich einmal eine message ausgegeben, die die die jeweiligen rechten y werte ausgeben. diese sind korrekt. auch in der zeichenfunktion kann ich keinen fehler entdecken.
was meint ihr zu dem "menü" kann man das so machen? die bedienung geht über die pfeiltasten und die enter bzw die escape taste. tw habe ich allerdings noch flackerprobleme, wenn ich auch probleme mit den blöcken habe. daran bitte nicht stören^^
dann würde ich gerne eure meinung und eure ratschläge hören. besonders zu dem blockproblem....
Vielen Dank

geojanm 31. Mär 2008 18:27

Re: breakout clon, datei problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
das eigentlich problem ist gelöst. ich hatte eine doppelzuweisung beim auslesen der dateien.
jetzt habe ich aber noch eine andere frage. gibt es eine funktion, mit dem ich text eingeben kann? damit meine ich etwas wie die funktion
Delphi-Quellcode:
name:=InputBox('Neuer Highscore', 'Bitte gib deinen Namen ein: ', '');
das ganze aber ohne diese box. ich würde das gerne in meine oberfläche integrieren, sodass das mit dieser box ziemlich doof aussieht.

Vielen Dank


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 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