winkel klappt nich :-(
Übersicht

![]() |
ToeBBetreff: winkel klappt nich :-( |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() Graphics 640,480
Type s;Type s (bzw schuss) Field x Field y Field winkel# End Type SeedRnd MilliSecs() Global s.s;Globale variablen Global g.s Zielgerat = CreateImage(30,30);Erstellt norm. Zielgerät SetBuffer ImageBuffer(Zielgerat) Oval 7.5,7.5,15,15,0 Line 15,0,15,30 Line 0,15,30,15 Turm = CreateImage(100,100);Erstellt den Turm SetBuffer ImageBuffer(Turm) Oval 0,0,100,100,0 Oval 15,15,70,70,0 Line 50,0,50,15 Line 0,50,15,50 Line 100,50,85,50 Line 50,100,50,85 Plot 50,50 RZielgerat = CreateImage(30,30);Erstellt das Rote Zielgerät SetBuffer ImageBuffer(RZielgerat) Color 255,0,0 Oval 7.5,7.5,15,15,0 Line 15,0,15,30 Line 0,15,30,15 SetBuffer BackBuffer();Setzt backBuffer() x = 300;startpos X y = 200;startpos Y HidePointer();lässt mauszeiger verschwinden CpuX = Rand(0,640);Legt die posX des Comp fest CpuY = Rand(0,480);Legt die posY des Comp fest Repeat;Schleifen anfang F = Rand(0,20);Rand für den zufallfeure des Comp If F = 10 Then ;Wenn Rand = 10 ist dann... g.s = New s;...neuen type erstellen g\x = CpuX+50 g\y = CpuY+50 g\winkel# = ATan2(x-10,y-10) EndIf Color 0,150,0;Farbe : Grün Rect 0,0,640,480;setzt grünen BackGround mx = MouseX();MausX pos my = MouseY();MausY pos w# = ATan2(mx-x,my-y);winkel mx > my Color 255,255,255;Farbe: weiß If MouseHit(1) Or KeyHit(57) Then;Wenn maustaste oder leertaste gedrückt dann... s.s = New s;...neuer Type s\x = x s\y = y s\winkel# = w# EndIf ;mit den folgenden 8 befehle bewegt man den Spieler und setzt die grenzen fest: If KeyDown(200) Or KeyDown(17) Then y = y - 10 If KeyDown(208) Or KeyDown(31)Then y = y + 10 If KeyDown(203) Or KeyDown(30)Then x = x - 10 If KeyDown(205) Or KeyDown(32)Then x = x + 10 If x < 0 Then x = 0 If x > 620 Then x = 620 If y < 0 Then y = 0 If y > 460 Then y = 460 ;Das ist der spieler: Oval x-10,y-10,20,20,0 Line x,y,x+Sin(w#)*50,y+Cos(w#)*50 DrawImage Turm,CpuX,CpuY;DrawImaget den "Turm" Color 50,0,10;Farbe: Braun ;die folgenden 4 zeilen befele machen den effect von man nur ein teil der "Karte" sieht Rect x-800,y+100,1600,800 Rect 0,0,x-100,y+100 Rect 0,0,x+800,y-100 Rect x+100,y-800,800,1600 Color 255,255,255 If ImagesOverlap(Zielgerat,mx,my,Turm,CpuX,CpuY) Then ;kollision DrawImage RZielgerat,mx,my Else DrawImage Zielgerat,mx,my EndIf For s.s = Each s;For...Each...Next schleife für spieler schuss Color 255,0,0 Line s\x, s\y, s\x+Sin(s\winkel#)*10, s\y+Cos(s\winkel#)*10 s\x = s\x + Sin(s\winkel#)*10 s\y = s\y + Cos(s\winkel#)*10 If s\x > 700 Or s\x < - 10 Or s\y > 700 Or s\y < - 10 Then Delete s.s EndIf Next For g.s = Each s;For...Each...Next Schleife für Comp. schuss Color 255,0,0 Line g\x, g\y, g\x+Sin(g\winkel#)*10, g\y+Cos(g\winkel#)*10 g\x = g\x + Sin(g\winkel#)*10 g\y = g\y + Cos(g\winkel#)*10 If g\x > 700 Or g\x < - 10 Or g\y > 700 Or g\y < - 10 Delete g.s EndIf Next Flip Cls Until KeyHit(1) End ![]() Der "Turm" wir djetzt immer an eine zuffällige stelle gesetzt, man soll noch heraus finden wo ![]() ![]() Wieso antwortet mia niemnand ![]() |
||
- Zuletzt bearbeitet von ToeB am Sa, Dez 23, 2006 23:41, insgesamt 2-mal bearbeitet
![]() |
FireballFlameBetreff: Re: winkel klappt nich :-( |
![]() Antworten mit Zitat ![]() |
---|---|---|
Crack93 hat Folgendes geschrieben: Wieso antwortet mia niemnand
![]() Na aber hallo! Geduld! Das ist ein Forum und kein Chat! Und ein CounterStrike2D dürfte sehr schwer sein, sowas kann eh nur DC ![]() --------- Ok, aber zum Thema: ^^ Ich komm zwar zur Zeit nicht an mein BB, aber hattest du nicht letztens schon ein Problem mit Abschusswinkeln?? Wo liegt denn dann schonwieder ein Problem? ![]() |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Axe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mir deinen Quelltext mal angekuckt und ausprobiert.
Aber komplett ohne Kommentare muss man sich sämtlichen Zusammenhang immer erst selber erarbeiten. Das macht viel Mühe. ![]() Um schnelle Hilfe zu erhalten solltest du Kommentare einfügen. Natürlich muss nicht jeder Befehl erklärt werden, aber die wichtigsten Funktionseinheiten und die Bedeutung der Variablennamen sollten schon notiert werden. '->Wenn du ein paar Kommentare einfügst, schaue ich mir den Quellcode sicher mal an, ansonsten eher weniger. |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier der Überarbeitete Code: [AUSKLAPPEN] Graphics 640,480 Type s;Type s (bzw schuss) Field x Field y Field winkel# End Type SeedRnd MilliSecs() Global s.s;Globale variablen Global g.s Zielgerat = CreateImage(30,30);Erstellt norm. Zielgerät SetBuffer ImageBuffer(Zielgerat) Oval 7.5,7.5,15,15,0 Line 15,0,15,30 Line 0,15,30,15 Turm = CreateImage(100,100);Erstellt den Turm SetBuffer ImageBuffer(Turm) Oval 0,0,100,100,0 Oval 15,15,70,70,0 Line 50,0,50,15 Line 0,50,15,50 Line 100,50,85,50 Line 50,100,50,85 Plot 50,50 RZielgerat = CreateImage(30,30);Erstellt das Rote Zielgerät SetBuffer ImageBuffer(RZielgerat) Color 255,0,0 Oval 7.5,7.5,15,15,0 Line 15,0,15,30 Line 0,15,30,15 SetBuffer BackBuffer();Setzt backBuffer() x = 300;startpos X y = 200;startpos Y HidePointer();lässt mauszeiger verschwinden CpuX = Rand(0,640);Legt die posX des Comp fest CpuY = Rand(0,480);Legt die posY des Comp fest Repeat;Schleifen anfang F = Rand(0,20);Rand für den zufallfeure des Comp If F = 10 Then ;Wenn Rand = 10 ist dann... g.s = New s;...neuen type erstellen g\x = CpuX+50 g\y = CpuY+50 g\winkel# = ATan2(x-10,y-10) EndIf Color 0,150,0;Farbe : Grün Rect 0,0,640,480;setzt grünen BackGround mx = MouseX();MausX pos my = MouseY();MausY pos w# = ATan2(mx-x,my-y);winkel mx > my Color 255,255,255;Farbe: weiß If MouseHit(1) Or KeyHit(57) Then;Wenn maustaste oder leertaste gedrückt dann... s.s = New s;...neuer Type s\x = x s\y = y s\winkel# = w# EndIf ;mit den folgenden 8 befehle bewegt man den Spieler und setzt die grenzen fest: If KeyDown(200) Or KeyDown(17) Then y = y - 10 If KeyDown(208) Or KeyDown(31)Then y = y + 10 If KeyDown(203) Or KeyDown(30)Then x = x - 10 If KeyDown(205) Or KeyDown(32)Then x = x + 10 If x < 0 Then x = 0 If x > 620 Then x = 620 If y < 0 Then y = 0 If y > 460 Then y = 460 ;Das ist der spieler: Oval x-10,y-10,20,20,0 Line x,y,x+Sin(w#)*50,y+Cos(w#)*50 DrawImage Turm,CpuX,CpuY;DrawImaget den "Turm" Color 50,0,10;Farbe: Braun ;die folgenden 4 zeilen befele machen den effect von man nur ein teil der "Karte" sieht Rect x-800,y+100,1600,800 Rect 0,0,x-100,y+100 Rect 0,0,x+800,y-100 Rect x+100,y-800,800,1600 Color 255,255,255 If ImagesOverlap(Zielgerat,mx,my,Turm,CpuX,CpuY) Then ;kollision DrawImage RZielgerat,mx,my Else DrawImage Zielgerat,mx,my EndIf For s.s = Each s;For...Each...Next schleife für spieler schuss Color 255,0,0 Line s\x, s\y, s\x+Sin(s\winkel#)*10, s\y+Cos(s\winkel#)*10 s\x = s\x + Sin(s\winkel#)*10 s\y = s\y + Cos(s\winkel#)*10 If s\x > 700 Or s\x < - 10 Or s\y > 700 Or s\y < - 10 Then Delete s.s EndIf Next For g.s = Each s;For...Each...Next Schleife für Comp. schuss Color 255,0,0 Line g\x, g\y, g\x+Sin(g\winkel#)*10, g\y+Cos(g\winkel#)*10 g\x = g\x + Sin(g\winkel#)*10 g\y = g\y + Cos(g\winkel#)*10 If g\x > 700 Or g\x < - 10 Or g\y > 700 Or g\y < - 10 Delete g.s EndIf Next Flip Cls Until KeyHit(1) End |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiss nicht, wo das Problem liegt. Der Schuss geht in Richtung Fandekreuz, manchmal ein bisschen daneben, aber ist nicht so schlimm. | ||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Schnuff |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nein, nicht das was in der mitte steht ist der Turm(dachte ich zuerst auch...) | ||
Programmers dont die. They gosub without return... |
![]() |
AxeBetreff: Gelöst |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt hab ich den Quellcode richtig durchgearbeitet.
Die Anwendung von atan2 war nicht richtig. Außerdem bist du alles Schüsse zwei mal direkt hintereinander durchgegangen. Denn du hast ein Type für die Schüsse definiert, dann brauchst du das auch nur einmal durchzugehen. Du hast bestimmt gedacht, dass die Schüsse vom Spieler und Cpu einzeln durchgegangen werden müssen, da sie mit verschieden Variablennamen erstellt worden sind. Das ist aber egal. Bei der Winkelberechnungen musst du daran denken, dass du die Mittelpunkte von den Bildern nehmen musst. (Bei dem Turm und dem Mauszeiger). Hier der berechtigte Code: [AUSKLAPPEN] Graphics 640,480,32,2 Type s;Type s (bzw schuss) Field x Field y Field winkel# End Type SeedRnd MilliSecs() Global s.s;Globale variablen Global g.s Zielgerat = CreateImage(30,30);Erstellt norm. Zielgerät SetBuffer ImageBuffer(Zielgerat) Oval 7.5,7.5,15,15,0 Line 15,0,15,30 Line 0,15,30,15 Turm = CreateImage(100,100);Erstellt den Turm SetBuffer ImageBuffer(Turm) Oval 0,0,100,100,0 Oval 15,15,70,70,0 Line 50,0,50,15 Line 0,50,15,50 Line 100,50,85,50 Line 50,100,50,85 Plot 50,50 RZielgerat = CreateImage(30,30);Erstellt das Rote Zielgerät SetBuffer ImageBuffer(RZielgerat) Color 255,0,0 Oval 7.5,7.5,15,15,0 Line 15,0,15,30 Line 0,15,30,15 SetBuffer BackBuffer();Setzt backBuffer() x = 300;startpos X y = 200;startpos Y HidePointer();lässt mauszeiger verschwinden CpuX = Rand(0,640);Legt die posX des Comp fest CpuY = Rand(0,480);Legt die posY des Comp fest Repeat;Schleifen anfang If F = Rand(0,20)Then ;Wenn Rand = 10 ist dann... g.s = New s;...neuen type erstellen g\x = CpuX+50 g\y = CpuY+50 g\winkel# = ATan2(x-(Cpux+50),y-(Cpuy+50)) EndIf Color 0,150,0;Farbe : Grün Rect 0,0,640,480;setzt grünen BackGround mx = MouseX();MausX pos my = MouseY();MausY pos w# = ATan2((mx+15)-x,(my+15)-y) Color 255,255,255;Farbe: weiß If MouseHit(1) Or KeyHit(57) Then;Wenn maustaste oder leertaste gedrückt dann... s.s = New s;...neuer Type s\x = x s\y = y s\winkel# = w# EndIf ;mit den folgenden 8 befehle bewegt man den Spieler und setzt die grenzen fest: If KeyDown(200) Or KeyDown(17) Then y = y - 10 If KeyDown(208) Or KeyDown(31)Then y = y + 10 If KeyDown(203) Or KeyDown(30)Then x = x - 10 If KeyDown(205) Or KeyDown(32)Then x = x + 10 If x < 0 Then x = 0 If x > 620 Then x = 620 If y < 0 Then y = 0 If y > 460 Then y = 460 ;Das ist der spieler: Oval x-10,y-10,20,20,0 Line x,y,x+Sin(w#)*50,y+Cos(w#)*50 DrawImage Turm,CpuX,CpuY;DrawImaget den "Turm" Color 50,0,10;Farbe: Braun ;die folgenden 4 zeilen befele machen den effect von man nur ein teil der "Karte" sieht Rect x-800,y+100,1600,800 Rect 0,0,x-100,y+100 Rect 0,0,x+800,y-100 Rect x+100,y-800,800,1600 Color 255,255,255 If ImagesOverlap(Zielgerat,mx,my,Turm,CpuX,CpuY) Then ;kollision DrawImage RZielgerat,mx,my Else DrawImage Zielgerat,mx,my EndIf For s.s = Each s;For...Each...Next schleife für spieler schuss Color 255,0,0 Line s\x, s\y, s\x+Sin(s\winkel#)*10, s\y+Cos(s\winkel#)*10 s\x = s\x + Sin(s\winkel#)*10 s\y = s\y + Cos(s\winkel#)*10 If s\x > 700 Or s\x < - 10 Or s\y > 700 Or s\y < - 10 Then Delete s.s EndIf Next Flip Cls Until KeyHit(1) End Schöne Weihnachten!! MfG Axe |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group