Type-Tutorial für Elefanten (und Anfänger!)
Übersicht

![]() |
PropellatorBetreff: Type-Tutorial für Elefanten (und Anfänger!) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Type-Tutorial für Elefanten!
Stell dir vor, du seist ein Elefant im Regenwald. Du stehst vor einem sehr kniffeligen Problem: Vor dir befinden sich sehr viele verschiedene Bananen, und du weisst nicht, welche von denen du als erstes essen sollst. Da du, wie alle Elefanten, ziemlich klug bist, öffnest du also die BlitzBasic IDE um ein Programm zu schreiben, um das Problem zu lösen. Deine Anforderungen sind Reife und und Grösse der Bananen. Du bist nämlich ein Gourmet-Elefant, und weisst, dass die perfekte Banane 300 Gramm wiegt und satt gelb ist. Künstlerische Darstellung der oben beschriebenen Situation. Da du alles mit deinem Rüssel tippen musst, und deshalb durch dieses Handicap verlangsamt bist, hast du noch nichts von Types gehört. Deshalb würdest du einfach ein Array mit einer bestimmten Grösse erstellen für jeweils eine Eigenschaft, und dann beide Arrays durchgehen. Die Nummer mit der Farbe Gelb und der Grösse 300 würde dann für dich gewinnen. Nun ist diese Methode aber etwas schlecht - einerseits musst du dich mit einem Array für jede Eigenschaft rumschlagen, andererseits musst du erst die Bananen zählen um ihre Anzahl zu wissen. (Und Elefanten haben keine Finger fürs Zählen.) Zum Glück ist Bobo der Bonobo anwesend, und kann dir helfen. Neben allerlei Obszönitäten weiss er nämlich auch mit Types umzugehen, und er ist bereit diese dir beizubringen, sofern er alle grünen Bananen bekommt. (Er ist ein sehr intelligenter Bonobo und legt für die Zukunft an.) Die Type-Definition Ein Type ist eine Vorlage - Er gibt an welche Eigenschaften ein Objekt haben kann. Ein Type ist keine Variable, die existiert, Objekte sind Variablen die einem gewissen Type entsprechen. Klingt kryptisch, ist es aber nicht! BlitzBasic: [AUSKLAPPEN] Type TBanane Dies wäre die Definition des Typs für Bananen. Wir nennen den Typ hier "TBanane". Eine Banane (ein Objekt) vom Typ TBanane (der Type) kann also die Eigenschaften 'gewicht' (ein Integer, Grammangabe) und 'farbe' (ein String) haben. Was wir nun haben ist eine Definition für die Eigenschaften einer Banane, aber wir haben noch keine Banane. Das sollten wir ändern! BlitzBasic: [AUSKLAPPEN] erstebanane.TBanane = New TBanane Nun haben wir eine Banane! Das Objekt ist in der Variable "erstebanane" gespeichert. Jedes Objekt hat nun die Eigenschaften des Typs TBanane. Nun können wir der Banane Werte für diese Eigenschaften zuweisen! BlitzBasic: [AUSKLAPPEN] erstebanane\gewicht = 300 Vor dem Backslash ist das Objekt, nach dem Backslash die Eigenschaft des jeweiligen Objektes. Eigenschaften (Fields) sind nichts anderes als Variablen, die zu einem gewissen Objekt gehören. Das heisst, wenn wir eine zweite Banane erstellen, hat sie eigene Variablen, unabhängig vom ersten Objekt. Machen wir das doch! BlitzBasic: [AUSKLAPPEN] nocheinebanane.TBanane = New TBanane Herauszufinden, welche Banane die perfekte Banane ist, und welche an Bobo geht, ist nun noch Trivial. Aber stellen wir uns mal vor, wir hätten 100 Bananen. Ja, machen wir mal 100 Bananen. BlitzBasic: [AUSKLAPPEN] For i% = 1 To 100 In einer For ![]() Aufmerksame Elefanten haben nun bemerkt, dass wir gar keine Variablen haben die auf alle Bananen-Objekte zeigen. Nicht so schlimm, brauchen wir nicht! Alle Bananen werden im Prinzip ja gleich auf Gewicht und Farbe überprüft. Aber wie kommen wir nun wieder an die Bananen-Objekte ran? BlitzBasic erstellt uns automatisch eine Liste aller Bananen! In dieser Liste ist jedes Objekt vom Typ TBanane automatisch verzeichnet, und wir können sie jederzeit mit einer For ![]() ![]() BlitzBasic: [AUSKLAPPEN] For b.TBanane = Each TBanane Nun spuckt unser Programm uns für jede Banane eine Zeile Text aus, die ihre Eigenschaften enthält. In der Schleife definieren wir das Objekt b, welches bei jedem Schleifendurchlauf auf ein Objekt in der Liste zeigt. Beim ersten Durchlauf ist b das erste Objekt in der Liste, beim Zweiten das zweite, beim Dritten das Dritte und so weiter. Somit gehen wir alle Bananen ein mal durch! Nun müssen wir nur noch die Bananen überprüfen, und die perfekte Banane essen. BlitzBasic: [AUSKLAPPEN] For b.TBanane = Each TBanane Falls eine Banane 300 Gramm schwer ist und dazu noch Gelb, dann essen wir sie, in dem wir sie der Funktion "BananeEssen" als Parameter übergeben, und sie darin mit Delete ![]() Ist die Banane Grün, dann sagen wir Bonobo dass es eine Banane für ihn hat. Tipp: Ihr könnt nicht auf ein Objekt zugreiffen, nachdem es gelöscht wurde. Ist ein Objekt gelöscht, so entspricht in diesem Beispiel b = Null ![]() Das wärs auch eigentlich schon. Solltet ihr bei dem Beispiel nie auf die perfekte Banane stossen, könnt ihr mit folgender Zeile die Zufallszahlen etwas aufmischen, in dem ihr sie irgendwo vor dem Erstellen der Bananen hineinkopiert. BlitzBasic: [AUSKLAPPEN] SeedRnd MilliSecs() Ich hoffe ich konnte mit diesem einführenden Tutorial helfen! Fröhliches Tröten! |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
![]() |
Triology |
![]() Antworten mit Zitat ![]() |
---|---|---|
Super Tutorial!
Das mit den Arrays sollte doch hoffentlich keine Anspielung auf meine Typefeiniche Codes sein ![]() |
||
bjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so ein geniales tutorial ![]() jetzt weiß ich auch endlich, wie man das "x"\Type verwendet. dir auch ein fröhliches tröten propellator. ![]() |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gutes Tut!
Wenn Elefanten das verstehen können, hilft es sicherlich auch den Anfängern ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
- Kurz und knackig !
- Alle wensentlichen Inhalte vermittelt! - Witzig zu lesen - Toller Einstieg in Types ... Wunderbar ![]() (Eventuell noch ein Satz für was man Types in der Spieleentwicklung braucht. Ich hatte damals das Problem das immer alle von Types geredet haben, ich aber nicht verstanden habe für was genau die gebraucht werden..) |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Silvio |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich verstehe es nicht richtig. In der For-Schleife werden 100 neue Bananen erstellt, aber heißen die Bananen alle gleich? Wie kann ich die denn Unterscheiden?
Und wie kann ich einzelne Objekte löschen? |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst zum Beispiel eine neue Type-Variable anlegen, das eine ID beinhaltet.
BlitzBasic: [AUSKLAPPEN] Type irgendwas |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
...was aber völlig sinnlos ist, da die Type-Instanz bereits die gesamte ID-Funktion übernimmt. Es würde mehr Sinn machen die Dinger einfach in ein Array abzulegen, anstatt die gesamte Liste durchzugehen für einen bestimmten ID-Eintrag.
Je nach Anwendung musst du auch überhaupt nicht wissen welche bestimmte Instanz du ansprichst, sondern nur was für Eigenschaften dass sie hat. |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group