Mehrere Objekte eines Typs
Übersicht

![]() |
relentless92Betreff: Mehrere Objekte eines Typs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Huhu,
Ich habe einen Gedankenfehler bei Types so wie es aussieht. Ich möchte gerne zwei unterschiedliche Spieler des Typs Mann erschaffen. Problem bei meinem Code: Die Spieler bewegen sich nicht unabhängig. Jemand eine Ahnung, wieso? MfG Relentless Code: [AUSKLAPPEN] Graphics 800,600,32
SetBuffer BackBuffer() timer=CreateTimer(60) ;// CONST //; Const KEY_RIGHT = 205 Const KEY_LEFT = 203 Const KEY_D = 32 Const KEY_A = 30 ;// TYPE //; Type bubble Field x,y End Type Type mann Field x,y Field kopfwidth,kopfheigth Field life End Type ;// GLOBAL //; Global b.bubble Global bubblemenge Global spielr1.mann Global spielr2.mann ;// FALLS NOTWENDIG: EIGENSCHAFTSZUWEISUNG //; spielr1 = New mann spielr1\x = 300 spielr1\y = 475 spielr1\kopfwidth=30 spielr1\kopfheigth = 30 spielr1\life = 100 spielr2 = New mann spielr2\x = 600 spielr2\y = 475 spielr2\kopfwidth=30 spielr2\kopfheigth = 30 spielr2\life = 100 ;// MAINLOOP //; Repeat WhiteBG(800,600) BGAllg() Bubbles(1) Mann(1) Collision() Text 700,0,bubblemenge Flip Cls WaitTimer timer Until KeyHit(1) ;///////////////; ;// FUNCTIONS //; ;///////////////; [...] ;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function Mann(Active) ; Die Spieler, zeichnen und bewegen If Active = 1 Then For spielr1.mann = Each mann If KeyDown(KEY_D) Then spielr1\x=spielr1\x+3 EndIf If KeyDown(KEY_A) Then spielr1\x=spielr1\x-3 EndIf Oval spielr1\x,spielr1\y,spielr1\kopfwidth,spielr1\kopfheigth Line spielr1\x+spielr1\kopfwidth/2,spielr1\y+spielr1\kopfheigth/2,spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50 Line spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50,(spielr1\x+spielr1\kopfwidth/2)+10,((spielr1\y+spielr1\kopfheigth/2)+50)+10 Line spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50,(spielr1\x+spielr1\kopfwidth/2)-10,((spielr1\y+spielr1\kopfheigth/2)+50)+10 Text spielr1\x+2,spielr1\y+80,spielr1\life Next For spielr2.mann = Each mann If KeyDown(KEY_RIGHT) Then spielr2\x=spielr2\x+3 EndIf If KeyDown(KEY_LEFT) Then spielr2\x=spielr2\x-3 EndIf Oval spielr2\x,spielr2\y,spielr2\kopfwidth,spielr2\kopfheigth Line spielr2\x+spielr2\kopfwidth/2,spielr2\y+spielr2\kopfheigth/2,spielr2\x+spielr2\kopfwidth/2,(spielr2\y+spielr2\kopfheigth/2)+50 Line spielr2\x+spielr2\kopfwidth/2,(spielr2\y+spielr2\kopfheigth/2)+50,(spielr2\x+spielr2\kopfwidth/2)+10,((spielr2\y+spielr2\kopfheigth/2)+50)+10 Line spielr2\x+spielr2\kopfwidth/2,(spielr2\y+spielr2\kopfheigth/2)+50,(spielr2\x+spielr2\kopfwidth/2)-10,((spielr2\y+spielr2\kopfheigth/2)+50)+10 Text spielr2\x+2,spielr2\y+80,spielr2\life Next EndIf End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;; [...] |
||
~
Fussball spielen viele, Kart fahren nur die Besten. ~ |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
spielr1 und spielr2 sind nur instanzen vom Type mann, indem du
Code: [AUSKLAPPEN] For spielr1.mann = each mann
... next for spielr2.mann = each mann ...next schreibst, gesht du jedes mal beide instanzen durch, hier müsstest du unterscheiden, welchen spieler du wie ansprichst, zb mit einem "field id" so dass du spielr1 = 1 und spielr2 = 2 zuweist und unterschiedlich bewegst |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
relentless92 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sprich
Type mann [..] Field nr end type und dann halt Code: [AUSKLAPPEN] for m.mann = each mann
if mann\nr = 1 then sp1_move if mann\nr = 2 then sp2_move Pseudocode ![]() Müsste man das dann so realisieren? Dann stellt sich mir die Frage wofür die Typenvariable for dem Punkt eigentlich gut ist? |
||
~
Fussball spielen viele, Kart fahren nur die Besten. ~ |
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um quasi die gleichen Variablen unter einer anderen "Kategorie" anzusprechen.
Nehmen wir mal ein einfaches Beispiel: BlitzBasic: [AUSKLAPPEN]
somit hast du als programmierer ebenfalls noch eine gute übersicht über kategorien und kannst sehen, was womit zusammenhängt und ob es in diesem fall im spiel nachher ein fluggerät oder ein landgerät ist. beides findet sich schließlich in der unterkategorie "Fahrzeug". Ich selber benutze allerdings auch für alles und jeden ein eigenes Type ![]() NACHTRAG: Und ja, genau so kann man soetwas realisieren, bei Types solltest du bei einer einzelnen "ansprechmöglichkeit" jeweils eine ID vergeben und wenn du genau diesen Type haben willst, kannst du mit der ID den entsprechenden Type in einer if abfrage abfragen ^^ |
||
![]() |
relentless92 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Dank!
Bedeutet das, um auf mein Beispiel zurückzukommen, dass ich zwar Spieler1.mann und spieler2.mann nehmen kann und durch die abfrage for spieler1.mann = each mann auch spieler2.mann anspreche? also bspweise: Code: [AUSKLAPPEN] For Spieler1.Mann = Each Mann If Spieler1\ID = 1 then ; Spieler 1 [...] Endif If Spieler1\ID = 2 then ; Spieler 2 [...] Endif next So? P.S.: Kann man also daraus schließen das die Variable vor dem Punkt einfach nur für die Übersicht da ist und keinerlei Einfluss auf den Programmcode hat? |
||
~
Fussball spielen viele, Kart fahren nur die Besten. ~ |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehe nicht, warum du hier überhaupt Each nimmst - du hast ja Spieler1 und Spieler2 schon in jeweils einer globalen Variable, da musst du nicht mehr Each benutzen, um auf die Variablen zuzugreifen.
Each verwendet man nur, wenn man auf alle Types zugreifen will. BeispielCode: [AUSKLAPPEN] For spielr1.mann = Each mann ;<--- Das hier wegnehmen
If KeyDown(KEY_D) Then spielr1\x=spielr1\x+3 EndIf If KeyDown(KEY_A) Then spielr1\x=spielr1\x-3 EndIf Oval spielr1\x,spielr1\y,spielr1\kopfwidth,spielr1\kopfheigth Line spielr1\x+spielr1\kopfwidth/2,spielr1\y+spielr1\kopfheigth/2,spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50 Line spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50,(spielr1\x+spielr1\kopfwidth/2)+10,((spielr1\y+spielr1\kopfheigth/2)+50)+10 Line spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50,(spielr1\x+spielr1\kopfwidth/2)-10,((spielr1\y+spielr1\kopfheigth/2)+50)+10 Text spielr1\x+2,spielr1\y+80,spielr1\life Next ;<--- Das hier auch ...und dasselbe dann für alle anderen Stellen in deinem Code. An die anderen Helfer: Vor dem Posten doch erst mal den Code durchlesen, dann vermeidet man solche Missverständnisse ![]() |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN]
Fast genau so würde ich es machen nur würde ich es in deinem Beispiel: BlitzBasic: [AUSKLAPPEN]
Ich würde deinem Type wie gesagt nicht direkt den Namen "Spieler1" geben da du ja dem anscheinen nach beide Spieler die gleichen ARTEN an werte haben. Und durch diese IF abfrage kannst du in der schleife dann die einzelnen ansprechen und ab dem zeitpunkt dann auch die einzelnen anderen werte wie x und y koords z.b. wie in meinem beispiel gezeigt. Also Quasi: Spreche ALLE Werte aus dem Type spieler.mann an. (Die schleife) danach konkretisiere den type den du verändern möchtest (if ID = ) in dieser konkretisierung können nun die einzelnen werte des objekts der dazugehörigen ID verändert werden (position, speed, x , y etc. pp) Hoffe ich konnte dir helfen ![]() @ Noobody Ja habs auch gerade gesehen ^^ Aber es führen ja bekanntlicherweise viele wege nach Rom ![]() Natürlich wenn er direkt 2 Types für die jeweiligen Spieler angelegt hat kann er sie auch direkt ansprechen ohne dafür eine for each abfrage zu nutzen, da er ja die einzelnen spieler schon im Type deklaiert hat. Aber gut habe nur mal die Variante gepostet die ich bevorzugen würde ![]() |
||
![]() |
relentless92 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt verwirrt ihr mich aber ![]() Ich habe EINEN Type: Code: [AUSKLAPPEN] Type mann
field x,y, usw. End Type Von welchem ich 2 Objekte unabhängig steuern will - und zwar Code: [AUSKLAPPEN] Global spielr1.mann
Global spielr2.mann ;// FALLS NOTWENDIG: EIGENSCHAFTSZUWEISUNG //; spielr1 = New mann spielr1\ID = 1 spielr1\x = 300 spielr1\y = 475 spielr1\kopfwidth=30 spielr1\kopfheigth = 30 spielr1\life = 100 spielr2 = New mann spielr2\ID = 2 spielr2\x = 600 spielr2\y = 475 spielr2\kopfwidth=30 spielr2\kopfheigth = 30 spielr2\life = 100 Diese beiden. Nun will ich die Ansprechen. Dazu brauch ich ja so eine For Schleife, sonst meckert er "Object does not exist" Daher habe ich diese For Schleife, weil dann sagt er das nicht. Kann es sein das ich diese Types zu sehr in Richtung Objektorientiertes Programmieren schiebe? Oder habe ich das schlicht noch nicht durchgeblickt? Weil jeder von euch sagt ja irgendwie was anderes... ^^ Trotzdem vielen Dank! ![]() |
||
~
Fussball spielen viele, Kart fahren nur die Besten. ~ |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
relentless92 hat Folgendes geschrieben: Dazu brauch ich ja so eine For Schleife, sonst meckert er "Object does not exist"
Nein, du brauchst keine For-Schleife. Schau mal hier, da greifst du ja auch auf den Type zu, ganz ohne For-Schleife Code: [AUSKLAPPEN] spielr1\ID = 1
spielr1\x = 300 spielr1\y = 475 spielr1\kopfwidth=30 spielr1\kopfheigth = 30 spielr1\life = 100 Du musst jetzt einfach die beiden For-Each-Schleifen in deiner Funktion 'Mann' entfernen, dann sollte es gehen. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
relentless92 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Function Mann(Active) ; Die Spieler, zeichnen und bewegen
If Active = 1 Then ;For spielr1.mann = Each mann If KeyDown(KEY_D) Then spielr1\x=spielr1\x+3 EndIf If KeyDown(KEY_A) Then spielr1\x=spielr1\x-3 EndIf Oval spielr1\x,spielr1\y,spielr1\kopfwidth,spielr1\kopfheigth Line spielr1\x+spielr1\kopfwidth/2,spielr1\y+spielr1\kopfheigth/2,spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50 Line spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50,(spielr1\x+spielr1\kopfwidth/2)+10,((spielr1\y+spielr1\kopfheigth/2)+50)+10 Line spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50,(spielr1\x+spielr1\kopfwidth/2)-10,((spielr1\y+spielr1\kopfheigth/2)+50)+10 Text spielr1\x+2,spielr1\y+80,spielr1\life ;Next ;For spielr2.mann = Each mann If KeyDown(KEY_RIGHT) Then spielr2\x=spielr2\x+3 EndIf If KeyDown(KEY_LEFT) Then spielr2\x=spielr2\x-3 EndIf Oval spielr2\x,spielr2\y,spielr2\kopfwidth,spielr2\kopfheigth Line spielr2\x+spielr2\kopfwidth/2,spielr2\y+spielr2\kopfheigth/2,spielr2\x+spielr2\kopfwidth/2,(spielr2\y+spielr2\kopfheigth/2)+50 Line spielr2\x+spielr2\kopfwidth/2,(spielr2\y+spielr2\kopfheigth/2)+50,(spielr2\x+spielr2\kopfwidth/2)+10,((spielr2\y+spielr2\kopfheigth/2)+50)+10 Line spielr2\x+spielr2\kopfwidth/2,(spielr2\y+spielr2\kopfheigth/2)+50,(spielr2\x+spielr2\kopfwidth/2)-10,((spielr2\y+spielr2\kopfheigth/2)+50)+10 Text spielr2\x+2,spielr2\y+80,spielr2\life ;Next EndIf End Function Programm läuft nicht an, Fehlermeldung: "Object does not exist" Was eigentlich keinen Sinn macht, da es jawohle da ist... Das sagt er übrigends bei dem ersten Oval, wo ich das erste mal spielr1\x benutze... |
||
~
Fussball spielen viele, Kart fahren nur die Besten. ~ |
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
Quasi
BlitzBasic: [AUSKLAPPEN]
Allerdings verwundert auch mich das nun ein wenig da wenn das so geschrieben wird, ja alle types die mit spielr2.mann definiert sind (falls es mehrere geben soll) den x wert verändern. Wenn es nun allerdings um einheiten geht (z.b. bei einem strategiespiel) werden alle einheiten (.mann) doch um den speed wert in verändert? Allerdings nehme ich mal an, das die Types die hier definiert werden zu einem spiel gehören, wo mehrere Einheiten von 2 Spielern genutzt werden (d.h. Guter Spieler - Böser Spieler o.ä). Und da für jeden spieler ja jede einheit unterschiedlich agieren sollen, müssen sie doch zuerst "gefiltert" werden oder irre ich da? Oder meinst du das nun wie folgt @ Noobody BlitzBasic: [AUSKLAPPEN]
Wenn du die 2te Variante meinst, die eigentlich durchaus funktionieren sollte (wo ich mir jetzt nicht 100 % sicher bin) dann ist diese variante auch für mich neu und sollte sie mal so nutzen anstatt alle types dauernt mit for - each anzusprechen und dann zu filtern xD |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
relentless92 hat Folgendes geschrieben: Programm läuft nicht an, Fehlermeldung: "Object does not exist"
Dann musst du den ganzen Code posten. Scheinbar setzt du in irgendeiner anderen Funktion die Variablen zurück, löschst einen Spieler oder verwendest in einer For-Each-Schleife wieder die spielr1/spielr2-Variablen. Neoxit hat Folgendes geschrieben: Allerdings verwundert auch mich das nun ein wenig da wenn das so geschrieben wird, ja alle types die mit spielr2.mann definiert sind (falls es mehrere geben soll) den x wert verändern.
Du hast an Types glaube ich etwas falsch verstanden. Wenn ich mehrere Types erstelle und sie alle in eine Variable stecke, dann ist nur der als letztes erstellte Type noch in der Variable BlitzBasic: [AUSKLAPPEN] A = 3 Du kannst jetzt im ganzen Programm über die Variable C diesen Type ansprechen, ganz ohne Each. Each wird nur gebraucht, wenn man alle bereits erstellten Types durchlaufen will BlitzBasic: [AUSKLAPPEN] Type TFoo Ich hoffe, das hat es ein wenig erklärt. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
relentless92 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay vielen Dank!
Das ist soweit klar. Dann hab ich ja doch richtig gedacht - nur falsch programmiert. ![]() Hier nochmal mein Code. Code: [AUSKLAPPEN] Graphics 800,600,32
SetBuffer BackBuffer() timer=CreateTimer(60) ;// CONST //; Const KEY_RIGHT = 205 Const KEY_LEFT = 203 Const KEY_D = 32 Const KEY_A = 30 ;// TYPE //; Type bubble Field x,y End Type Type mann Field ID Field x,y Field kopfwidth,kopfheigth Field life End Type ;// GLOBAL //; Global b.bubble Global bubblemenge Global spielr1.mann Global spielr2.mann ;// FALLS NOTWENDIG: EIGENSCHAFTSZUWEISUNG //; spielr1 = New mann spielr1\ID = 1 spielr1\x = 300 spielr1\y = 475 spielr1\kopfwidth=30 spielr1\kopfheigth = 30 spielr1\life = 100 spielr2 = New mann spielr2\ID = 2 spielr2\x = 600 spielr2\y = 475 spielr2\kopfwidth=30 spielr2\kopfheigth = 30 spielr2\life = 100 ;// MAINLOOP //; Repeat WhiteBG(800,600) BGAllg() Bubbles(1) Mann(1) Collision() Text 700,0,bubblemenge Flip Cls WaitTimer timer Until KeyHit(1) ;///////////////; ;// FUNCTIONS //; ;///////////////; Function WhiteBG(w,h) ; Der Weiße Hintergrund Color 255,255,255 Rect 0,0,w,h Color 0,0,0 End Function ;;;;;;;;;;;;;;;;;;;;;;;;;; Function Bubbles(Active) ; Die Bubbles, zeichnen und bewegen If Active = 1 Then If bubblemenge<50 Then b = New bubble b\x=0 b\y=0 bubblemenge=bubblemenge+1 EndIf For b = Each bubble b\x=b\x+Rnd(1,5) b\y=b\y+Rnd(1,5) Oval b\x,b\y,10,10,0 If b\x>800 Or b\y>600 Then Delete b.bubble bubblemenge=bubblemenge-1 EndIf Next EndIf End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function Mann(Active) ; Die Spieler, zeichnen und bewegen If Active = 1 Then If KeyDown(KEY_D) Then spielr1\x=spielr1\x+3 EndIf If KeyDown(KEY_A) Then spielr1\x=spielr1\x-3 EndIf Oval spielr1\x,spielr1\y,spielr1\kopfwidth,spielr1\kopfheigth Line spielr1\x+spielr1\kopfwidth/2,spielr1\y+spielr1\kopfheigth/2,spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50 Line spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50,(spielr1\x+spielr1\kopfwidth/2)+10,((spielr1\y+spielr1\kopfheigth/2)+50)+10 Line spielr1\x+spielr1\kopfwidth/2,(spielr1\y+spielr1\kopfheigth/2)+50,(spielr1\x+spielr1\kopfwidth/2)-10,((spielr1\y+spielr1\kopfheigth/2)+50)+10 Text spielr1\x+2,spielr1\y+80,spielr1\life ;- If KeyDown(KEY_RIGHT) Then spielr2\x=spielr2\x+3 EndIf If KeyDown(KEY_LEFT) Then spielr2\x=spielr2\x-3 EndIf Oval spielr2\x,spielr2\y,spielr2\kopfwidth,spielr2\kopfheigth Line spielr2\x+spielr2\kopfwidth/2,spielr2\y+spielr2\kopfheigth/2,spielr2\x+spielr2\kopfwidth/2,(spielr2\y+spielr2\kopfheigth/2)+50 Line spielr2\x+spielr2\kopfwidth/2,(spielr2\y+spielr2\kopfheigth/2)+50,(spielr2\x+spielr2\kopfwidth/2)+10,((spielr2\y+spielr2\kopfheigth/2)+50)+10 Line spielr2\x+spielr2\kopfwidth/2,(spielr2\y+spielr2\kopfheigth/2)+50,(spielr2\x+spielr2\kopfwidth/2)-10,((spielr2\y+spielr2\kopfheigth/2)+50)+10 Text spielr2\x+2,spielr2\y+80,spielr2\life EndIf End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function Collision() ; Kollision Spieler / Bubbles For b = Each bubble If RectsOverlap(b\x,b\y,10,10,spielr1\x,spielr1\y,spielr1\kopfwidth,spielr1\kopfheigth) Then spielr1\life = spielr1\life - 1 If spielr1\life<=0 Then Spieler_Tod();1) EndIf Delete b.bubble bubblemenge=bubblemenge-1 EndIf If RectsOverlap(b\x,b\y,10,10,spielr2\x,spielr2\y,spielr2\kopfwidth,spielr2\kopfheigth) Then spielr2\life = spielr2\life - 1 If spielr2\life<=0 Then Spieler_Tod();2) EndIf Delete b.bubble bubblemenge = bubblemenge-1 EndIf Next End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function Spieler_Tod() ; Wenn Einer Stirbt WhiteBG(800,600) Text 200,200,"Ende." Flip Delay 2000 End End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function BGAllg() ; Background Zeichnen und so Zeuch Line 0,550,800,550 End Function Problem: Die Function Collision. Wenn ich mit Spieler 2 mit den Bubbles kollidiere, funktioniert alles super. Wenn ich es mit Spieler 1 machen will, bricht das Programm bei der Abfrage "von Spieler 2" ab mit dem Begriff "Object does not exist." Das macht für mich keinen Sinn, weil er dann doch auch, wenn Spieler 2 kollidiert, bei der Abfrage von Spieler 1 damit terminieren müsste oder nicht? Denkfehler? |
||
~
Fussball spielen viele, Kart fahren nur die Besten. ~ |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem ist hier, dass, wenn Spieler 1 kollidiert, er die Bubble auch löscht. Ein paar Zeilen untendrunter versucht aber Spieler 2 wieder auf die Bubble zuzugreifen, was dann natürlich zu einem Absturz führt. Du musst also die Kollisionsabfrage bei Spieler 2 mit einer zusätzlichen Abfrage versehen, ob die Bubble noch existiert BlitzBasic: [AUSKLAPPEN] If b <> Null Then |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
relentless92 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klingt logisch ![]() Vielen Dank Noobody! |
||
~
Fussball spielen viele, Kart fahren nur die Besten. ~ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group