Type tut! Von dummies für dummies [BMAX]
Übersicht

![]() |
ScyrseBetreff: Type tut! Von dummies für dummies [BMAX] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Einige von euch haben diesen Thread jetzt Warscheinlich und vorallem die Anfänger unter uns voller Vorfreude aufgerufen mit dem Gedanken endlich die Types in BlitzMax verstehen zu können. Entschuldigt den Kopierten-Thread-Titel aus dem BB Bereich aber wieso lassen wir diesen Wunsch nicht wahr werden?
Klar, das einzige was ich hier tun kann ist diesen zugegeben nicht ganz ehrlichen Thread aufzumachen. Das Original befindet sich hier: https://www.blitzforum.de/foru...light=type Aber seien wir doch mal ehrlich, wenn ich mir die FAQ und Tutorial Kategorie anschaue finden sich hin und wieder Anschneidungen oder Allgemeine-Behandlungen von Types, aber keines was sich ausführlich und Anfänger-Freundlich mit Types beschäftigt. Wieso? Meine bitte, und ich bin mir da sehr sicher das ich für viele Spreche und bin vom Nutzen absolut überzeugt ist: Schaut euch den Thread den ich oben gelinkt habe an und schreibt ihn doch bitte für BlitzMax in ähnlicher Form, einfach verständlich, so das jemand der sich mit Types in BlitzMax nicht richtig auskennt endlich wirklich verstehen kann worum es dort geht. Ich habe auch ein paar Englische Type-Tuts gelesen und muss sagen ich hatte immer nur das Gefühl das will jemand mit seinem Fach-Wissen / Begriffen glänzen als wirklich Wissen zu vermitteln. Dieser Thread kann auch einfach ignoriert und gelöscht werden, aber ich hoffe einfach mal das es jetzt nicht Leute gibt die Antworten ist doch garnicht so schwer, oder lass das gespame und soviele andere Antworten die es noch gibt. Ich hoffe das sich jemand der es wirklich verstanden hat und davon gibt es hier wahrlich genug Leute einfach daran macht und eines schreibt. Nicht nur für mich, ja so selbstlos und unglaubwürdig das auch klingt ich tue das nicht nur für mich, nein ich tuhe das auch für die ganzen anderen Anfängen die immer wieder an dieser Stelle stehen! Also bitte erhört meinen Wunsch und schreibt ein Solches Tut ![]() Hochachtungsvoll, Vielen Dank, Scyrse |
||
God is real - unless declared integer. |
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bastel mal was und hoffe es wird verständlich sein, allerdings nicht ganz dem oben genannten Link ähnlich ![]() MfG DaysShadow |
||
Blessed is the mind too small for doubt |
![]() |
Scyrse |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das nenne ich mal Initiative! Super Man danke! | ||
God is real - unless declared integer. |
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, ich hab mir Mühe gegeben und hoffe es hilft:
BlitzMax: [AUSKLAPPEN] SuperStrict 'Verhindert z.b., dass man Typenangaben vergisst, da es eine Fehlermeldung ausgibt; AM BESTEN IMMER BENUTZEN !!! Wenn etwas unverständlich ist dann sagt es und fragt nach, ich helfe gerne und so gut ich kann! Ich bitte auch die erfahrenen BlitzMax-User, hier mal drüberzulesen und sich ganz dumm zu stellen um zu schauen ob sie es verstehen würden ![]() Ich ging auch davon aus dass Dinge wie "Blaupause" klar sein sollten...nen bissl Wissen setze ich schon vorraus. MfG DaysShadow PS: Morgen gehts weiter hoffe ich, ich brauch jetzt aber doch erstmal nen bissl Schlaf ![]() |
||
Blessed is the mind too small for doubt |
- Zuletzt bearbeitet von DaysShadow am Sa, Jul 11, 2009 11:34, insgesamt einmal bearbeitet
![]() |
Scyrse |
![]() Antworten mit Zitat ![]() |
---|---|---|
Noch etwas schwer zu verstehen das ich das mit Methode noch garnicht kannte, und was ist Blaupause? Ständig benutzt du dieses Wort oO ? ^^ | ||
God is real - unless declared integer. |
![]() |
ComNik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meines Wissens nach ist eine Blaupause ein Bauplan.
Days,glaube ich, versucht hier die Types als Schablonen zu bezeichnen, was durchaus sinn macht! Denn: jedes objekt wird sozusagen mit dieser schablone "gezeichnet". Da du aber die Fields jedes objekts bestimmen kannst ist es so, als würdest du die mit der schablone gezeichneten bilder unterschiedlich ausmalen können. mfg |
||
WIP: Vorx.Engine |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich habe mein Wissen damals hierrüber bekommen:
http://zehr.de/downloads/BlitzMax-OOP.pdf MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann ich dann davon ausgehen, dass ich mir das weitermachen sparen kann?
MfG DaysShadow |
||
Blessed is the mind too small for doubt |
![]() |
Scyrse |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, ich möchte gerne mit Listen Arbeiten das tuhe ich am liebsten leider werden diese in dem Tutorial garnicht behandelt weder in dem von dir noch in dem anderen? Ich habe zwar ein paar Beispiele für Listen aber verstehen tuh ich sie noch nicht so richtig ![]() |
||
God is real - unless declared integer. |
![]() |
beanage.johannesBetreff: updatet ( syntax highlight ) |
![]() Antworten mit Zitat ![]() |
---|---|---|
mein beitrag... joffe es hilft.... + LISTEN
Code: [AUSKLAPPEN] SuperStrict 'immer benutzen! hilft beim fehlerfinden und bei der ordentlichkeit 'Types 'Lektion 1 ------ PANZER (types) 'wozu types? type sind da wenn du z.b. viele autos zeichnen möchtet die verschieden aussehen und verschieden 'schnell über den bildschirm flitzen sollen... 'um z.B. viele autos zu speichern benutzt man arrays oder listen... aber dazu später und nicht in diesem tut... is 'diesem zuzorial werden wir unsere types in "normalen" variablen abspeichern.. 'ein type ist so etwas wie Muster(wie z.b eine exeltabelle mit name,tel.,adresse...) das man immer wieder für den 'selben zweck benutzt, in unserem fall 'geht es um ein Panzer. 'unsere Panzer - vorlage (der type) hat folgende werte: 'kmh , Rüstung und Schaden 'wir deffinieren einen neuen type und geben ihm den "namen" TPanzer 'die werte die oben aufgelistet sind und die jeder panzer haben soll fügen wir mit >>Field<< hinzu Type TPanzer Field KMH:Int 'Field deffiniert den enuen wert kmh von TPanzer, so hat jeder TPanzer den wir 'päter erstellen immer die selben werte Field Ruestung:Float 'Felder (Field) können alle typen sein, in diesem fall eine float (kommazahl) Field Schaden:Int EndType 'fertig ist unser panzer type... um jezt einen neuen panzer zu erstellen machen wir folgendes: Local Panzer1:TPanzer = New TPanzer 'wir geben panzer1 als typ den type TPanzer, und erstellen dann mit >> = new TPanzer<< einen neuen panzer, der in panzer1 gespeichert wird 'um den variablen kmh,ruestung und schaden ihre werte zu verpassen machen wir folgendes... Panzer1.KMH = 120 'Der KMH-wert von Panzer1 beträgt jetzt 120... um einen wert dem jeweiligen Field 'zuzuordnen oder es abzurufen schreiben wir die >>variable.field = wert<< Panzer1.Ruestung = 5.32 Panzer1.Schaden = 342 'alle felder von panzer1 sind nun beschrieben, um sie wieder auszulesen machen wir folgendes... Print Panzer1.KMH 'gibt den wert des feldes KMH von panzer1 zurück... Print panzer1.Ruestung Print panzer1.Schaden 'Lektion 2 ------ ZUG (function) 'nun ist diese methode des beschreibens und auslesens der felder sehr umständliuch besinders wenn man sehr 'viele Felder hat. zu diesem zweck benutzen wir ' >>Method<< und >>Function<< 'eine methode (method) ist eigentlich das selbe wie eine function nur das wir sie nur über einen bereits erstellten 'type aufrufen können. 'um uns die erstellung eins neuen zuges erleichtern zu können benutzen wir eine function. 'wir erstellen dazu erstmal den type zug, mit den felder kmh,laenge,name und gewicht und der function Create, 'die einen neuen zug erstellen und zurückgeben soll. Type TZug Field name:String Field KMH:Int Field laenge:Int Field gewicht:Int Function Create:TZug(name:String,kmh:Int,laenge:Int,gewicht:Int) 'wir nennen unsere function create, 'das :TZug steht dafür das sie einen TZug Returnen(zurückgeben) soll Local neu:TZug = New TZug 'wir erstelle LOCAL(gilt nur in der function) einen neuen TZug neu.name = name 'die parameter der function werden jetzt den feldern von neu "übergeben" neu.kmh = kmh ' hier auch... neu.laenge = laenge 'hier auch... neu.gewicht = gewicht ' und auch hier... Return neu:TZug 'die var. neu ist jetzt fertig beschrieben mit allen infos über den zug, und wird jetzt 'von der function create zurückgegeben sodas wir extrem schnell und einfach einen neuen zug erstellen können EndFunction EndType Local ICE:TZug = TZug.Create("ICE 3",320,120,67) 'wir erstellen einen neue TZug variable und rufen unsere 'function Create() von TZug auf um ICE gleich mit daten zu füllen 'soweit sogut... nur um die daten auszugeben und verarbeiten zu können müssen wir immernoch viel doofen 'code schreiben... bei diesem broblem helfen uns methoden >>method<< 'methoden kann man nur mit einer bereits erstellteten type:variable benutzen, also nicht wie functionen, sonder 'erst wenn die variable deklariert ist und ein neuer z.B. TPanzer in ihr erstellt wurde 'Lektion 3 ----- AUTO (method) 'wir haben diesmal unseren type TAuto mit den feldern KMH und PS und mit der function Create die oben 'erklehrt wird. Type TAuto Field KMH:Int Field PS:Int Function Create:TAuto(kmh:Int,ps:Int) Local neu:TAuto = New TAuto neu.kmh = kmh neu.ps = ps Return neu EndFunction Method PrintWerte() 'das nun ist unsere methode PrintWerte die die werte des types "printen" soll und auch 'wird ;) wie du sicher erkannt hast ist es eigentlich eine function (man kann auch oarameter benutzen usw...) 'nur das sie halt method heist und nur über einen erstellten type ufgerufen werden kann... 'man könnte das ganze natürlich auch mit einer function lösen, doch dann 'müsste man als parameter eine TAuto variable reinschreiben damit die function weis um welches TAuto es sich 'denn da handelt.. Print kmh Print ps EndMethod EndType 'so na dann aml testen... Local Laster:TAuto = TAuto.Create(160,300) Laster.PrintWerte() ' dei methode wird wie beim abrufen eins feldes über die variable TAuto '"abgerufen/aufgerufen" 'so das wars dann auch schon mit einen noobie guide :D hoffe er hat euch geholfen :) LISTEN Code: [AUSKLAPPEN] 'Listen...
'in listen kann man so viele var. wie man möchte abspeichern, auslese, beschreiben usw. 'hier mal ein kleines beispiel mit einem type TComputer Type TComputer Field name:String Field os:String Global ComputerList:TList = CreateList() 'wir speichern die liste (global damit 'wir sie von überal aufrufen können) ab Function Create(name:String,os:String) Local neu:TComputer = New Tcomputer neu.name = name neu.os = os ListAddLast(ComputerList,neu) 'anstat zu returnen speichern wir sofort in die liste ein.. wir könnten 'auch listaddfirst() um 'den neuen computer als ersten zu speichern... -> andere 'reinfolge EndFunction EndType For Local i = 0 To 9 TComputer.Create("computer"+i,"Windows"+Rand(0,100)) 'erstellen ein par computer die sofort in die liste 'gepackt werden Next For Local a:TComputer = EachIn TComputer.ComputerList 'und lesen die liste aus... wichtig ist das a ein 'TComputer ist und 'das wir die liste über den type ansprechen 'müssen also TComputer.ComputerList ' eachin list jedes listen-element nach der 'reinfolge in der wir es/sie reingepackt haben aus... Print a.name Print a.os Next |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group