programm Sinnvoll?
Übersicht

beni-homrBetreff: programm Sinnvoll? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
Hab vor ner woche mitm programmieren angefangen, als ich eigentlich für Klausuren hätte lernen müssen, und nicht nichts tun wollte^^ Dann jedoch ernsthaft spass dran bekommen, übermütig n Spiel angefangen habe zu programmieren, und es nun endlich geschafft die Übersicht zu verlieren ![]() Kurz zur info, sollte ein sinnloses ballerspiel werden... Gegner kommen, ich mäh sie nieder, neue gegner kommen... bis jetzt habe ich es aber zum testen so gelassen, das ich die gegner mit den taste Strg links alt und leertaste "beschwören" kann Nun habe ich jedoch so viele felder eingebaut, das ich bezweifle, das ich die übersicht je wiedererlangen werde ^^ Ob vllt jemand so nett wäre mir zu sagen, was er von meinem code hält, und was für eine konsequenz ich ziehen sollte, wäre ich sehr dankbar... Wenns verbesserungen gibt noch besser^^ Momentane probleme sind, - wenn die Gegnerischen ninja sterne werfen, löscht der 2te den ersten usw... - die Sterne der Ninja "verfolgen" mich in begrenztem maße Beide Probleme habe ich bei meinen eigenen Schüssen schon gelöst... aber nu komme ich net weiter Aber vllt ersteinmal der code... Code: [AUSKLAPPEN] Graphics 1280,1024,16,1 SetBuffer BackBuffer() Charr = LoadImage("Charr.jpg") Bullet = LoadImage("Kugel.jpg") PKreuz = LoadImage("PKreuz.jpg") BBear = LoadImage("Gegner1.jpg") AAxe = LoadImage("Gegner2.jpg") NNinja = LoadImage("Ninja.jpg") Ninjastern = LoadImage("Ninjastern.jpg") MoveMouse 320,240 ;Ich Dim Char(1,5) char(1,0)=1 xcharr = 300 ycharr = 400 ;Steuerung ;---> Geschosse Dim Kugel(20,2) Dim Kurtx(20,2) Dim Kurty(20,2) Dim K#(20,2) Dim Stern(20,20,2) Dim Sternx(20,1) Dim Sterny(20,1) Dim G#(20,2) Dim Wurf(20,1) Dim merke2(20,2) Dim Zeit(20) ;---->Gegner Dim howx(20,1) Dim howy(20,1) Dim U#(20,1) Dim axex(20,1) Dim axey(20,1) Dim K#(20,1) Dim Ninjax(20,1) Dim Ninjay(20,1) Dim T#(20,1) ;Gegner Dim Bear(20,3) Dim Axe(20,3) Dim Ninja(20,3) ;Hauptschleife<----------------------------------------------------------------------------------- Repeat Cls If char(1,0) = 1 Then DrawImage charr, xcharr , ycharr EndIf ; Spieler bewegung If KeyDown (17) = 1 Then ycharr= ycharr - 6 If KeyDown (31) = 1 Then ycharr= ycharr + 6 If KeyDown (30) = 1 Then xcharr = xcharr - 6 If KeyDown (32) = 1 Then xcharr = xcharr + 6 ;Rand einrichten If Xcharr < 0 Then xcharr = 0 If xcharr > 1250 Then Xcharr = 1250 If Ycharr < 0 Then Ycharr = 0 If Ycharr > 980 Then Ycharr = 980 ; Maus abfragen xMouse = MouseX() -15 yMouse = MouseY() -15 ;schüsse abfeuern Feuern = GetMouse() ;Mausbestimmung beim feuern If Feuern = 1 Then xblub = xMouse yblub = yMouse EndIf ; Kugeln If Feuern= 1 Then Schuss = Schuss +1 If Schuss = 21 Then Schuss = 1 Kugel(Schuss,0)=1 Kugel(Schuss,1)= xcharr Kugel(Schuss,2)= ycharr EndIf ; Zielvorrichtung If Feuern = 1 Then Merke = merke +1 If merke = 21 Then merke = 1 Kurtx(merke,0) = xcharr - xblub Kurty(merke,1) = ycharr - yblub K#(merke,1) = 15 / ((Kurtx(merke,0)^2 +Kurty(merke,1)^2)^0.5) EndIf ;Kugelbewegung For I=1 To 20 If Kugel(I,0) =1 Then DrawImage Bullet, Kugel(I,1), Kugel(I,2) Kugel(I,1) = Kugel(I,1) - Kurtx(I,0) * K#(I,1) Kugel(I,2) = Kugel(I,2) - Kurty(I,1) * K#(I,1) EndIf Next ; Bear zählung If KeyHit(57) = 1 Then Zahl = Zahl +1 If zahl = 21 Then zahl = 1 Bear(Zahl,0) = 1 Bear(Zahl,1) = 100 Bear(Zahl,2) = 700 Bear(Zahl,3) = 800 EndIf ; Bear aufmalen und bewegen For I = 1 To 20 If Bear(I,0) =1 Then DrawImage BBear ,Bear(I,2), Bear(I,3) Bear(I,2)= Bear(I,2) - Howx(I,0) * U#(I,0) Bear(I,3)= Bear(I,3) - Howy(I,0) * U#(I,0) ; Bears verschwinden bei berührung! Scheisse!!! Howx(I,0)= Bear(I,2) - xcharr Howy(I,0)= Bear(I,3) - ycharr U#(I,0) = 2/ ((howx(I,0)^2 + howy(I,0)^2)^0.5) EndIf Next ;Kollisionsabfrage ich und Bears For I = 1 To 20 If ImagesOverlap(Charr,xcharr, ycharr, BBear, Bear(I,2),Bear(I,3)) And Bear(I,0) = 1 Then char(1,0) = 0 EndIf Next ; Kollisionsabfrage Kugeln und Bears For I = 1 To 20 For M = 1 To 20 If ImagesOverlap(Bullet,Kugel(M,1),Kugel(M,2),BBear,Bear(I,2), Bear(I,3)) And Kugel(M,0) = 1 And Bear(I,0) = 1 Then Kugel(M,0) = 0 Bear(I,1) = Bear(I,1) - 50 If Bear(I,1) = 0 Then Bear(I,0) = 0 EndIf EndIf Next Next ; Axe zählung If KeyHit(56) = 1 Then Zahl2 = Zahl2 +1 If zahl2 = 21 Then zahl2 = 1 Axe(Zahl2,0) = 1 Axe(Zahl2,1) = 300 Axe(Zahl2,2) = 800 Axe(Zahl2,3) = 400 EndIf ;Axe aufmalen und bewegen For I = 1 To 20 If Axe(I,0) =1 Then DrawImage AAxe ,Axe(I,2), Axe(I,3) Axe(I,2)= Axe(I,2) - Axex(I,0) * K#(I,0) Axe(I,3)= Axe(I,3) - Axey(I,0) * K#(I,0) ; Axe verschwinden bei berührung! Scheisse!!! Axex(I,0)= Axe(I,2) - xcharr Axey(I,0)= Axe(I,3) - ycharr K#(I,0) = 2/ ((Axex(I,0)^2 + Axey(I,0)^2)^0.5) EndIf Next ;Kollisionsabfrage ich und Axe For I = 1 To 20 If ImagesOverlap(Charr,xcharr, ycharr, AAxe, Axe(I,2),Axe(I,3)) And Axe(I,0) = 1 Then char(1,0) = 0 EndIf Next ; Kollisionsabfrage Kugeln und Axe For I = 1 To 20 For M = 1 To 20 If ImagesOverlap(Bullet,Kugel(M,1),Kugel(M,2),AAxe,Axe(I,2), Axe(I,3)) And Kugel(M,0) = 1 And Axe(I,0) = 1 Then Kugel(M,0) = 0 Axe(I,1) = Axe(I,1) - 50 If Axe(I,1) = 0 Then Axe(I,0) = 0 EndIf EndIf Next Next ;zählung von ninja If KeyHit(29) = 1 Then Zahl3 = Zahl3 +1 If zahl2 = 21 Then zahl3 = 1 Ninja(Zahl3,0) = 1 Ninja(Zahl3,1) = 300 Ninja(Zahl3,2) = 800 Ninja(Zahl3,3) = 400 EndIf ;Ninja aufmalen und bewegen For I = 1 To 20 O# = 2 If ((Ninjax(I,0)^2 + Ninjay(I,0)^2)^0.5) < 300 Then O# = 0 If Ninja(I,0) =1 Then DrawImage NNinja ,Ninja(I,2), Ninja(I,3) Ninja(I,2)= Ninja(I,2) - Ninjax(I,0) * T#(I,0) Ninja(I,3)= Ninja(I,3) - Ninjay(I,0) * T#(I,0) ; Ninja verschwinden bei berührung! Scheisse!!! Ninjax(I,0)= Ninja(I,2) - xcharr Ninjay(I,0)= Ninja(I,3) - ycharr T#(I,0) = O#/ ((Ninjax(I,0)^2 + Ninjay(I,0)^2)^0.5) EndIf Next ;Kollisionsabfrage ich und Ninja For I = 1 To 20 If ImagesOverlap(Charr,xcharr, ycharr, NNinja, Ninja(I,2),Ninja(I,3)) And Ninja(I,0) = 1 Then char(1,0) = 0 EndIf Next ;Kollisionsabfrage Kugeln und Ninja For I = 1 To 20 For M = 1 To 20 If ImagesOverlap(Bullet,Kugel(M,1),Kugel(M,2),NNinja,Ninja(I,2), Ninja(I,3)) And Kugel(M,0) = 1 And Ninja(I,0) = 1 Then Kugel(M,0) = 0 Ninja(I,1) = Ninja(I,1) - 50 If Ninja(I,1) = 0 Then Ninja(I,0) = 0 EndIf EndIf Next Next ; Ninjasterne Werfen... ; Probleme sind: - Die Sterne verfolgen mich noch! ; - Wird ein neuer Stern geschaffen wird der alte vernichtet! For I = 1 To 20 If (Ninjax(I,0)^2 + Ninjay(I,0)^2)^0.5 >2 And (Ninjax(I,0)^2 + Ninjay(I,0)^2)^0.5 < 350 And Ninja(I,2) <> 0 And MilliSecs() - Zeit(I) > 500 Then Zeit(I) = MilliSecs() Wurf(I,0) = Wurf(I,0) + 1 If Wurf(I,0) = 20 Then Wurf(I,0) = 1 Stern(I,Wurf(I,0),0) = 1 Stern(I,Wurf(I,0),1) = Ninja(I,2) Stern(I,Wurf(I,0),2) = Ninja(I,3) EndIf Next For I = 1 To 20 If Stern(I,Wurf(I,0),0) = 1 Then merke2(I,0) = merke2(I,0) +1 If merke2(I,0) = 20 Then merke2(I,0) = 1 Sternx(I,0) = Ninja(I,2)- xcharr Sterny(I,0) = Ninja(I,3) - ycharr G#(merke2(I,0),1) = 15 / ((Sternx(I,0)^2 + (Sterny(I,0))^2)^0.5) EndIf Next For I=1 To 20 If Stern(I,Wurf(I,0),0) =1 And Ninja(I,0) = 1 Then DrawImage Ninjastern, Stern(I,Wurf(I,0),1), Stern(I,Wurf(I,0),2) Stern(I,Wurf(I,0),1) = Stern(I,Wurf(I,0),1) - Sternx(I,0) * G#(merke2(I,0),1) Stern(I,Wurf(I,0),2) = Stern(I,Wurf(I,0),2) - Sterny(I,0) * G#(merke2(I,0),1) EndIf Next ; für die überlappung der bilder DrawImage PKreuz, xMouse, yMouse ;Ende Delay 10 Flip Until KeyHit (1) End |
||
![]() |
ProfJakeehemals "DTC" / "Fabian Niemann" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Heilige Scheiße!
Hast du schon mal was von Funktionen oder Types gehört? (Function ![]() ![]() Davon mal ganz abgesehen: Warum zur Hölle benutzt du Delay ![]() Warum erstellst du so komische Dims wie Ninjay(20,1)? Ninjay(20) würde es auch tun. Wenn du schon mehrdimensionale Arrays beherrscht, warum machst du es dann nicht gleich richtig? (z.B.: NinjaPos(20, 1, 1) Was erwartest du denn jetzt? Das jemand deinen Code (den du selbst(!) für unordentlich erklärst) auseinanderfitzt und dir die Lösung auf einem Silbertablett präsentiert? Nee, also .. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
pupilp deine Argumentation ist absolut anmaßend. Wenn beni-homr erst vor kurzem angefangen hat zu programmieren (eine Wochen halte ich hierbei für etwas sehr kurzfristig für diesen Code, außer dieser ist durch copy&paste endstanden), dann sollte man diesbezüglich etwas mehr Rücksicht nehmen. Ich will garnicht wissen wie du angefangen hast und was für welche Fragen du gestellt hast.
Nur so als Anmerkung: Was soll denn bitte an Ninjay(20,1) verkehrt sein? Vielleicht hast du es einfach nur vergessen, dass ein Array ab 0 beginnt, somit also eine 1 bereits zwei Speicherplätze besitzt. In diesem Fall von 0 bis 20 bei #,0 und nochmal von 0 bis 20 bei #,1 ![]() @beni-homr, ich habe leider nicht mehr so viel Zeit mehr heute, aber der Code an sich ist recht gut zusammengeschustert. Es fehlt allerdings an einer besser durchdachten Struktur vom ganzem. Soll heissen: Schüsse/Wurfsterne und andere Dinge von denen man nicht weiß wie viele es geben kann/soll, sollten mit Types gemacht werden. Types sind selbst organisierende Speicherlisten in ihrer Verwendung ersetzen sie oft mehrere Arrays. In deinem Fall könnte man eventuell die ganze untere Hälfte in nur einem Codeblock unterbringen. Tipp: Kaum jemand wird sich ernsthaft fast 300 Zeilen Code durchsehen um Fehler zu finden. Vor allem dann nicht, wenn der Code ansich nicht selbstständig lauffähig ist. Wenn du uns zum Beispiel die LoadImage weg machst und alle DrawImage durch Rect, Oval, Line, Plot ersetzt, dann wird sich sicherlich eher jemand finden. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich empfehle dir erstmal klein Anzufangen (Ping Pong Klon oder Sowas wie Pac Man ![]() Und ich würde den Code Formatieren also Zeilen einrücken...so bekommt man wenigstens etwas übersicht im Code ![]() |
||
![]() |
xaerox |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich würde auch empfehlen klein anzufangen, um besser die grundlagen und besonders auch andere sachen richtig zu behärrschen...
übrigens, dass du im programmieren nicht steckenbleibst (OgottOgott, ich weiss nicht mehr was ich schreiben wollte) setze einfach mal mehr semikolone oder wie das heisst also das ( ![]() |
||
Biker sind wahre Helden.
Auch Musiker. |
beni-homr |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Moin,
Bin schon dabei mal n bissel ordnung reinzubringen^^ Ich dachte halt mit Functionen könne man sich NUR einzelne Werte zurückgeben lassen, nun habe ich festgestellt, dass natürlich auch das ganze Programm in solchen laufen kann... Nun erstmal werde ich mich noch mit Types auseinandersetzen, von denen mir im Buch von Rene Meyer jedoch komischerweise abgeraten wird! Erstmal mit was leichterem anfangen? hmm ja hab ich auch schon gedacht... mal schaun, wies sich in den nächsten tagen entwickelt.. Also danke, das ihr geantwortet habt... Gruß Beni |
||
![]() |
ProfJakeehemals "DTC" / "Fabian Niemann" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich muss mich für meinen Post entschuldigen, ich hab das total falsch verstanden und dachte du sitzt schon eine Woche an diesem Code.
(Wer lesen kann ist klar im Vorteil, ich weiß.) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group