|
Registriert seit: 21. Okt 2008 3 Beiträge |
#1
Hallo Ihr,
ich bräuchte eure Hilfe für ein Arkanoid ähnliches Spiel. Es geht um folgendes Problem und zwar um Die Steine bzw Blocks welche man treffen muss damit diese verschwinden. Das ganze muss mit Canvas Draw geschehen. Hier ist der Quellcode
Delphi-Quellcode:
Ich hoffe ihr könnt mir helfen
unit mcanvanoid;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg; type TForm1 = class(TForm) BtBall_bewegen: TButton; TiBall: TTimer; ImZeichenflaeche: TImage; ImPaddle_Leben1: TImage; ImPaddle_Leben2: TImage; ImPaddle_Leben3: TImage; LbPunkte: TLabel; Label1: TLabel; Label2: TLabel; procedure FormCreate(Sender: TObject); procedure BtBall_bewegenClick(Sender: TObject); procedure TiBallTimer(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private Stone_green: TIcon; Stone_orange: TIcon; Ball: TIcon; Level1: TJpegImage; Level2: TJpegImage; Level3: TJpegImage; Startscreen: TJpegImage; Game_Over_lava: TJpegImage; Paddle: TIcon; zX: integer; {Ball X Position} zY: integer; {Ball Y Postion} zBewegungX: integer ; {Ball X Richtung} zBewegungY: integer ; {Ball Y Richtung} zPaddleX: integer; {xPosition paddle} x_gedrueckt: boolean; {Paddle xTaste} y_gedrueckt: boolean; {Paddle yTaste} zX_start: integer; zY_start: integer; zLevel: integer; zPunkte: integer; zSteine: integer; zSichtbar1: integer; zSichtbar2: integer; zSichtbar3: integer; zSichtbar4: integer; zSichtbar5: integer; zSichtbar6: integer; zSichtbar7: integer; zSichtbar8: integer; zSichtbar9: integer; zSichtbar10: integer; zSichtbar11: integer; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Ball := TIcon.Create; Ball.LoadFromFile ('Ball.ico'); Level1 := TJpegImage.Create; Level1.LoadFromFile ('Level1.jpeg'); Level2 := TJpegImage.Create; Level2.LoadFromFile ('Level2.jpeg'); Level3 := TJpegImage.Create; Level3.LoadFromFile ('Level3.jpeg'); {Laden der Bilder} Paddle := TIcon.Create; Paddle.LoadFromFile ('Paddle.ico'); Startscreen := TJpegImage.Create; Startscreen.LoadFromFile ('Startscreen.jpg'); Game_Over_lava := TJpegImage.Create; Game_Over_lava.LoadFromFile ('Game_Over_lava.jpeg'); Stone_green := TIcon.Create; Stone_green.LoadFromFile ('Stone_green.ico'); Stone_orange := TIcon.Create; Stone_orange.LoadFromFile ('Stone_orange.ico'); keypreview:=true; end; procedure TForm1.FormActivate(Sender: TObject); begin TiBall.enabled := False; y_gedrueckt := False; x_gedrueckt := False; Form1.ImZeichenflaeche.Canvas.Draw (0,0,Startscreen); BtBall_bewegen.Caption := ' Start '; zLevel := 1; zSichtbar1:= 1; zSichtbar2:= 1; zSichtbar3:= 1; zSichtbar4:= 1; zSichtbar5:= 1; zSichtbar6:= 1; zSichtbar7:= 1; zSichtbar8:= 1; zSichtbar9:= 1; zSichtbar10:= 1; zSichtbar11:= 1; zSteine := 0; zPunkte := 0; end; procedure TForm1.BtBall_bewegenClick(Sender: TObject); begin If TiBall.Enabled = True then TiBall.Enabled := false else TiBall.Enabled := True; zX := zX_Start; zY := zY_Start; ImPaddle_Leben1.Visible := True; ImPaddle_Leben2.Visible := True; ImPaddle_Leben3.Visible := True; zLevel := 1; zSichtbar1:= 1; zSichtbar2:= 1; zSichtbar3:= 1; zSichtbar4:= 1; zSichtbar5:= 1; zSichtbar6:= 1; zSichtbar7:= 1; zSichtbar8:= 1; zSichtbar9:= 1; zSichtbar10:= 1; zSichtbar11:= 1; zSteine := 0; zPunkte := 0; Label2.Caption:= IntToStr(zPunkte); If TiBall.Enabled = True then BtBall_bewegen.Caption := ' Neustart ' else BtBall_bewegen.Caption := ' Start '; If TiBall.Enabled = true then zLevel :=1; If zPunkte =30 then zLevel := 2; If zPunkte =60 then zLevel := 3; if zLevel = 1 then zBewegungX := +5; {Ball Bewegungen } zBewegungY := +5; zPunkte := 0; zX_Start := 0; zY_start := 250; zX := zX_Start; {Start Ball} zY := zY_start; zPaddleX := 250; {Paddle X Start} end; procedure TForm1.TiBallTimer(Sender: TObject); begin If zLevel= 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (0,0,Level1); Form1.ImZeichenflaeche.Canvas.Draw (zX,zY,Ball); Form1.ImZeichenflaeche.Canvas.Draw (zPaddleX,460,Paddle); zX := zX+zBewegungX ; zY := zY+zBewegungY ; if (y_gedrueckt = true)and (zPaddleX >= 0) then zPaddleX := zPaddleX -10; if (X_gedrueckt = true)and (zPaddleX <= ImZeichenflaeche.Width -65 ) then zPaddleX := zPaddleX +10; If (zX <= 0) or (zX >= ImZeichenflaeche.Width -13) then zBewegungX := -zBewegungX; If (zY <= 0) then zBewegungY := -ZBewegungY; If (zY >= 447)and (zY >= 445 ) and (zX >= zPaddleX) and not (zX > zPaddleX + 65) then zBewegungY := -ZBewegungY; If (zY >= ImZeichenflaeche.Height + 2) and (ImPaddle_Leben3.Visible = True) then begin ImPaddle_Leben3.Visible := False; zY := zy_start; zX := zx_start; end; If (zY>=ImZeichenflaeche.Height+3) and (ImPaddle_Leben2.Visible = True) then begin ImPaddle_Leben2.Visible := False; zY := zy_start; zX := zx_Start; end; If (zY >= ImZeichenflaeche.Height+4)and (ImPaddle_Leben1.Visible = True) then begin ImPaddle_Leben1.Visible := False; zY := zy_start; zX := zx_Start; end; If (zY >= ImZeichenflaeche.Height+5) and (ImPaddle_Leben1.Visible = False) then begin Form1.ImZeichenflaeche.Canvas.Draw (0,0,Game_Over_lava); TiBall.enabled := False; end; [color=#ff001f] if zSichtbar1 = 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (50,100,Stone_green); if (zY >= 95)and (zY >= 105 ) and (zX >= 50) and not (zX >= 85)and (zX >= 85)and not (zX >= 120) then zBewegungY := -ZBewegungY; zPunkte := zPunkte +1; zSichtbar1 := 0; zSteine:= zSteine +1; end; if zSichtbar2 = 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (85,100,Stone_green); if (zY >= 95)and (zY >= 105 ) then zBewegungY := -ZBewegungY; zPunkte := zPunkte +1; zSichtbar2 := 0; zSteine:= zSteine +1; end; if zSichtbar3 = 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (120,100,Stone_green); if (zY >= 95)and (zY >= 105 ) and (zX >= 120) and not (zX >= 155) then zBewegungY := -ZBewegungY; zPunkte := zPunkte +1; zSichtbar3 := 0; zSteine:= zSteine +1; end; if zSichtbar4 = 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (155,100,Stone_green); if (zY >= 95)and (zY >= 105 ) and (zX >= 155) and not (zX >= 190) then zBewegungY := -ZBewegungY; zPunkte := zPunkte +1; zSichtbar4 := 0; zSteine:= zSteine +1; end; if zSichtbar5 = 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (190,100,Stone_green); if (zY >= 95)and (zY >= 105 ) and (zX >= 190) and not (zX >= 225) then zBewegungY := -ZBewegungY; zPunkte := zPunkte +1; zSichtbar5 := 0; zSteine:= zSteine +1; end; if zSichtbar6 = 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (225,100,Stone_green); if (zY >= 95)and (zY >= 105 ) and (zX >= 225) and not (zX >= 260) then zBewegungY := -ZBewegungY; zPunkte := zPunkte +1; zSichtbar6 := 0; zSteine:= zSteine +1; end; if zSichtbar7 = 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (260,100,Stone_green); if (zY >= 95)and (zY >= 105 ) and (zX >= 260) and not (zX >= 295) then zBewegungY := -ZBewegungY; zPunkte := zPunkte +1; zSichtbar7 := 0; zSteine:= zSteine +1; end; if zSichtbar8 = 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (295,100,Stone_green); if (zY >= 95)and (zY >= 105 ) and (zX >= 295) and not (zX >= 330) then zBewegungY := -ZBewegungY; zPunkte := zPunkte +1; zSichtbar8 := 0; zSteine:= zSteine +1; end; if zSichtbar9 = 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (330,100,Stone_green); if (zY >= 95)and (zY >= 105 ) and (zX >= 330) and not (zX >= 365) then zBewegungY := -ZBewegungY; zPunkte := zPunkte +1; zSichtbar9 := 0; zSteine:= zSteine +1; end; if zSichtbar10 = 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (365,100,Stone_green); if (zY >= 95)and (zY >= 105 ) and (zX >= 365) and not (zX >= 400) then zBewegungY := -ZBewegungY; zPunkte := zPunkte +1; zSichtbar10 := 0; zSteine:= zSteine +1; end; if zSichtbar11 = 1 then begin Form1.ImZeichenflaeche.Canvas.Draw (400,100,Stone_green); if (zY >= 95)and (zY >= 105 ) and (zX >= 400) and not (zX >= 435) then zBewegungY := -ZBewegungY; zPunkte := zPunkte +1; zSichtbar11 := 0; zSteine:= zSteine +1; end; if zSteine = 6 then begin zSteine := 0 ; zSichtbar1:= 1; zSichtbar2:= 1; zSichtbar3:= 1; zSichtbar4:= 1; zSichtbar5:= 1; zSichtbar6:= 1; zSichtbar7:= 1; zSichtbar8:= 1; zSichtbar9:= 1; zSichtbar10:= 1; zSichtbar11:= 1; end; [/color] end; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key = ORD(89)) then begin y_gedrueckt := true; end; if (key = ORD(88)) then begin x_gedrueckt := true; end; end; procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key = ORD(89)) then begin y_gedrueckt := false; end; if (key = ORD(88)) then begin x_gedrueckt := false; end; end; end. PS das mit Level braucht ihr nicht zubeachten EDIT: HAb jetzt die ein wenig überarbeitete Version reingstellt naja trotzdem habe ich immer noch das PRoblem das einmal am ANfang gezeichnet die Blöcke gezeichnet werden aber dnach sofort wieder verschwinden. Edit 2: So im Anhang ist jetzt Das Spiel soweit wie ich es hinbekommen habe könnt euch ja slebst den Fehler ansehn |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |