AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Schulaufgabe Projekt 4 - Pong
Thema durchsuchen
Ansicht
Themen-Optionen

Schulaufgabe Projekt 4 - Pong

Ein Thema von Brotsuppe · begonnen am 18. Apr 2007 · letzter Beitrag vom 26. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
Brotsuppe

Registriert seit: 19. Dez 2006
3 Beiträge
 
#1

Schulaufgabe Projekt 4 - Pong

  Alt 18. Apr 2007, 17:18
Hallo liebe Leute, also ich benutze Turbo Delphi und muss Pong programmieren und stellte schnell fest, das ich schwierigkeiten bekomme ^^. Erste Frage: Wie kriege ich das hin, das etwas passiert wenn ich den Buchstaben "a" oder "s" drücke, habe den Befehl lange gesucht aber nicht gefunden...

Also es sieht genau so aus wie Pong und besteht aus 4 Panels als Rand, 2 Panels als spieler und einer Tshape als Ball, wie muss ich das programmieren, das der Ball bei den Panels "abprallt"? Ich denke an eine ständige Abfrage, bräuchte aber eure hilfe, ich danke schon mal im Vorraus für Antworten.

mfg Dennis

[edit=SirThornberry]Titel korrigiert. Nächstes mal bitte so viel Zeit nehmen diesen richtig zu schreiben. Außerdem Programmiersprache auf Delphi Win32 korrigiert - Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat
J.P.

Registriert seit: 2. Sep 2006
Ort: Bonn
131 Beiträge
 
Delphi 6 Professional
 
#2

Re: Schulaufgabe Porjekt 4 - Pong

  Alt 18. Apr 2007, 17:22
Womit willst du das realisieren?

An deine erste frage:
evtl. über die unit keyboard und die funktion iskeypressed. Wenn du nicht wie in GLScene nen Cadencer verwendest, dann über einen Timer. (alle 100ms eine abfrage)

Oops, sry hatte überlesen,dass du direkt panels verwendest.
J.P.
...mfG


Phil
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Schulaufgabe Porjekt 4 - Pong

  Alt 18. Apr 2007, 17:38
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  keyPreview:=true;
end;
Und dann die Ereignisse onKeyPress oder onKeyDown und onKeyUp so
programmieren das sich etwas tut.

Und du arbeitest mit .net?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Brotsuppe

Registriert seit: 19. Dez 2006
3 Beiträge
 
#4

Re: Schulaufgabe Porjekt 4 - Pong

  Alt 18. Apr 2007, 17:52
Hatte mich verklick ^^, ich werde das mal ausprobieren, bin noch ein kleiner anfänger *gg*, danke
  Mit Zitat antworten Zitat
Brotsuppe

Registriert seit: 19. Dez 2006
3 Beiträge
 
#5

Re: Schulaufgabe Porjekt 4 - Pong

  Alt 18. Apr 2007, 17:54
mache ich das dann so? If (key = "a") Then? so habe ich das nämlich schon mal irgendwo gelesen, oder steht das auch inner borlandhilfe?
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Schulaufgabe Porjekt 4 - Pong

  Alt 18. Apr 2007, 18:08
Also wenn du gar keine Ahnung hast, dann versuch doch bitte erst mal ein paar Tutorials von dsdt.info zu lesen und deine Fragen mittels der Forensuche selbst zu beantworten...

Eigentlich muss auch für jede Frage (sofern sie noch nicht vorhanden ist) ein neues Thema aufgemacht werden...

Du fragst uns hier nämlich Grundfragen unter dem Thema Pong...
Dazu gibts es schon massig Themen hier im Forum (da das oft als Einsteiger-Projekt gewählt wird)...
Einfach mal auf den "Suchen"-Button klicken und "Pong" eingeben...


Wegen Grundsätzlichen Aufbau von so einem Spiel:
Man nehme einen Timer (eigentlich einen Multimedia-Timer... aber es reicht auch [erstmal] ein Standard-Timer),
setze "doublebuffered:=true" (nicht im Ontimer... am besten im OnCreate),
und fange im OnTimer Tastatur-Eingaben mit
Delphi-Quellcode:
if getasynckeystate(vk_down)<>0 then VerrückeOderSo; //an der Stelle musst du mal nach "Virtual keys" suchen!!!
if getasynckeystate(Ord('A'))<>0 then VerrückeOderSo;
Ich hoffe ich konnte erst mal einen kleinen Einblick verschaffen...
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Schulaufgabe Porjekt 4 - Pong

  Alt 18. Apr 2007, 18:42
Zitat von Brotsuppe:
mache ich das dann so? If (key = "a") Then? so habe ich das nämlich schon mal irgendwo gelesen, oder steht das auch inner borlandhilfe?
Das hängt davon ab, welches Ereignis du benutzt.
Im onKeyPress ist key ein char -> if key = 'a' then ..
Im OnKeyDown und OnKeyUp ist key ein word ->
Delphi-Quellcode:
if (key = ord('A')) and not (shift = [ssShift]) then
  ..
Grüße
Klaus

[edit] mumpitz korrigiert [/edit]
Klaus
  Mit Zitat antworten Zitat
snake41300

Registriert seit: 23. Okt 2006
27 Beiträge
 
Delphi 7 Personal
 
#8

Re: Schulaufgabe Porjekt 4 - Pong

  Alt 18. Apr 2007, 19:11
Hi,
ich bin gerade an einem ähnlichen Projekt und selber noch anfänger ich habe das Ballabprallproblem so Gelöst(geht eventuell auch einfacher):

1. Ich habe einen Timer erstellt mit Intervall 10millisec
2. Dann habe ich zwei integer Variablen für die Geschwindigkeit angelegt speedx und speedy damit kann man hinterher die Flugbahn des Balls beeinflussen, die Variablen habe ich am Anfang beide auf 5 gesetzt
3. Jetzt muss man das Abprallen an den Wänden hinbekommen z.b so: if ball.top > 768 then ballspeedy:=-ballspeedy; dadurch wird die Geschwindigkeit umgekehrt und der Ball springt ab, das gleiche kann man dann für Decke machen
4.Damit der Ball vom Schläger abprallt müssste das ganze übertragen auf dein Spiel etwa so aussehen: if 1000<ball.left then if ball.top>schläger.top then if ball.left+8<schläger.top +Schlägerhöhe then speedx:=-speedx;
5. Dann muss nur am Ende des Timers stehen das ball.left:=ball.left+speedx ist und ball.top:=ball.top+speedy;

ich hoffe es hilft dir ein bisschen weiter

Mfg Snake
  Mit Zitat antworten Zitat
PiQ

Registriert seit: 6. Okt 2006
42 Beiträge
 
Delphi 7 Personal
 
#9

Re: Schulaufgabe Porjekt 4 - Pong

  Alt 18. Apr 2007, 19:24
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of // sind die tasten i und k bei mir
    73 : begin
      if shape2.Top > 5
      then shape2.Top := shape2.Top - 4;
          end;
    75 : begin
      if shape2.Top + shape2.Height < button1.Top //als unteren rand gesetz den button; und die 5 oben als oberen
      then shape2.Top := shape2.Top + 4; // +4 = bewegung des panels
          end;
so hab ichs gemacht ... ist aber auch noch nicht so lange her bin auch anfänger hab ne weile gebraucht dafür ^^

Hier eine Liste der wichtigsten Tastencodes:

9 = TAB-Taste
13 = Eingabetaste (RETURN)
16 = Umschalt-Taste (Shift)
17 = STRG-Taste (CTRL)
18 = ALT-Taste
27 = Escape-TAste (ES)
32 = Leertaste
37 = Cursor links
38 = Cursor hoch
39 = Cursor rechts
40 = Cursor runter
48 (für die 0) bis 57 (für die 9) = Ziffern
65 (für das a) bis 90 (für das z) = Buchstabentasten
Hinweis:
für die Großbuchstaben müssen Sie die Buchstabentaste in Verbindung mit der Umschalttasten drücken
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Schulaufgabe Porjekt 4 - Pong

  Alt 18. Apr 2007, 19:27
@ Klaus:

Wenn man OnKeyDown/Press verwendet, dann tritt doch das Problem mit der Anschlagverzögerung auf, oder irre ich mich da???

Also: dass der erste Anschlag sofort umgesetzt wird, dann eine Pause (je nach Einstellung in Windoof) da ist, und danach die "restlichen" Anschläge kommen...

So ungefähr (wäre es ein Diagramm, so wäre die Y-Achse eine Zeitleiste:
Code:
#      # # # # # # #
Deshalb finde ich es besser abzufragen, ob die Taste im Moment gedrückt ist (getasynckeystate)...

@ Snake:
Ja, so würde ich das auch alles machen...
Außer: Ich habe manchmal bei meinem Pong das Problem feststellen müssen, dass der Ball beim Umlenken des Y-Werts am Rand fest hing.
Das liegt daran, dass, wenn er zu schnell ist, das Umlenken unendliche Male ausgeführt wird...
Deshalb habe ich das Umlenken für jede Seite extra vorgenommen:
Delphi-Quellcode:
YGeschw := Abs(YGeschw); //für oben
YGeschw := -Abs(YGeschw); //für unten
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:12 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