kollision
Übersicht

Gehe zu Seite Zurück 1, 2, 3 Weiter
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann kommt: function alien not found ![]() |
||
besser heimlich schlau, als unheimlich blöd |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
vielleicht sollte man mal darüber nachdenken, den alien-array anzulegen? ^^ | ||
MrKeks.net |
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein Tipp: Rück überall ordentlich ein wenn du ein if machst, dann findest du fehlende End Ifs leichter
Noch ein Tipp: Benutz keine Variable doppelt! Alien war sowohl für die Grafik als auch als Array vorhanden! Code: [AUSKLAPPEN] Graphics 640,480 SetBuffer BackBuffer() hinter=LoadImage("/shooter2/Grafik/Sterne.bmp") humanoid=LoadImage("/shooter2/Grafik/Schiff.bmp") aliengfx=LoadImage("/shooter2/Grafik/Alien.bmp") rakete=LoadImage("/shooter2/Grafik/Rakete.bmp") laser=LoadImage("/shooter2/Grafik/Laser.bmp") schusston=LoadSound("/shooter2/Sound/shoot.wav") trefferton=LoadSound("/shooter2/Sound/boom.wav") ; Dim Las(100,2) Dim Rak(100,2) Dim Alien(100) ; X=305 Y=420 ; X2=305 Y2=20 ; ;Hauptschleife ; Repeat Cls ; ; If KeyDown(57) Then Delay 30 ;Billigbullettime *lol* ; ; H=H+1 If H=200 Then H=0 TileBlock hinter,0,H DrawImage humanoid,X,Y DrawImage aliengfx,X2,Y2 ; ;Schuss-Test (humanoid) If KeyHit(76) Then Schuss = Schuss + 1 If Schuss = 101 Then Schuss = 1 Rak(Schuss,0) = 1 Rak(Schuss,1) = X + 9 Rak(Schuss,2) = Y - 25 PlaySound (schusston) EndIf ;ggf. Raketen zeichnen For I = 1 To 100 If Rak(I,0) = 1 Then DrawImage rakete, Rak(I,1),Rak(I,2) Rak(I,2) = Rak(I,2) - 6 EndIf Next ;Schuss-Test (alien) If KeyHit(31) Then Schuss2 = Schuss2 + 1 If Schuss2 = 101 Then Schuss2 = 1 Las(Schuss2,0) = 1 Las(Schuss2,1) = X2 + 9 Las(Schuss2,2) = Y2 + 25 PlaySound (schusston) EndIf ;ggf. Laser zeichnen For P = 1 To 100 If Las(P,0) = 1 Then DrawImage laser, Las(P,1),las(P,2) Las(P,2) = Las(P,2) + 10 EndIf Next ;kollision If ImagesOverlap(aliengfx,alien(X2),alien(Y2),rakete,Rak(I,1),Rak(I,2))Then PlaySound (trefferton) End If ; ;Pfeiltasten für humanoid abfragen If KeyDown(77)=1 Then X=X + 6 If KeyDown(75)=1 Then X=X - 6 ; ;Pfeiltasten für alien abfragen If KeyDown(32)=1 Then X2=X2 + 2 If KeyDown(30)=1 Then X2=X2 - 2 ; ;Randüberschreitung verhindern (humanoid) If X < 0 Then X = 0 If X > 609 Then X = 609 ; ;Randüberschreitung verhindern (alien) If X2 < 0 Then X2 = 0 If X2 > 609 Then X2 = 609 Flip Until KeyHit(1) So sollte es stimmen Jetzt kommt bei mir nur noch der "Image does not exist"-Fehler! Ohne die Bilder kann ich nicht weitertesten ![]() mfG Ctuchik |
||
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
läuft zwar jetzt, danke.....aber irgentein sound läuft auch, aber so schnell, dass ich nicht mit sicherheit sagen kann welcher es is. (tippe auf trefferton)
EDIT: is doch nich trefferton, der kommt erst, wenn ich Esc drücke |
||
besser heimlich schlau, als unheimlich blöd |
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
so spontan find ichs nich, aber ich werd mir morgen vormittag mal reinstüzen.
(wenns jemand findet, bitte sagen) |
||
besser heimlich schlau, als unheimlich blöd |
HOT-BITGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hi !
LOL IT'S VERY NICE, wenn man was weiß ! Vielleicht solltest du mal darüber nachdenken, etwas leichteres für den Anfang zu probieren !? Wie wäre es mit: *Hello World* auf den Screen zu printen ? Und das in allen Varianten ! Dann kannst ja umsteigen auf Grafik-Fenster. Hier kannst mal üben die Bildchen zu laden, und Linien zu ziehen. Mit allen Farben die dir zur Verfügung stehen. Rect ist da noch zu schwer. Hat ja so blöde Parameter.. Mal im Ernst: Du glaubst doch selbst nicht, daß dieses selbst (ab)geschriebene Prog jemals in die Endphase kommt ? Du wirst auch hoffentlich nicht der Überzeugung sein, in den nächsten 2 Wochen dein selbst (ab)geschriebenes Prog zu verstehen ? Du wirst wohl auch nicht die Dreistigkeit haben, und mir das nicht glauben ? Du hast eine recht große und freche Klappe im Chat gehabt ! Das war nicht fein. Überhaupt nicht für so einen Loser wie du es zur Zeit bist ! Ich hoffe, daß sich das ändern wird. Ansonsten ..... ABER: Du hast eines vielen Anfängern vorraus ! Du hast einen guten Lehrer ! Du hast mich ! In drei Monat hören wir dann wieder etwas von dir ! Danke, Toni |
||
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
ehrlichgesagt, auf DICH kann ich verzichten. was bringst DU mir schon bei?
(den rest kommentier ich jetzt nicht, wär eh nur zeitverschwendung) so loopt der sound zwar nimma, aber es tut sich auch nix, wenn die rakete trifft Code: [AUSKLAPPEN] Graphics 640,480 SetBuffer BackBuffer() hinter=LoadImage("/shooter2/Grafik/Sterne.bmp") humanoid=LoadImage("/shooter2/Grafik/Schiff.bmp") aliengfx=LoadImage("/shooter2/Grafik/Alien.bmp") rakete=LoadImage("/shooter2/Grafik/Rakete.bmp") laser=LoadImage("/shooter2/Grafik/Laser.bmp") schusston=LoadSound("/shooter2/Sound/shoot.wav") trefferton=LoadSound("/shooter2/Sound/boom.wav") ; Dim Las(100,2) Dim Rak(100,2) Dim Alien(100) ; X=305 Y=420 ; X2=305 Y2=20 ; ;Hauptschleife ; Repeat Cls ; ; If KeyDown(57) Then Delay 30 ;Billigbullettime *lol* ; ; H=H+1 If H=200 Then H=0 TileBlock hinter,0,H DrawImage humanoid,X,Y DrawImage aliengfx,X2,Y2 ; ;Schuss-Test (humanoid) If KeyHit(76) Then Schuss = Schuss + 1 If Schuss = 101 Then Schuss = 1 Rak(Schuss,0) = 1 Rak(Schuss,1) = X + 9 Rak(Schuss,2) = Y - 25 PlaySound (schusston) EndIf ;ggf. Raketen zeichnen For I = 1 To 100 If Rak(I,0) = 1 Then DrawImage rakete, Rak(I,1),Rak(I,2) Rak(I,2) = Rak(I,2) - 6 EndIf Next ;Schuss-Test (alien) If KeyHit(31) Then Schuss2 = Schuss2 + 1 If Schuss2 = 101 Then Schuss2 = 1 Las(Schuss2,0) = 1 Las(Schuss2,1) = X2 + 9 Las(Schuss2,2) = Y2 + 25 PlaySound (schusston) EndIf ;ggf. Laser zeichnen For P = 1 To 100 If Las(P,0) = 1 Then DrawImage laser, Las(P,1),las(P,2) Las(P,2) = Las(P,2) + 10 EndIf Next ;kollision if Rak(I,1) = 1 then If ImagesOverlap(aliengfx,alien(X2),alien(Y2),rakete,Rak(I,1),Rak(I,2))Then PlaySound (trefferton) End If endif ; ;Pfeiltasten für humanoid abfragen If KeyDown(77)=1 Then X=X + 6 If KeyDown(75)=1 Then X=X - 6 ; ;Pfeiltasten für alien abfragen If KeyDown(32)=1 Then X2=X2 + 2 If KeyDown(30)=1 Then X2=X2 - 2 ; ;Randüberschreitung verhindern (humanoid) If X < 0 Then X = 0 If X > 609 Then X = 609 ; ;Randüberschreitung verhindern (alien) If X2 < 0 Then X2 = 0 If X2 > 609 Then X2 = 609 Flip Until KeyHit(1) [MOD="Inarie"]Habe mal den Doppelpost zu einem gemacht.[/MOD] |
||
besser heimlich schlau, als unheimlich blöd |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du hast die Kollisionsabfrage ausserhalb der For - Schleife. Du musst sie (am besten) direkt an die Stelle machen, wo du sie zeichnest. | ||
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
es is total egal, wo ich die hinmache. is jedesmal des gleiche ergebnis ![]() |
||
besser heimlich schlau, als unheimlich blöd |
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn du schon so ein supertoller programmierer bist, hot-bit, dann kannst du mir ja auch sicher zeigen wie es geht. (aus vorhandenem kann man auch lernen) | ||
besser heimlich schlau, als unheimlich blöd |
HOT-BITGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hallo !
Hatte nicht vorgehabt, hier überhaupt noch was dazu zu sagen, aber bitte: WO IST DA EIN PROBLEM ? Code: [AUSKLAPPEN] ;kollision For i=1 To 100 If Rak(I,0) = 1 Then If ImagesOverlap(aliengfx,X2,Y2,rakete,Rak(I,1),Rak(I,2)) PlaySound (trefferton) End If EndIf Next Deine Denkfehler hier waren: 1.) Die Abfrage nicht in einer Schleife 2.) Den Status von Rak(I,0) mit Rak(I,1) verwechselt 3.) X2 kann den Wert von 0-609 oder so annehmen Du hast aber nur bis 100 dimensioniert Also konnte es nur in bestimmten Situationen zu einer Kollision kommen Darum war alien(X2) und alien(Y2) total verkehrt gedacht Und noch eines: NICHT BLÖD REDEN ! Toni |
||
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
erstmal, danke.
das letzte kommentier ich dann mal wieder nicht, aber da kann man sich ewig drüber streiten. |
||
besser heimlich schlau, als unheimlich blöd |
HOT-BITGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hmm,
wäre vielleicht auch nicht schlecht, zu sagen, ob es funktioniert oder nicht ! Danke, Toni |
||
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
geht einwandfrei ![]() |
||
besser heimlich schlau, als unheimlich blöd |
HOT-BITGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hi !
Wenn schon vielen was vorraus hast, wie ich andeutete, dann mal ein Tipp: Lass dir einfach immer die Variablen-Werte anzeigen. Da kommst am leichtesten drauf, wo der Fehler sein könnte ! Und: der Computer ist wie ein Baby. Dem mußt alles erklären. Also mußt du das auch verstehen, was du ihm beibringen willst. Ansonsten wird das nichts. Umsonst kommt nicht immer wieder die Aufforderung, sich selbst Wissen beizubringen ! Und man braucht halt auch einen guten Lehrer ! ![]() Edit: Deine y-Werte der Raketen werden auch noch verändert, wenn sie über die 0-Grenze fahren. Das heißt, wenn die Raketen kleiner 0 sind, den Wert von Rak(I,0) auf 0 setzen. Sonst sind die noch immer aktiv ! Toni |
||
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
also einfach noch
Code: [AUSKLAPPEN] if Rak(I,0) < 0 then Rak(I,0) = 0 einfügen, oder? oder is des sinnvoller? Code: [AUSKLAPPEN] if Rak(I,0) = -1 then Rak(I,0) = 0 |
||
besser heimlich schlau, als unheimlich blöd |
![]() |
Slayer |
![]() Antworten mit Zitat ![]() |
---|---|---|
mr x hat Folgendes geschrieben: also einfach noch
Code: [AUSKLAPPEN] if Rak(I,0) < 0 then Rak(I,0) = 0 einfügen, oder? oder is des sinnvoller? Code: [AUSKLAPPEN] if Rak(I,0) = -1 then Rak(I,0) = 0 Hi mr x, ich hab jetzt nicht Deinen ganzen Code gelesen, aber ich würde die obere if abfrage nehmen. Warum ? wenn du die werte auch mal mit 2 verkleinerst und Du unter 0 kommst wird das array auch auf 0 gesetzt. Bei der zweiten if abfrage würde das nicht passieren, da auch den wert - 2 haben könntest. |
||
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version |
HOT-BITGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hmm,
warum -1 ? Kommt das irgendwo vor ? Ich sehe schon, du hast das noch immer nicht intus ! Rak(I,0)= ob die Rakete abgefeuert ist, oder nicht. Wenn 1 dann ist sie unterwegs Rak(I,1)= die x-koordinate der Rakete Rak(I,2)= die y-Koordinate der Rakete Das heißt nun, wenn Rak(I,2)=<0 dann gehört Rak(I,0)=0. Damit ist diese Rakete abgeschaltet. Pfff..., das sind doch die leichtesten Übungen. Sowas macht man bevor überhaupt die Überlegung aufkommt, selbst ein Game zu machen ! Komme mir vor wie ein Lehrer. Hmm, das steht mir nicht. Muß das wieder einstellen ![]() Toni |
||
- Zuletzt bearbeitet von HOT-BIT am Fr, Feb 13, 2004 18:15, insgesamt einmal bearbeitet
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hatte nur gedacht, dass -1 halt auch gehen könnte....
aber danke für die aufklärung |
||
besser heimlich schlau, als unheimlich blöd |
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
die 2. abfrage war jetzt ja nichtmehr schwer(danke nochmal) aber ich hab jetzt schon wieder ein anfängerproblem ![]() ich krieg einfach keinen zähler hin, der die treffer zählt und dann ausgibt ![]() wenn mir jemand helfen kann wärs gut, wenn nich, hab ich wohl pech gehabt. aber es gibt hier ja eigentlich genug, die damit kein prob damit haben dürften. |
||
besser heimlich schlau, als unheimlich blöd |
Gehe zu Seite Zurück 1, 2, 3 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group