Rennspiel mit B3D

Übersicht BlitzBasic Blitz3D

Gehe zu Seite Zurück  1, 2

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

 

Steven

ehemals "Steven04"

BeitragMo, Sep 18, 2006 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
So ich hänge jetzt schon einige Tage an dem selben Problem fest(habe sogar schon ausführlich danach gesuchtund möchte im chat damit nicht nerven...): Wenn ich ein Streckenteil habe und es mehrmals auf der Map platzieren möchte, mache ich dies mit "CopyEntity". Dann funktioniert ja auch alles Problemlos, nur beim Speichern gibt es dann Probleme. Wenn ich mit write... es abspeichere, speichert es logischer Weise nur das zuletzt gesetzte Objekt ab. Wie mache ich aber, dass alle Streckenteile, mit den Positionen abgespeichert werden?
Jemand empfohl mir das mit Types zu machen, aber ich kann dazu kein Tut finden(hab nur das im wiki buch gefunden), wo sowas steht, wie man mehrere Objekte, die man mit der Maus setzt abspeichert.
Könnt ihr mir bitte auf die Sprünge helfen?

JustTheBest

BeitragMo, Sep 18, 2006 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest es wirklich gut mit Types lösen (wenn du dich damit noch net befasst hast: auf www.blitzbase.de & www.robsite.de gibts tuts zu types!):

Pseudo-Code:
Code: [AUSKLAPPEN]

Type teil
   field entity
   field x,y,z
End Type


;Dann bei jedem "copyentity" einen neuen eintrag mit "new":
neu.teil = New teil

;Entity zuweisen:
neu\entity = [Nummer eines Entitys, die du vorher festlegst, z.b.: 1 für gerade, 2 für kurve, ...]

;Position zuweisen:
neu\x = [EntityX des zu speichernden Teils]
neu\y = [Entityy des zu speichernden Teils]
neu\z = [Entityz des zu speichernden Teils]

;Und am schluss alle abspeichern:
datei = writefile("strecke.str")
For neu.teil = Each teil
   [In etwa: writeline datei, neu\entity]
   .
   .
   .
next




Habs nicht ausprobiert, müsste aber in etwa so klappen! Wie gesagt, erstmal die Tutorials über Types verstehen!
mfg
www.mas-online.de.gg
__________

Liegt der Camper tot im Keller war der Rusher wieder schneller. Liegt der Rusher tot daneben hat der Camper nen Kollegen!
  • Zuletzt bearbeitet von JustTheBest am Mo, Sep 18, 2006 19:52, insgesamt 3-mal bearbeitet

FreetimeCoder

BeitragMo, Sep 18, 2006 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Also types sind eigentlich ganz einfach:

Du musst zuerst einen Type "voreinstellen":

zB

Code: [AUSKLAPPEN]
Type Wegpunkt


dann setzt du Felder für den Type:

Code: [AUSKLAPPEN]
Field Weg
Field Punkt


Als letztes noch ein:

Code: [AUSKLAPPEN]
End Type


Das ganze sieht dann so aus:

Code: [AUSKLAPPEN]
Type Wegpunkt
Field Weg
Field Punkt
End Type


Wenn du jetzt Types benutzen willst um zB Kugeln zu erstellen, dann mach das so:

Code: [AUSKLAPPEN]
Weg.Wegpunkt=New Wegpunkt
Weg\Punkt=CreateSphere()


Willst du jetzt jeden Type prüfen:

Code: [AUSKLAPPEN]
For Weg.Wegpunkt=Each Wegpunkt
      MoveEntity Weg\Punkt,0,0,1
Next


Ansonsten kannst du mit 3D Types arbeiten wie mit "normalen" 3D Objekten.

Aber ich hätte gedacht, das man in 2D auch Types braucht ...

Übrigens hab ich nur Pong in 2D programmiert und dann sofort 3D.
Ich muss sagen, dass ich das leichter fand (finde) Laughing

Edit: JustTheBest war schneller
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

biggicekey

BeitragDi, Sep 19, 2006 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ich find 3d auch deutlich einfacher weil man einfach die bessere visuelle rückmeldung hat... muss den screen nicht verschieben und auch sonst wenig mit screenkoordinaten arbeiten... paar befehle zusammenschustern und du kannst mit nem würfel aufm terrain rumlaufen... tileengine muss man sich auch nicht suchen/bauen...
naja ich habe zumindest nie 2d gemacht außer das war im 3d bereich so anfällt und bin sofort mit 3d klargekomm... jetzt würd ich 2d wahrscheinlich bessr verstehen als am anfang aber wozu denn Razz basic in 3d ist das einfachste wo gibt Wink
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]
 

Steven

ehemals "Steven04"

BeitragDi, Sep 19, 2006 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erstmal für alle Antworten. Very Happy
Aber ich hät da noch Fragen/Probleme. So kommt der Code dann angepasst meiner meinung nach da hin:
Code: [AUSKLAPPEN]
Type gerade ;Das muss doch für jedes einzelne Teil hin??!
   field straight ;Also wenn ich das teil vorhin straight gennant hatte...
   field x,y,z
End Type


;Dann bei jedem "copyentity" einen neuen eintrag mit "new":
neu.gerade = New gerade ;das 1. problem , so

;Entity zuweisen:
neu\entity = [Nummer eines Entitys, die du vorher festlegst, z.b.: 1 für gerade, 2 für kurve, ...];Hääh?? Wie soll ich dem eine Zahl geben??

;Position zuweisen:
neu\x = x#[EntityX des zu speichernden Teils];Weil ich das ja individuell anpasse...
neu\y = y#[Entityy des zu speichernden Teils]
neu\z = z#[Entityz des zu speichernden Teils]

;Rest hab ich kapiert.


Ich hab mich natürlich auch nach tuts umgesehen, aber finde kein anderes, als das bei Wiki-und das hilft mir da auch nicht wirklich weiter.... Embarassed

JustTheBest

Betreff: Arghhh!!!!!!

BeitragMi, Sep 20, 2006 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich dich richtig verstanden habe, hast du einen "Editor", in dem du einzelne meshes(z.b. gerade, links-kurve,rechts_kurve) positionieren kannst und das ergebnis am schluss speichern kanns/willst!
Wenn nicht, hast du dich nicht präzise genug ausgedrückt Wink !

Ich glaub, dann müsste einfach so gehen:

Code: [AUSKLAPPEN]


1. Für ALLE teile nur einen Type definieren (z.b.: "teil")

2. Variablen für jedes teil deklarieren. z.b.:
    Global gerade = 1
    Global kurve_links = 2
    Global kurve_rechts = 3

3. Du wählst in deinem editor dein tile aus, das du haben willst und
    positioniertst es z.b. mit den Pfeiltasten....

4. Wenn du z.b. Enter drückst machst du ein copyentity, mit dem du das tile
    kopierst. Anschließend erstellst du einen neuen Eintrag vom type "teil" mit
    NEW

5. Du gibst der variable "entity" von diesem eintrag ("neu\entity") die
    Entsprechende Nummer deiner vorher definierten variablen.
    Wenn das Teil nun eine Gerade war also: "neu\entity = gerade"
    ("gerade" ist ja "1")

6. Jetzt übergibst du noch den variablen neu\x, neu\y und neu\z die
    EntityX#()... werte deines teiles, das du davor durch copyentity
    erhalten hast!

7. Nach fertigstellen des Levels speicherst du den ganzen
    type(also die variablen) mit einer "For Each - Next"-Schleife
    in eine datei.

8. Beim Laden im Spiel musst du nur die datei wieder in einen genau gleichen type "teil" auslesen und dann in einer for each - next schleife:

    Select neu\entity
       case gerade ;[also 1]
           stein(i) = copyentity (ger)   ;das geradenentity
       case kurve_links ;[also 2]
           stein(i) = copyentity(ku_li)   ;das kurvenentity rechts
       case kurve_rechts ;[also 3]
           stein(i) = copyentity (ku_re)   ;das kurvenentity rechts
    End Select

;Und Positionieren:
   
    positionentity stein(i), neu\x, neu\y, neu\z
   
    i = i + 1
; Vorher ein dimfeld für die steine anlegen z.b.: stein(20)
 




SOOOooo! So müsste es gehen!
Ist zwar n bisschen viel geworden, aber ich dachte lieber auf nummer sicher gehen! Wink
Das setzt Type-Wissen usw. voraus!
Tutorials dafür:

http://www.blitzbase.de/tutorials/shadow_2.htm (Kompakt)
http://www.blitzbase.de/tutorials/shadow_1.htm (Ausführlich)


Junge, streng dein hirn an!

mfg Razz
JTB

Puhh... Monster! Twisted Evil
www.mas-online.de.gg
__________

Liegt der Camper tot im Keller war der Rusher wieder schneller. Liegt der Rusher tot daneben hat der Camper nen Kollegen!
 

Steven

ehemals "Steven04"

BeitragMi, Sep 20, 2006 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke das hat mir jetzt geholfen. Trotzdem ist dieses Forum hier wohl das noob-unfreundlichste Forum das ich kenne. Deswegen ist Blitz auch so wenig im Netz verbreitet... Neutral

D2006

Administrator

BeitragMi, Sep 20, 2006 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Kommentare dazu:

1.) Ich befürchte du wirst losheulen, wenn wir wirklich mal unfreundlich zu dir sind. Denn bisher war das niemand von uns.

2.) Es steht dir frei zu gehen. Solltest du weiterhin so über die Community reden, würde ich es dir sogar nahelegen.

3.) Du denkst also von dir, dass du ein Anfänger bist... Wieso postest du dann nicht im Beginner Bereich?

4.) ~Geschlossen~
Problem scheint gelöst und der Fragende disqualifizierte seinen Thread.
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

Gehe zu Seite Zurück  1, 2

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group