Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  FAQFAQ  SuchenSuchen  AnmeldenAnmelden  MitgliederMitglieder  LoginLogin  

Austausch | 
 

 2: Variablen

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: 2: Variablen   Sa Feb 07, 2009 1:53 am

Vorrausetzung für dieses Tutorial ist das verständniss von der boolschen Algebra (true und false) . Hier könnt ihr eure wissenslücke füllen:
Bool und if

Das was eine Welt lebendig macht, was den alten Müller daran erinnert das du sein Brot gestohlen hast, dein Kontostand. Das sind alles Variablen. Die werde ich euch jetzt (hoffentlich) ein wenig näher bringen können.

Eine variable speichert information, zum beispiel true/false, 42 oder einen string wie zb. "Wo ist mein Brot?"
Wenn man ihr einen Wert zugewiesen hat dann merkt sie ihn sich solange bis sie stribt.
Zunächst muss man diese variable ersteinmal erschaffen (deklarieren):
Zitat :
var VariablenName;
Der VariablenName kann dabei frei gewählt werden, es sind jedoch die gleichen regeln zu beachten wie bei der namensgebung einer funktion.
Wenn du jetzt deiner variable ein schönen Namen gegeben hast, können wir ihr information geben:
Zitat :
var Hunger;
Hunger = true;
//man kann der variable auch bei der initialisierung werte zuweisen, wenn man gerade lustig ist:
var Hunger = true;
Die variable gibt jetzt immer ihren wert zurück, wenn man sie schreibt (Rückgabewert-> bool und if tutorial)
Zitat :
var Hunger = true;
if (Hunger) FutterSuchen();//In diesemfall wird Futtersuchen ausgeführt

Es gibt nicht nur true und false, ich zeige euch noch die Ganzzahl (integer)
Ein integer ist nichts anderes als eine Natürliche (glatte) zahl wie zb 1, 2 oder 42.
Damit kann man zum beispiel rechnen:
Zitat :
var Kasse;
Kasse = 12;//wir tun 12 gold in die Kasse
Kasse = Kasse + 2;//12 gold + 2 gold mehr sind 14 gold =D
Kasse -= 5; //wir ziehen 5 gold ab.
//-= ist ein Operator der einem die schreibarbeit verkürzt. Es ist im prinzip das selbe wie das:
Kasse = Kasse - 3;
//es gibt selbstverständlich auch +=, *=, /=, *(mal), /(durch), ^(potenz)

Es gibt allerdings noch weitere Datentypen. Für Wissbegierige hier der doku link: Datentypen


Nun zur lebenszeit einer variablen. Sie lebt nur in dem block aus geschweiften klammern ( {} ) in dem sie erschaffen wurde, dabei zählen auch die blöcke, welche die funktion definieren (func Funktion(){})
Zur verdeutlichung:
Zitat :
{
var A;
//Hier existiert A
{
var B;
//hier existiert A und B
}
//Hier ist B tot :\
//aber A lebt noch
}
//Hier ist auch A tot

Wenn man variablen haben möchte die länger als einen Block/eine funktion leben sollen verwendet man lokale und globale variablen.

Lokale und Globale variablen werden immer außerhalb einer funktion deklariert und können nicht dierekt zugewiesen werden.

Lokale variablen existieren nur für ein Objekt (zb. flint). Wenn es weg ist, ist die lebenszeit der variablen vorbei.
Bei der deklaration schreibt man local, statt var.

Zitat :
local Brot;

func BrotBacken()
{
Brot ++;
// Brot += 1 kann man zu Brot++ verkürzen (das selbe gilt für --)
}

func GetBrotMenge()
{
return Brot;//Man kann lokale vars nur im objekt selbst abfragen. Bei interaktion mit anderen objekten muss man auf solche funktionen zurückgreifen.
}

local Knusprig = true;//geht nicht, man kann lokale und globale variablen nicht sofort bei der deklaration zuweisen.
func falsch()
{
local Teigmenge; //Das geht nicht!
}

Globale variablen gelten für das Gesammte spiel, sie können überall geändert und erfasst werden. Man deklariert sie mit static:
Zitat :
static WeltBrotMenge;


Dieses Wissen, zusammen mit der kenntnis von "if Sätzen" kann ma für schöne dinge nutzen. Ich hoffe es hat euch geholfen, auch wenn ich diesesmal darauf verzichtet habe wirklich alles zu erklären =)

Hier ein kleiner denkanstoß, was so alles möglich ist:
Zitat :
//Russisch Roulett flint:
local Luck;

public func Hit()
{
var Zufallszahl = Random(10);//Random gibt einen wert zwischen 0 und der angegeben zahl zurück, dieser ist zufällig =)
if (Zufallszahl == 1) Explode(30); //Explode sprengt das objekt mit der angegebenen stärke
else if (Zufallszahl == 2) Explode(40);
else if (Zufallszahl == 3) Explode(50);
else Log("Glück gehabt!"); //log gibt die angegebene nachricht im konsolenfenster aus
Luck++;
if (Luck > 10) Explode(100); //zuviel glück ist auch nicht gut =)
return;
}
Nach oben Nach unten
Benutzerprofil anzeigen
Enrique
Generalleutnant
Generalleutnant
avatar

Männlich Ort : Oelde, NRW
Anmeldedatum : 20.05.08

BeitragThema: Re: 2: Variablen   Sa Feb 07, 2009 3:22 pm

Da fehlen die "*****" Very Happy!

Ansonsten ein schönes Tutorial.
Nach oben Nach unten
Benutzerprofil anzeigen
Dragonclonk
Kadett
Kadett
avatar

Männlich Alter : 24
Ort : Lübeck
Anmeldedatum : 11.12.08

BeitragThema: Re: 2: Variablen   Sa Feb 07, 2009 10:52 pm

Wiedermal ein schönes tut von Liech.
Wer dich als Scriptlehrer hat, weiss sich glücklich zu schätzen.
Nach oben Nach unten
Benutzerprofil anzeigen
Spiederschwein
Kadett
Kadett
avatar

Männlich Anmeldedatum : 04.07.09

BeitragThema: Re: 2: Variablen   Do Jul 09, 2009 6:38 pm

ein super tutorial aber warum gibt es noch kein "Russisch Roulet Flint" Question
Wäre eigentlich lustig Very Happy
Nach oben Nach unten
Benutzerprofil anzeigen
Gamer
Staatsrat
Staatsrat
avatar

Männlich Alter : 22
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

BeitragThema: Re: 2: Variablen   Do Jul 09, 2009 7:01 pm

Und was stellst du dir darunter vor?

_________________
Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars

Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei!
Nach oben Nach unten
Benutzerprofil anzeigen http://www.gamer95.npage.de/
Extremclonk
Staatsrat
Staatsrat
avatar

Männlich Ort : Am Anti-Spam-Limes
Anmeldedatum : 19.01.09

BeitragThema: Re: 2: Variablen   Do Jul 09, 2009 7:05 pm

Ein Flint mit ungefähr 30 verschiedenen möglichkeiten zu explodieren?
Nach oben Nach unten
Benutzerprofil anzeigen
Gamer
Staatsrat
Staatsrat
avatar

Männlich Alter : 22
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

BeitragThema: Re: 2: Variablen   Do Jul 09, 2009 7:34 pm

Oder so per RandomX() Ne Zahl von 0 - 10 und wennse 5 ist dann explodiert sie. Und immer weitergeben. Oder aber wie mit Magazin das die Zahl immemr h;her wird *Tastatur spinnt grad voll( und dann explodiert.

_________________
Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars

Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei!
Nach oben Nach unten
Benutzerprofil anzeigen http://www.gamer95.npage.de/
Spiederschwein
Kadett
Kadett
avatar

Männlich Anmeldedatum : 04.07.09

BeitragThema: Re: 2: Variablen   Do Jul 09, 2009 9:03 pm

Eher eine Art Revolver der Per Random System garnicht bis stark explodiert.
Aber der trotzdem bestehen bleibt.
Nach oben Nach unten
Benutzerprofil anzeigen
Spiederschwein
Kadett
Kadett
avatar

Männlich Anmeldedatum : 04.07.09

BeitragThema: Re: 2: Variablen   Sa Jul 11, 2009 10:23 am

Es ist aber noch ein fehler in deinem System des Skripts.
Zitat :
var Zufallszahl = Random(10)
Das programm wird nur die zahlen 1bis 9 anzeigen aber niemals die 10
das heißt die große explusion wird es nie geben.

//Russisch Roulett flint:
local Luck;

public func Hit()
{
var Zufallszahl = Random(11);

Denn das Random muss auf 11 gestellt werden
Nach oben Nach unten
Benutzerprofil anzeigen
trike994
Konteradmiral
Konteradmiral


Männlich Alter : 23
Anmeldedatum : 10.12.08

BeitragThema: Re: 2: Variablen   Sa Jul 11, 2009 11:18 am

nö, es kommen dann dich die zahlen 0-9, soweit ich weiß, also muss es
Code:
var Zufallszahl = Random(10) +1;
heißen, oder?
Nach oben Nach unten
Benutzerprofil anzeigen
Toastbrot
Kadett
Kadett
avatar

Männlich Anmeldedatum : 10.03.09

BeitragThema: Re: 2: Variablen   Sa Jul 11, 2009 7:53 pm

Spiederschwein schrieb:
Es ist aber noch ein fehler in deinem System des Skripts.
Zitat :
var Zufallszahl = Random(10)
Das programm wird nur die zahlen 1bis 9 anzeigen aber niemals die 10
das heißt die große explusion wird es nie geben.

//Russisch Roulett flint:
local Luck;

public func Hit()
{
var Zufallszahl = Random(11);

Denn das Random muss auf 11 gestellt werden


Die groe Explosion ist nicht von der Varianble zufallszahl sondern von der variable luck abhändig.
Das heißt die große Explosion gibt es dann wenn es mehr als 10mal keine explosion gab.
siehe: Luck++;
Nach oben Nach unten
Benutzerprofil anzeigen
Mozart
Kanzler
Kanzler
avatar

Männlich Alter : 24
Ort : Vaihingen/Enz
Anmeldedatum : 24.02.08

BeitragThema: Re: 2: Variablen   Sa Jul 11, 2009 10:22 pm

So ein Flint kommt im Skullbreakmeleewettbewerb vor, das Szen heißt Blitzmelee
Nach oben Nach unten
Benutzerprofil anzeigen http://www.funamfag.de
Spiederschwein
Kadett
Kadett
avatar

Männlich Anmeldedatum : 04.07.09

BeitragThema: Re: 2: Variablen   Mo Jul 13, 2009 10:14 am

ok danke.
dann sollte ich mich mal entschuldigen Very Happy
Nach oben Nach unten
Benutzerprofil anzeigen
Gast
Gast



BeitragThema: Re: 2: Variablen   Do Okt 15, 2009 2:42 pm

Das Tutorial ist super, aber bitte schreibe doch nicht zwischendurch Sachen, die nicht gehen:
Zitat :
local Teigmenge; //Das geht nicht!

Schreibe solche Sachen lieber am Ende, aber ansonsten war es gut.

Zitat :
if (Hunger) FutterSuchen();//In diesemfall wird Futtersuchen ausgeführt
Wenn du zu Funktionen oder sowas etwas schreibst, dann mach es doch eventuell in anderer Farbe. Dann ist es noch einfacher zu verstehen, und man kommt nicht durcheinander.
Auf jeden Fall bin ich darauß schlau geworden. Very Happy
Nach oben Nach unten
Chum
Clonk
Clonk
avatar

Männlich Alter : 23
Anmeldedatum : 02.02.09

BeitragThema: Re: 2: Variablen   Di Dez 29, 2009 6:42 pm

Liech nichts gegen dich aber du scheinst ja einen richtigen tötungsdrang zu haben xD
"//Hier ist B tot :\ oder "//zuviel glück ist auch nicht gut =)"
//aber A lebt noch
}
//Hier ist auch A tot"
Trotzdem gutes Tutorial hab ich glatt mal wieder was gelernt
Nach oben Nach unten
Benutzerprofil anzeigen
Elfangor
General
General
avatar

Männlich Alter : 25
Ort : Mainz
Anmeldedatum : 26.06.08

BeitragThema: Re: 2: Variablen   Di Dez 29, 2009 8:10 pm

Ich verstehe nicht warum hier keiner erklärt das die Bezeichnung "var" eine Variable jedes Varbiablentyps erstellt.

Es gibt verschiedene Variablentypen wie bool int long byte double string oder objekt.

int double long und byte sind Zahlentypen die sich nur in deren Größe unterscheiden.

String ist eine Zeichenkette die immer in " angegeben wird. Eine Zeichenkette kann Alle Zeichen auf der Tastatur enthalten afaik.

Ein Objekt ist Clonkintern und bezeichnet ein Objekt oder eine Objektnummer im Spiel.

Ein bool ist entweder 0 oder 1 / false oder true. Wobei 0 = false und true = alles außer 0.



Ebenfalls sollte erwähnt werden wo welche Variablen verwendet werden können und wie man diese umverwenden kann.

Man kann nämlich Variablen umkonvertieren. Das heißt das ich aus einem Bool ein Int mache oder aus einem String ein Objekt oder andersrum.
Da das teilweise nicht so einfach ist, würde ich das eher ins Fortgeschrittenforum tun.

So nun mal zur Zuständigkeit der Variablen. Nicht jede Variable kann überall genutzt werden. Wenn ich in "Initialize()" eine Variable definiere, kann ich sie nicht in der Funktion darunter die vielleicht "Boom()" heißt verwenden. Es sei denn ich setze die Definierung der Variable an den Anfang des Scripts unter #strict
Nach oben Nach unten
Benutzerprofil anzeigen http://www.m-w-c.de.vu
Gamer
Staatsrat
Staatsrat
avatar

Männlich Alter : 22
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

BeitragThema: Re: 2: Variablen   Di Dez 29, 2009 9:26 pm

Ach ich hab mich übriens schon immer gefragt ob man bei Clonk Kommazahlen darstellen kann.. Geht das?

_________________
Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars

Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei!
Nach oben Nach unten
Benutzerprofil anzeigen http://www.gamer95.npage.de/
Elfangor
General
General
avatar

Männlich Alter : 25
Ort : Mainz
Anmeldedatum : 26.06.08

BeitragThema: Re: 2: Variablen   Di Dez 29, 2009 10:05 pm

double kann Kommastellen angeben. Aber Vorsicht mit der Konvertierung zu Int.
Brauchst du sehr große Kommastellen nimm Float. Float macht wirklich eine sehr große Genauigkeit.


Ich glaub ich schreib ein Tutorial über Variablenkonvertierung :/
Nach oben Nach unten
Benutzerprofil anzeigen http://www.m-w-c.de.vu
Gesponserte Inhalte




BeitragThema: Re: 2: Variablen   

Nach oben Nach unten
 
2: Variablen
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Anfänger :: Tutorials-
Gehe zu: