![]() |
Musik + Mehrer Bilder
ich hab noch 1 Problem + 1 Frage
Die Frage: ich wollte mal fragen ob es möglich ist einfach eine mp3-datein einzufügen die die ganze zeit im hintergrund läuft Das Problem: Ich wollte machen das mein programm einen zähler hat der die schüsse durchzählt und maximal 5 schüsse pro bildschirm hat aber er nimmt immer nur den 1. und übermalt das dann am ausgang hier mein quellcode
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus, Buttons; type TForm1 = class(TForm) background: TImage; player: TImage; enemy1: TImage; MainMenu1: TMainMenu; Datei1: TMenuItem; Start1: TMenuItem; Beenden1: TMenuItem; Timer1: TTimer; bullet1: TImage; planet1: TImage; bullet2: TImage; bullet3: TImage; bullet4: TImage; bullet5: TImage; Timer2: TTimer; enemy2: TImage; enemy3: TImage; explosion1: TImage; Timer3: TTimer; procedure Timer3Timer(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Beenden1Click(Sender: TObject); procedure Start1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; x,y:integer; {Schiff-X/Y Koordinaten} e,f,ee,ff:integer; {Planet-X/Y Koordinaten} c,cc,ccc,cccc,ccccc,d,dd,ddd,dddd,ddddd:integer; {Schuss-X/Y Koordinaten} a,aa,aaa,b,bb,bbb:integer; {Feinde-x/y Koordinaten} g,h,k:integer; {Explosion-x/y Koordinate} p:integer; z:boolean; implementation {$R *.dfm} procedure Schuss; begin p:=0; c:=x+50; d:=y+23; cc:=x+50; dd:=y+23; ccc:=x+50; ddd:=y+23; cccc:=x+50; dddd:=y+23; ccccc:=x+50; ddddd:=y+23; form1.bullet1.picture.loadfromfile('bullet1.bmp'); form1.bullet2.picture.loadfromfile('bullet1.bmp'); form1.bullet3.picture.loadfromfile('bullet1.bmp'); form1.bullet4.picture.loadfromfile('bullet1.bmp'); form1.bullet5.picture.loadfromfile('bullet1.bmp'); form1.bullet1.Visible:=false; form1.bullet2.Visible:=false; form1.bullet3.Visible:=false; form1.bullet4.Visible:=false; form1.bullet5.Visible:=false; form1.bullet1.Left:=c; form1.bullet1.Top:=d; form1.bullet2.Left:=cc; form1.bullet2.Top:=dd; form1.bullet3.Left:=ccc; form1.bullet3.Top:=ddd; form1.bullet4.Left:=cccc; form1.bullet4.Top:=dddd; form1.bullet5.Left:=ccccc; form1.bullet5.Top:=ddddd; end; procedure Planet; begin e:=random(250); f:=random(200); form1.planet1.Left:=e; form1.planet1.Top:=f; form1.planet1.Picture.LoadFromFile('planet5.bmp'); end; procedure Enemy; begin a:=random(300)+100; b:=random(400)+50; aa:=random(300)+100; bb:=random(400)+50; aaa:=random(300)+100; bbb:=random(400)+50; form1.enemy1.Picture.loadfromfile('enemy1.bmp'); form1.enemy2.picture.LoadFromFile('enemy1.bmp'); form1.enemy3.picture.LoadFromFile('enemy1.bmp'); form1.enemy1.left:=a; form1.enemy1.top:=b; form1.enemy2.left:=aa; form1.enemy2.top:=bb; form1.enemy3.left:=aaa; form1.enemy3.top:=bbb; end; procedure Kollision1; begin k:=0; g:=a; h:=b; form1.explosion1.left:=g; form1.explosion1.Top:=h; form1.explosion1.picture.LoadFromFile('explosion1.bmp'); form1.explosion1.Visible:=false; end; procedure Neu; begin form1.doublebuffered:=true; Enemy; Schuss; Planet; Kollision1; x:=0; y:=150; form1.background.picture.loadfromfile('space1.bmp'); form1.player.picture.loadfromfile ('player.bmp'); form1.player.Left:=x; form1.player.Top:=y; z:=true; end; procedure TForm1.Start1Click(Sender: TObject); begin Neu; end; procedure Feuern; begin c:=x+50; d:=y+23; cc:=x+50; dd:=y+23; ccc:=x+50; ddd:=y+23; cccc:=x+50; dddd:=y+23; ccccc:=x+50; ddddd:=y+23; if p=0 then begin form1.bullet1.visible:=true; p:=p+1; end; if p=1 then begin form1.bullet2.Visible:=true; p:=p+1; end; if p=2 then begin form1.bullet3.Visible:=true; p:=p+1; end; if p=3 then begin form1.bullet4.Visible:=true; p:=p+1; end; if p=4 then begin form1.bullet5.Visible:=true; p:=0; end; form1.Timer2.enabled:=true; end; procedure Kollision2; begin form1.explosion1.Visible:=true; k:=0; end; procedure Tform1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin //form1.Caption:=inttostr(key); if x=0 then begin if y=0 then begin if key=113 then Neu; if p=5 then p:=1; if key=37 then x:=x; if key=38 then y:=y; if key=39 then x:=x+5; if key=40 then y:=y+5; if key=17 then Feuern; end else begin if y=450 then begin if key=113 then Neu; if p=5 then p:=1; if key=37 then x:=x; if key=38 then y:=y-5; if key=39 then x:=x+5; if key=40 then y:=y; if key=17 then Feuern; end else begin if key=113 then Neu; if p=5 then p:=1; if key=37 then x:=x; if key=38 then y:=y-5; if key=39 then x:=x+5; if key=40 then y:=y+5; if key=17 then Feuern; end; end end else begin if y=0 then begin if key=113 then Neu; if p=5 then p:=1; if key=37 then x:=x-5; if key=38 then y:=y; if key=39 then x:=x+5; if key=40 then y:=y+5; if key=17 then Feuern; end else begin if x=450 then begin if y=450 then begin if key=113 then Neu; if p=5 then p:=1; if key=37 then x:=x-5; if key=38 then y:=y-5; if key=39 then x:=x; if key=40 then y:=y; if key=17 then Feuern; end else begin if y=0 then begin if key=113 then Neu; if p=5 then p:=1; if key=37 then x:=x-5; if key=38 then y:=y; if key=39 then x:=x; if key=40 then y:=y+5; if key=17 then Feuern; end else begin if key=113 then Neu; if p=5 then p:=1; if key=37 then x:=x-5; if key=38 then y:=y-5; if key=39 then x:=x; if key=40 then y:=y+5; if key=17 then Feuern; end end end else begin if y=450 then begin if key=113 then Neu; if p=5 then p:=1; if key=37 then x:=x-5; if key=38 then y:=y-5; if key=39 then x:=x+5; if key=40 then y:=y; if key=17 then Feuern; end else begin if key=113 then Neu; if p=5 then p:=1; if key=37 then x:=x-5; if key=38 then y:=y-5; if key=39 then x:=x+5; if key=40 then y:=y+5; if key=17 then Feuern; end; end; end; end; end; procedure Tform1.Timer1Timer(Sender: TObject); begin player.Left:=x; player.top:=y; if x=450 then x:=x+0; if y=450 then y:=y+0; //Schiff if (player.Left < (enemy1.Left+enemy1.Width)) and ((player.Left+player.Width)>enemy1.Left) and (player.Top < (enemy1.Top+enemy1.Height)) and ((player.Top+player.Height)> enemy1.Top) then begin form1.enemy1.Visible:=false; form1.player.Visible:=false; end; if (player.Left < (enemy2.Left+enemy2.Width)) and ((player.Left+player.Width)>enemy2.Left) and (player.Top < (enemy2.Top+enemy2.Height)) and ((player.Top+player.Height)> enemy2.Top) then begin form1.enemy2.Visible:=false; form1.player.Visible:=false; end; if (player.Left < (enemy3.Left+enemy3.Width)) and ((player.Left+player.Width)>enemy3.Left) and (player.Top < (enemy3.Top+enemy3.Height)) and ((player.Top+player.Height)> enemy3.Top) then begin form1.enemy3.Visible:=false; form1.player.Visible:=false; end; end; procedure TForm1.Timer2Timer(Sender: TObject); begin form1.bullet1.Left:=c; form1.bullet1.Top:=d; form1.bullet2.Left:=cc; form1.bullet2.Top:=dd; form1.bullet3.Left:=ccc; form1.bullet3.Top:=ddd; form1.bullet4.Left:=cccc; form1.bullet4.Top:=dddd; form1.bullet5.Left:=ccccc; form1.bullet5.Top:=ddddd; //Bullet 1 if c=490 then begin form1.bullet1.Visible:=false; c:=0; d:=0; end else begin if (bullet1.Left < (enemy1.Left+enemy1.Width)) and ((bullet1.Left+bullet1.Width)>enemy1.Left) and (bullet1.Top < (enemy1.Top+enemy1.Height)) and ((bullet1.Top+bullet1.Height)> enemy1.Top) then begin enemy1.Visible:=false; end; if (bullet1.Left < (enemy2.Left+enemy2.Width)) and ((bullet1.Left+bullet1.Width)>enemy2.Left) and (bullet1.Top < (enemy2.Top+enemy2.Height)) and ((bullet1.Top+bullet1.Height)> enemy2.Top) then begin enemy2.Visible:=false; end; if (bullet1.Left < (enemy3.Left+enemy3.Width)) and ((bullet1.Left+bullet1.Width)>enemy3.Left) and (bullet1.Top < (enemy3.Top+enemy3.Height)) and ((bullet1.Top+bullet1.Height)> enemy3.Top) then begin enemy3.Visible:=false; end; c:=c+5; end; //Bullet 2 if cc=490 then begin form1.bullet2.Visible:=false; c:=0; d:=0; end else begin if (bullet2.Left < (enemy1.Left+enemy1.Width)) and ((bullet2.Left+bullet2.Width)>enemy1.Left) and (bullet2.Top < (enemy1.Top+enemy1.Height)) and ((bullet2.Top+bullet2.Height)> enemy1.Top) then begin enemy1.Visible:=false; end; if (bullet2.Left < (enemy2.Left+enemy2.Width)) and ((bullet2.Left+bullet2.Width)>enemy2.Left) and (bullet2.Top < (enemy2.Top+enemy2.Height)) and ((bullet2.Top+bullet2.Height)> enemy2.Top) then begin enemy2.Visible:=false; end; if (bullet2.Left < (enemy3.Left+enemy3.Width)) and ((bullet2.Left+bullet2.Width)>enemy3.Left) and (bullet2.Top < (enemy3.Top+enemy3.Height)) and ((bullet2.Top+bullet2.Height)> enemy3.Top) then begin enemy3.Visible:=false; end; cc:=cc+5; end; //Bullet 3 if ccc=490 then begin form1.bullet3.Visible:=false; ccc:=0; ddd:=0; end else begin if (bullet3.Left < (enemy1.Left+enemy1.Width)) and ((bullet3.Left+bullet3.Width)>enemy1.Left) and (bullet3.Top < (enemy1.Top+enemy1.Height)) and ((bullet3.Top+bullet3.Height)> enemy1.Top) then begin enemy1.Visible:=false; end; if (bullet3.Left < (enemy2.Left+enemy2.Width)) and ((bullet3.Left+bullet3.Width)>enemy2.Left) and (bullet3.Top < (enemy2.Top+enemy2.Height)) and ((bullet3.Top+bullet3.Height)> enemy2.Top) then begin enemy2.Visible:=false; end; if (bullet3.Left < (enemy3.Left+enemy3.Width)) and ((bullet3.Left+bullet3.Width)>enemy3.Left) and (bullet3.Top < (enemy3.Top+enemy3.Height)) and ((bullet3.Top+bullet3.Height)> enemy3.Top) then begin enemy3.Visible:=false; end; ccc:=ccc+5; end; //Bullet 4 if cccc=490 then begin form1.bullet4.Visible:=false; cccc:=0; dddd:=0; end else begin if (bullet4.Left < (enemy1.Left+enemy1.Width)) and ((bullet4.Left+bullet4.Width)>enemy1.Left) and (bullet4.Top < (enemy1.Top+enemy1.Height)) and ((bullet4.Top+bullet4.Height)> enemy1.Top) then begin enemy1.Visible:=false; end; if (bullet4.Left < (enemy2.Left+enemy2.Width)) and ((bullet4.Left+bullet4.Width)>enemy2.Left) and (bullet4.Top < (enemy2.Top+enemy2.Height)) and ((bullet4.Top+bullet4.Height)> enemy2.Top) then begin enemy2.Visible:=false; end; if (bullet4.Left < (enemy3.Left+enemy3.Width)) and ((bullet4.Left+bullet4.Width)>enemy3.Left) and (bullet4.Top < (enemy3.Top+enemy3.Height)) and ((bullet4.Top+bullet4.Height)> enemy3.Top) then begin enemy3.Visible:=false; end; cccc:=cccc+5; end; //Bullet 5 if ccccc=490 then begin form1.bullet5.Visible:=false; ccccc:=0; ddddd:=0; end else begin if (bullet5.Left < (enemy1.Left+enemy1.Width)) and ((bullet5.Left+bullet5.Width)>enemy1.Left) and (bullet5.Top < (enemy1.Top+enemy1.Height)) and ((bullet5.Top+bullet5.Height)> enemy1.Top) then begin enemy1.Visible:=false; end; if (bullet5.Left < (enemy2.Left+enemy2.Width)) and ((bullet5.Left+bullet5.Width)>enemy2.Left) and (bullet5.Top < (enemy2.Top+enemy2.Height)) and ((bullet5.Top+bullet5.Height)> enemy2.Top) then begin enemy2.Visible:=false; end; if (bullet5.Left < (enemy3.Left+enemy3.Width)) and ((bullet5.Left+bullet5.Width)>enemy3.Left) and (bullet5.Top < (enemy3.Top+enemy3.Height)) and ((bullet5.Top+bullet5.Height)> enemy3.Top) then begin enemy3.Visible:=false; end; ccccc:=ccccc+5; end; end; procedure TForm1.Timer3Timer(Sender: TObject); begin form1.enemy1.left:=a; form1.enemy1.top:=b; form1.enemy2.left:=aa; form1.enemy2.top:=bb; form1.enemy3.left:=aaa; form1.enemy3.top:=bbb; a:=a-5; aa:=aa-5; aaa:=aaa-5; end; procedure TForm1.Beenden1Click(Sender: TObject); begin close; end; end. |
Re: Musik + Mehrer Bilder
Hi Koki!
Ich hatte jetzt nicht wriklich Lust mir deinen ganzen Quellcode anzusehen, das mache ich vielleicht heute Nachmittag mal, aber deine Frage mit den mp3's kann ich beantworten. Benutze doch einfach TMediaPlayer oder TBassDllPlayer, wobei ich den BassDllPlayer wesentlich besser finde. Hier findest du diese Komponente ![]() Mfg, Flare |
Re: Musik + Mehrer Bilder
danke flare für die musik aber das mit dem programmcode durchlesen wäre sehr nett denn ich brauche das programm morgen danke schon mal im vorraus wenn du es machst
|
Re: Musik + Mehrer Bilder
Zitat:
|
Re: Musik + Mehrer Bilder
Irgendwie erscheint mir der Quelltext doch zu aufgebläht: Die X, Y- Koordinaten beispielseweise könntest du über TPoint lösen. Wenn du natürlich nur einen Tag Zeit hast, kommt der Ratschlag mit der Quelltextvereinfachung vermutlich zu spät. Sowieso wäre es geschickter, die Schiffe, Planeten, Schüsse als Klasse oder Record zu gliedern.
Sound könntest du auch über die DirectSound-Komponente von ![]() |
Re: Musik + Mehrer Bilder
jo also leider kommt es zu spät außerdem habe ich auch erst vor 3monaten mit delphi angefangen und dafür finde ich mein programm schon sehr gut
nun wäre es sehr nett mir vielleicht zu helfen mit den schüssen das mit der musik habe ich aus zeitgründen weggelassen, da ich noch meine belegarbeit schreiben muss und das nicht mehr schaffe |
Re: Musik + Mehrer Bilder
Ohne Klassen oder Records? Ganz kurz gesagt: Vergiss es.
Du hast jetzt schon 10 Variablen oder so für einen Schuss. Für jeden weiteren bräuchtest du weitere 10 etc. - anders geht es nicht, wenn nich über OOP oder Records ;) MfG, air |
Re: Musik + Mehrer Bilder
schade aber trotzdem danke dann muss ich es halt so lassen ist trotzdem ein gutes Programm ich werde es dann im laufe der woche hier reinstellen, dass jeder was davon hat und es auch verändern kann ich werde natürlich auch weiter daran rumbasteln und auch versuchen das mit reccords zu machen
Danke an alle die bei meinen Fragen versucht haben und auch geschafft haben diese zu beantworten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 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