Object does not exist !
Übersicht BlitzBasic Beginners-Corner
Dicker HobbitBetreff: Object does not exist ! |
Sa, Feb 18, 2012 14:40 Antworten mit Zitat |
|
---|---|---|
Hallo liebe Blitzer,
Ich bin es mal wieder! Zurzeit versuch ich mich mit den Types und wollte damit ein kleines Spiel schreiben. Leider bekomme ich die oben genannte Fehlermeldung und ich kann mir nicht erklären wieo. Die Meldung zeigt mit den Fehler in diesem Abschnitt: BlitzBasic: [AUSKLAPPEN]
Dies steht in einer Function und die Types habe ich aber jeweils Code: [AUSKLAPPEN] Global gesetzt.
Falls ihr weiteren Code benötigt um mir zu helfen poste ich ihn selbstverständlich noch! Danke im Vorraus! Lg Dicker Hobbit |
||
ZEVS |
Sa, Feb 18, 2012 14:44 Antworten mit Zitat |
|
---|---|---|
Zitat: Falls ihr weiteren Code benötigt um mir zu helfen poste ich ihn selbstverständlich noch!
Ich bitte doch darum. Im Allgemeinen sollte ein For Each-Loop helfen. ZEVS |
||
XeresModerator |
Sa, Feb 18, 2012 14:45 Antworten mit Zitat |
|
---|---|---|
Welches Objekt soll den Null sein? Vermutlich ist es eine verschachtelte Schleife und du löschst ein Objekt, das im nächsten Durchgang nochmal angesprochen wird.
Fall nicht, bräuchte man mehr Code, um das Problem zu finden. Es ist auch nicht unbedingt, nötig eine Type-Variable Global zu deklarieren. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Dicker Hobbit |
Sa, Feb 18, 2012 14:47 Antworten mit Zitat |
|
---|---|---|
Danke an den Hinweiß von ZEVS mit der For- Each- Schleife klappt es !
(Kritik/ Verbesserungsvorschläge weiterhin erwüncht ) Bitte erfüllt! BlitzBasic: [AUSKLAPPEN] Graphics 640, 480, 16, 2 Hinweise und Kritik an meiner Einrückung bzw. Code ist erwünscht ! |
||
ZEVS |
Sa, Feb 18, 2012 14:55 Antworten mit Zitat |
|
---|---|---|
Du solltest nicht vergessen, dass LoadImage seine Zeit braucht und relativ viel Speicher belegt, bis das Bild mit FreeImage gespeichert wird. Deshalb ist es meist sinnvoll, sämtliche benötigten Bilder einmal zu Laden und immer zu kopieren:
Statt BlitzBasic: [AUSKLAPPEN] g\pic=LoadImage("gegner"+Rand(3)+".png") BlitzBasic: [AUSKLAPPEN] Dim pictures(2) edit@edit: Ein ForEach-Loop reicht. ZEVS |
||
- Zuletzt bearbeitet von ZEVS am Sa, Feb 18, 2012 14:56, insgesamt einmal bearbeitet
XeresModerator |
Sa, Feb 18, 2012 14:55 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] g\pic=LoadImage("gegner"+Rand(3)+".png") Das füllt deinen Speicher unnötig. Bilder ein mal Laden (z.B. in ein Array) und dann nur noch zuweisen.
Anstatt alle Gegner zu bewegen, solltest du vielleicht Scroll-Variablen nehmen. Code: [AUSKLAPPEN] If ImagesCollide(player,plx,ply,0 Or 1,g\pic,g\x,g\y,0) OR ist ein logischer Opperator. 0 Or 1 gibt immer 1.
Alle For..each Schleifen in gegner() solltest du zu einer zusammenfügen, nur Delete sollte halt das letzte sein, was mit einem Objekt passiert - ansonsten gibt es ein Error, weil das Objekt nach Delete natürlich Null ist. In ziel() gibt es keine Sicherung, das g auf ein gültiges Objekt zeigt - vermutlich fehlt da ein For...each um alle Objekte zu prüfen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Dicker Hobbit |
Sa, Feb 18, 2012 14:59 Antworten mit Zitat |
|
---|---|---|
Danke ich werde mir eure Tipps zu Herzen nehmen und meinen Code verbessern!
Mir ist gerade noch eine Frage eingefallen: Wie schaffe ich es, dass ein Objekt (z.B. Kugel) in die Richtung des Mauszeigers fliegt ? Ich dachte an MouseX - Wert und das der Wert dann immer weiter runter gezählt wird. Das funktioniert bei mir aber nicht so wirklich. (Dachte auch an Trigonomie, aber wusste auch nicht wie ich dass am besten anstelle) Nochmal danke und ein großes Lob an die schnelle Hilfe im Forum und die Freundlichkeit gegenüber Anfängern! Lg Dicker Hobbit |
||
ZEVS |
Sa, Feb 18, 2012 15:03 Antworten mit Zitat |
|
---|---|---|
Es gibt zwei Möglichkeiten:
1. Du berechnest den Winkel Kugel/Maus über Atan2 und dann die Veränderung über Sin/Cos (evtl. mit irgendeinem Faktor multipliziert). 2. Du berechnest den Unterschied der X/Y-Koordinaten (Matheprofessoren nennen das Vektor), teilst beide Werte durch den Abstand Code: [AUSKLAPPEN] Abstand = Sqr(XUnterschied*XUnterschied + YUnterschied*YUnterschied) und nimmst diese wieder mal irgendeinen Faktor. Letzteres ist schneller, ich finde es einfacher.
ZEVS |
||
Pokoyo |
Sa, Feb 18, 2012 15:05 Antworten mit Zitat |
|
---|---|---|
Hi,
das Zauberwort heisst ATAN2(). Einfach mal nach suchen. Da wirst du ne Menge Beispiele finden. Mir ist aufgefallen dass du z.B. in deiner Gegner Updatefunktion immer wieder dieselbe Typeliste mit For Each durchgehst. Einmal Loopen reicht. Bei sehr vielen Gegnern kann das sonst zu Performanceeinbussen führen. gruss poko |
||
|Win10 64bit|FX 8350@4,5 GHz|Asrock 990FX Killer Fatality|16GB HyperX|R9 290X|Blitz3D|BlitzMax| |
XeresModerator |
Sa, Feb 18, 2012 15:06 Antworten mit Zitat |
|
---|---|---|
Da muss ich nochmal für BPS #3 & #4 Werben. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Dicker Hobbit |
Sa, Feb 18, 2012 15:12 Antworten mit Zitat |
|
---|---|---|
Ich bin von deinen BPS echt begeistert Xeres!
Ein Wunder, dass ich die Serie bis jetzt vollständig übersehen habe. Jetzt werde ich wohl erstmal alle durcharbeiten! Danke! |
||
Dicker Hobbit |
Sa, Feb 18, 2012 18:32 Antworten mit Zitat |
|
---|---|---|
So hier bin ich wieder mit einem neuen Problem:
Wie kann ich prüfen ob alle Objekte eines Types NULL sind Ich habe es schon mit der lieben For-Eachloop versucht, aber da bricht er schon ab wenn ich nur einen Gegner besiege. Ich hoffe es ist ok, dass ich so oft eure Hilfe in Anspruch nehme. Lg Dicker Hobbit |
||
Eingeproggt |
Sa, Feb 18, 2012 18:45 Antworten mit Zitat |
|
---|---|---|
Alle Objekte=Null würde ja bedeuten dass es keine mehr gibt?
Dann frag doch folgedes ab: BlitzBasic: [AUSKLAPPEN] If First gegner=Null Then mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Dicker Hobbit |
Sa, Feb 18, 2012 18:48 Antworten mit Zitat |
|
---|---|---|
Fragt FIRST nicht nur ab ob das erste Object NULL ist ?
Ich möchte, dass wenn jeder Gegner tot(NULL) ist etwas passiert. Lg Dicker Hobbit |
||
XeresModerator |
Sa, Feb 18, 2012 18:51 Antworten mit Zitat |
|
---|---|---|
Zitat: Wie kann ich prüfen ob alle Objekte eines Types NULL sind Eine Type-Variable kann ein gültiges Objekt enthalten, oder sie enthält das Null-Objekt. Wenn du gar keine Objekte in der Kollektion/Typeliste hast, gibt First ein Null zurück.
Alternativ könntest du die Anzahl mitzählen, wäre auch zum debuggen hin und wieder praktisch. Zitat: Ich hoffe es ist ok, dass ich so oft eure Hilfe in Anspruch nehme. Klar, aber bitte benutze eher den Editbutton anstatt Doppelposts zu machen, danke.
Edit: BlitzBasic: [AUSKLAPPEN] Type TTest |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Eingeproggt |
Sa, Feb 18, 2012 19:20 Antworten mit Zitat |
|
---|---|---|
Ja, First fragt das ERSTE Element ab.
Aber das schöne an Types ist: Wenn es kein erstes Element gibt, gibt es garantiert auch kein zweites... es gibt dann einfach gar keines mehr EDIT: Antwort schreiben und dann Abendessen holen führt dazu dass Xeres schneller war... |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group