Types durchzählen und so weiter
Übersicht

![]() |
C64-FloBetreff: Types durchzählen und so weiter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo!
Ich habe kürzlich bemerkt, dass ich unbedingt TYPES in meinem neuen Projekt benötige... ![]() Also habe ich flugs das eine oder andere Tutorial durchforstet und denke nun auch die Grundzüge begriffen zu haben. Nur das eine oder andere erscheint mir sehr seltsam.... Wie zähle ich zB meine TYPES durch? Also Idee ist : Ich habe eine dynamische Anzahl von Waffen des Typs wpn - Code: [AUSKLAPPEN] type wpn field s field name$ end type dim waffe.wpn(20) for a=1 to 20 waffe(1)=new wpn select a case 1 waffe(a)\name$=("Dolch") waffe(a)\s=4 case 2 waffe(a)\name$=("Knüppel") waffe(a)\s=6 ;[...] end select next Zu den 20 festen Basiswaffen kommen später dynmaisch welche dazu oder gehen welche flöten - aber wie zähle ich durch wieviele ich gerade habe bzw kann ich eine Schleife durch alle wpn-TYPES durchlaufen lassen? mit Code: [AUSKLAPPEN] ;----durchzählen anzahl=0 for a=1 to last wpn if waffe(a)<>null then inc(anzahl) print waffe(a)\name$+" Schaden: "+waffe(a)\s end if next print "Anzahl der Waffen: "+anzahl funktioniert es nicht so ganz - ![]() |
||
"Die Situation ist aussichtslos - aber nicht kritisch!"
(S.Effenberg.) |
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Type TObject Global _list:TList Field x:Int Field y:Int Function Add:TObject(x:Int, y:Int) Local obj:TObject = New TObject if obj._list = Null Then obj._list = New TList obj._list.AddLast(obj) obj.x = x obj.y = y Return obj End Function End Type Global objekte:TObject For Local i:Int = 0 To 10 objekte = TObject.Add(Rnd(0,800), Rnd(0,600)) Next For objekte:TObject = EachIn objekte._list Print String(objekte.x)+", "+String(objekte.y) Next |
||
Farbfinsternis.tv |
![]() |
Justus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Speichere deine Instanzen in einer TList. Lies dir außerdem so bald wie möglich Tutorials und Codes zu Objektorientierter Programmierung (kurz: OOP) durch, um neue und effizientere Wege des Programmierens zu erschließen und anwenden zu können.
Eine Möglichkeit mit einer solchen Waffe umzugehen, steht hier: Code: [AUSKLAPPEN] 'Es empfiehlt sich, mit SuperStrict zu arbeiten, um möglichst eindeutigen und durchschaubaren Code
'zu erhalten. Ist SuperStrict aktiviert, so muss man jede Variable mit ihrem Typ (String, Int, Float, etc.) 'und als Local oder Global usw. definieren. SuperStrict Type TWeapon 'Einfach ein Testfeld Field number:Int 'Diese Methode wird automatisch aufgerufen, wenn eine neue Instanz mit New erstellt wird Method New() self.number = Rand(0,10) EndMethod End Type 'Hier erstellen wir eine neue Liste und 'deklarieren weapon:TWeapon Global weaponList:TList = New TList Global weapon:TWeapon 'Wir fügen unserer Variable 4 Waffenobjekte hinzu ListAddLast(weaponList,New TWeapon) ListAddLast(weaponList,New TWeapon) ListAddLast(weaponList,New TWeapon) ListAddLast(weaponList,New TWeapon) 'Jede einzelne Waffe in der Liste wird durchgegangen For weapon:TWeapon = EachIn weaponList Print weapon.number Next Es ist nicht einfach zu verstehen, aber wenn du dir Mühe gibst, viele kleine programmiererische Schritte tust und schnell lernst, wirst du es schaffen. |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bin jetzt mal mutig und stelle eine These auf:
Da hat jemand aus Versehen in die BlitzMax Kategorie gepostet, obwohl es ein BB Problem ist. Deshalb verschiebe ich das mal in die BB Beginner Ecke. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
C64-FloBetreff: DANKE LIEBER ADMIN! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bin schon am Verzweifeln hier, weil der ganze Antwort-Code einfach nicht funktionieren will!
(Danke Justus + Farbfinsternis nichtsdestotrotz) ![]() Ja, hab mich schon gewundert - obs am Kaffe liegt? ![]() Also mit dynamischen Arrays hab ich mal schon ne Weile rumgemacht - allerdings nicht in BB ![]() Das muss doch hier auch irgendwie gehen...? Frage: Wie zähle ich alle vorhandenen TYPES durch zB Code: [AUSKLAPPEN] for x=first wpn to last wpn [...] next Wenn ich das irgendwie könnte, wäre eigentlich der Rest machbar.... |
||
"Die Situation ist aussichtslos - aber nicht kritisch!"
(S.Effenberg.) |
![]() |
garret |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lass in einer For w.weapon = Each weapon-Schleife alle Types durchlaufen und erhöhe entsprechend eine Zählvariable.
Code: [AUSKLAPPEN] anzahl=0 ; vorher auf 0 setzen da sie ja sonst immer höher wird For w.weapon = Each weapon anzahl=anzahl+1 ;[andere Befehle] Next Dann musst du nicht die genaue Anzahl (z.B. 20 bei dir) angeben. Die Schleife durchläuft jedes (Each) weapon-Element. MfG garret |
||
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht) |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Farbfinsternis hat Folgendes geschrieben: Code: [AUSKLAPPEN]
Type TObject Global _list:TList Field x:Int Field y:Int Function Add:TObject(x:Int, y:Int) Local obj:TObject = New TObject if obj._list = Null Then obj._list = New TList obj._list.AddLast(obj) obj.x = x obj.y = y Return obj End Function End Type Global objekte:TObject For Local i:Int = 0 To 10 objekte = TObject.Add(Rnd(0,800), Rnd(0,600)) Next For objekte:TObject = EachIn objekte._list Print String(objekte.x)+", "+String(objekte.y) Next Das ist kein BMax ![]() |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein bloß nicht.
Code: [AUSKLAPPEN] type waepon field bla end type for tmp.weapon = each weapon tmp\bla = 10 next |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
und?
Das sind ganz normale BB Commands... ps: da muss "type weapon" stehen, nicht "type waepon" |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group