Frage zu Types in Blitzmax
Übersicht

LucySalzBetreff: Frage zu Types in Blitzmax |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
wollte mal fragen wie ich das realisiere: BlitzMax: [AUSKLAPPEN] Strict das : Saurier(I) = New TMonster geht ja nicht, ich möchte aber die gleichen objekte haben, denen ich unterschiedliche eigenschaften zuweisen möchte..... danke schonmal ^^ |
||
Lars Kammer |
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit Linked Lists
BlitzMax: [AUSKLAPPEN]
|
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
![]() |
klin |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN] Local I:Int Du musst Arrays definieren ( [ ] ). So in etwa wäre es lösbar. Klin Edit: Ja, es ist auch mit LinkedLists möglich. |
||
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm ich weiß nicht, wie sowas in BB funktioniert, aber da scheint es ja dran angelehnt zu sein.
Blitzmax verwaltet das etwas anders als BB. Ich glaube, in BB musste man sich keine gedanken machen, wo die dinger referenziert sind, in Blitzmax auf jedenfall. Dein beispiel lässt sich anders lösen. Zum einen kannst du wie Propellator vorgeschlagen hat, eine TList verwenden, zum anderen könntest du auch eine kleine Hilfsfunktione schreiben. BlitzMax: [AUSKLAPPEN] Strict Wenige änderungen, große auswirkung. Solche Create-funktionen in kombination mit einer Globalen type-internen liste erachte ich als äusserst hilfreich. eine 2te idee wäre auch, eine TMap zu verwenden. Eine TMap ist eine andere art 'liste', wo du 2 objekte miteinander assoziieren kannst und über das 'key' objekt einen zugeordneten wert finden kannst. Eachin ist ebenfalls möglich. Am gängigsten wäre es hier, als key einen string zu verwenden. zb "Dinosaurier". Ein kleines bissl Code: BlitzMax: [AUSKLAPPEN] Type TMonster |
||
LucySalz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke erstmal an alle, ich schau mir das mal in Ruhe an, sodass ich lernen kann ^^ | ||
Lars Kammer |
LucySalz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bis auf das letzte Beispiel gehen alle Codes nicht.... das letzte ist für mich zu kompliziert........
entweder wird saurierliste nicht gefunden oder andere sachen.... |
||
Lars Kammer |
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also du musst schon den ganzen Code kopieren ![]() Denn ich seh da nirgends fehler. Wäre auch echt supi wenn du Hilfe erwartest, dass du sagst, wo dann die 'SaurierListe' nicht gefunden wird oder indem du mal "andere Sachen" ein wenig spezifizierst, sonst wirds nämlich echt schwer zu erraten, was du falsch gemacht hast. |
||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
LucySalz hat Folgendes geschrieben: Bis auf das letzte Beispiel gehen alle Codes nicht.... das letzte ist für mich zu kompliziert........
entweder wird saurierliste nicht gefunden oder andere sachen.... Das ist schade. Werde dir aber gerne helfen, wenn du mir mitteilen könntest, was falsch sei. MfG |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
LucySalz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Compile Error: Identifier 'saurier' not found
(Bei dem SaurierList und so ^^) wenn ich superstrict und strict raus lasse, geht es. Bei PhiliK's beispiel spuckt mein programm das aus: Compile Error: Identifier 'x' not found....... Um mein Vorhaben nochmal zu verdeutlichen, ich will mit der maus waypoints setzen, diese möchte ich in types speichern... zb: WaypointA x=30,y=60 WaypointB x=60,y=10 .... 1. es gibt vielleicht nur 3 punkte, vielleicht auch 1000..... 2. die namen stehen noch nicht fest, muss sie aber ansprechen können.... ich hoffe das hilft ein wenig ^^ |
||
Lars Kammer |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde dir empfehlen, erst mal mit TList oder einem Array zu arbeiten.
Komplizierter muss man es sich für Waypoints auch nicht unbedingt machen. Und: Kein Strict zu benutzen, ist keine Lösung. |
||
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) |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: ansprechen
Ein denkbar methaphorischer Begriff, wenn du keinen Type-Type-Chat mit Chatbot programmierst. Willst du die Instanzen unter den Namen WaypointX ansprechen können? Dann nimm Maps. Willst du einfach nur wissen, welcher WayPoint als nächstes kommt? Ein einfaches Field genügt. Genügen die Integrer-IDs? Dann nimm eine Liste oder ein Array. Bei Listen hast du es prinzipiell einfacher, wenn du beliebige Zahlen hast, aber bei Arrays bleiben die Indizes konstant. Mit anderen Worten: Was willst du konkret durchsetzen? Ein paar Methaphern zu Problemen in Beginner-Konzepten (sagt mir zumindest das Forum und die Erfahrung, ich lerne es aber gerne besser) helfen den helfenden nicht. ZEVS |
||
LucySalz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich möchte waypoints machen, die erstens unbekannt sind, mit einem linksklick der maus dann erstellt werden und dann sollen die waypoints mit linien verbunden werden.
warum geht es ohne strict? was soll ich nun machen, die codes, die ihr gepostet habt, gehen leider nicht... |
||
Lars Kammer |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du speicherst die WayPoints in einer TList. Mit jedem Mausklick fügst du dieser Liste einen Eintrag hinzu.
Zum Zeichnen gibt es zwei Möglichkeiten: 1. Über eine For-Next-Schleife gehst du alle Indizes von 0 bis Count()-2 durch. Anschließend ziehst du eine Linie von WayPoints.ValuAtIndex(index) zu ...(index+1). 2. Du speicherst zu jedem WayPoint den nächsten. Eventuell erübrigt sich so auch die Liste. Nun kannst du einfach zu jedem WayPoint den nächsten ermitteln und entweder mit diesem direkt oder dem nächsten in der Liste fortfahren. Zum Hinzufügen wäre es ratsam, sich den letzten WayPoint zu merken. WayPoints.Last() geht aber natürlich auch. Ein Problem mit LinkedLists ist aber, dass es immer schwieriger wird, an Elemente heranzukommen, wenn diese weiter hinten sind. Speziell die Index-Variante (1) verwendet oft die immer ineffizienter werdende Funktion ValueAtIndex (mit steigendem Index), wobei man bei 2. auch mit dem Last aufpassen sollte. Eine hierarchische Struktur hat auch Ihre Tücken, wenn das mit den 1000 kein Witz war, solltest du aber auf Geschwindigkeit achten. ZEVS |
||
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
LucySalz hat Folgendes geschrieben: Compile Error: Identifier 'saurier' not found
(Bei dem SaurierList und so ^^) wenn ich superstrict und strict raus lasse, geht es. Ich sag dir, woran es liegt. Da fehlt was ![]() Code: [AUSKLAPPEN] For local saurier:Tmonster = EachIn SaurierListe Print saurier.derp Next Muss das heißen. Da fehlt das local ![]() So sollte es gehen |
||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
LucySalz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
BlitzMax: [AUSKLAPPEN] SuperStrict hab jetzt in der letzten for schleife ein local reingeschoben.... nun kommt: Compile Error: Missing type specifier wasn das nu???? Achso noch eins: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||
Lars Kammer |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Missing type specifier
Genau das ist das Problem... Code: [AUSKLAPPEN] For Local saurier:TMonster = EachIn SaurierListe
Ohne die Angabe TMonster kann der Compiler nicht wissen, was in der Variable stecken soll... Und bitte: Smilies sind keine Herdentiere. Happy Chanukka. ![]() |
||
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) |
![]() |
klin |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN] SuperStrict Das bedeutet, dass eine Variabel, die du erstellen möchtest, keine Definition hat. Somit weiß BlitzMax garnicht, was für eine Art diese Variabel sein soll (Type). Und da du den Type "TMonster" erstellt hat un offenbar eine Liste mit TMonstern durchgehen möchtest, gehe ich davon aus, dass dieses "Local saurier" = ein TMonster sein sollte. Klin Ebenfalls. EDIT: Arghs Oo Schon wieder zu spät... |
||
LucySalz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so ok hat geklappt, mein verständnis wächst von zeit zu zeit ^^
was ist, wenn ich jetzt schreibe: If Mousehit(Mouse_left) Local saurier:TMonster = New TMonster endif wie bekomm ich das hin, dass ich zb: saurier(1) oder saurier(3) .... angesprochen bekomme? zb möchte ich wissen ob saurier(9) < 9 ist. Bitte so einfach wie möglich erklären, ich bin echt in types der absolute anfänger ^^ |
||
Lars Kammer |
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verstehe ich es richtig, wenn du damit sagen willst, dass du höchstens 9 Saurier haben willst?
Oder wie muss ich es verstehen? Mit der EachIn-Schleife kannst du innerhalb dieser Schleife jede einzelne Instanz, welcher in die Liste eingetragen wurde, ansprechen. (Deshalb das "Print saurier.derp" als Veranschaulichung) MfG |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Arrays werden in BlitzMax mit eckigen Klammern geschrieben.
BlitzMax: [AUSKLAPPEN] Local saurier:TMonster[10] '* Platz für 10 Monster (von 0 bis 9) Wenn kein Monster drin ist, zeigt der Eintrag auf NULL... BlitzMax: [AUSKLAPPEN] If saurier[0] = Null Then ...und du kannst dort ein neues Objekt rein packen... BlitzMax: [AUSKLAPPEN] saurier[0] = New TMonster ...und die Felder setzen... BlitzMax: [AUSKLAPPEN] saurier[0].Leben = 100 ...vorausgesetzt, das Field wurde in TMonster als Int definiert. Eine Create-Funktion innerhalb von TMonster wäre zu empfehlen, um die nötigen Fields mit den richtigen Start-Werten zu befüllen. |
||
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) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group