Include
Übersicht BlitzBasic Beginners-Corner
Krumu1201Betreff: Include |
Mi, Okt 15, 2014 23:47 Antworten mit Zitat |
|
---|---|---|
Hey,
gibt es eine Möglichkeit eine Variable in den Include Befehl reinzupacken? wenn ich es so mache Code: [AUSKLAPPEN] global level = 1
Include "lvl"+level+".bb" bekomme ich immer die Fehlermeldung "Unable to open include file". Gruß Krumu1201 |
||
hecticSieger des IS Talentwettbewerb 2006 |
Do, Okt 16, 2014 0:29 Antworten mit Zitat |
|
---|---|---|
Bei Include wird ein existierender Code vor dem compilieren eingeschoben.
Eine Variable ist ein änderbarer Wert der während der Laufzeit entsteht. Die logische Schlussfolgerung ergibt, dass es so in der Form nicht funktionieren kann. Je nach Aufgabenstellung könnten Scripte die Lösung dazu sein. Lua bietet da bereits eine gute Grundlage um variable Inhalte nutzen zu können. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
XeresModerator |
Do, Okt 16, 2014 19:50 Antworten mit Zitat |
|
---|---|---|
Falls du Leveldaten laden willst, lade sie aus Dateien.
Falls jedes Level eigenen Code benutzen muss... machst du entweder was grob falsch oder du brauchst tatsächlich eine Form von Skriptsprache. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Krumu1201Betreff: Danke |
Fr, Okt 17, 2014 12:01 Antworten mit Zitat |
|
---|---|---|
für die Antworten. Mit Skriptsprachen kenn ich mich nicht aus. Gibt zwar bestimmt Tutorials dafür, aber denke ich muss das problem anders lösen.
Gruß Krumu1201 |
||
BladeRunnerModerator |
Fr, Okt 17, 2014 14:40 Antworten mit Zitat |
|
---|---|---|
Du könntest dein Problem einfach ausführlicher beschreiben, vielleicht fällt uns ja ein passender Workaround ein. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Krumu1201Betreff: ok |
Sa, Okt 18, 2014 22:42 Antworten mit Zitat |
|
---|---|---|
versuche mal mein problem zu beschreiben:
Baue ein minirpg, indem man auf einer map eine bestimmte anzahl gegner töten oder andere quest erledigen muss ( weiß ich noch nicht). Hat man das ziel erreicht soll ein levelwechsel erfolgen. Bisher ist das erste level mit data read befehl eingebaut. Wollte die levels dann mit anzahl der level variable includieren. Reicht das an Problembeschreibung? Gruß Krumu1201 |
||
XeresModerator |
So, Okt 19, 2014 0:13 Antworten mit Zitat |
|
---|---|---|
Schreibe dir einen Level-Editor und speichere die Level in deinem eigenen Format.
Datablöcke sind gut für winzige Spiele und um den Umgang mit Daten zu lernen, aber ungeeignet für alles, was über ein simples 2D Array hinaus geht. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
BladeRunnerModerator |
So, Okt 19, 2014 8:06 Antworten mit Zitat |
|
---|---|---|
What xeres said.
Speicher die Daten in eine externe Datei, sieh dir dazu die Befehle in der Onlinehilfe an. Für den Strart reicht es ja wenn Du das ganze statisch aufbaust und in eine .txt per writeline speicherst. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Krumu1201Betreff: Ok nochmals danke |
Mo, Okt 20, 2014 1:39 Antworten mit Zitat |
|
---|---|---|
Das minirpg sollte eigentlich nur eine art Test für ein hauptrpg werden, wofür ich schon einen leveleditor geschrieben habe. Ich dachte könnte das mit include data read usw. schnell fertigmachen. Nur mein eigentliches Problem ist es die kollisionsabfrage des Minirpgs in das Hauptspiel zu übertragen, aber ich glaube diese Problemstellung würde den Rahmen dieser Unterhaltung sprengen.
Gruß Krumu1201 |
||
BladeRunnerModerator |
Mo, Okt 20, 2014 8:38 Antworten mit Zitat |
|
---|---|---|
Das lässt sich nur herausfinden wenn Du es probierst (also, ob es den Rahmen sprengt).
Du könntest uns die Problematik schildern und die relevanten Teile deines Codes zeigen. Dann kann man gucken ob man dir helfen kann. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Krumu1201Betreff: Kollisionsabfrage |
Mo, Okt 20, 2014 20:35 Antworten mit Zitat |
|
---|---|---|
Minirpg:
spielerdaten Code: [AUSKLAPPEN] ;ermittelt welche umliegenden tiles der spieler besetzt ty1 = Floor(ys/Float(64)) ;tile abgerundet ty2 = Ceil(ys/Float(64)) ;tile aufgerundet tx1 = Floor(xs/Float(64)) ;tile abgerundet tx2 = Ceil(xs/Float(64)) ;tile aufgerundet ;spieler bewegen ;OBEN If KeyDown(200) Then richtung = "oben" frame2 = frame2 +1 If frame2 > 11 Then frame2 = 0 If tile_map( tx1 , (ys-bewegungSpieler) /64) < 2 And tile_map( tx2 , (ys-bewegungSpieler) /64) <2 Then ys = ys - bewegungSpieler Else ys = ys + bewegungSpieler ys = (ys/64)*64 End If EndIf ;Unten If KeyDown(208) Then richtung = "unten" frame2 = frame2 +1 If frame2 > 11 Then frame2 = 0 If tile_map( tx1 , (ys+bewegungSpieler) /64+1) < 2 And tile_map( tx2 , (ys+bewegungSpieler) /64+1) <2 Then ys = ys + bewegungSpieler Else ys = ys - bewegungSpieler ys = (ys/64+1)*64 End If EndIf ;Links If KeyDown(203) Then richtung = "links" frame2 = frame2 +1 If frame2 > 11 Then frame2 = 0 If tile_map( (xs -bewegungSpieler)/64 , ty1) < 2 And tile_map( (xs-bewegungSpieler)/64 , ty2 ) < 2 Then xs = xs -bewegungSpieler Else xs = xs+bewegungSpieler xs = (xs/64)*64 EndIf EndIf ;rechts If KeyDown(205) Then richtung = "rechts" frame2 = frame2 +1 If frame2 > 11 Then frame2 = 0 If tile_map( (xs+bewegungSpieler )/64+1 , ty1) < 2 And tile_map( (xs+bewegungSpieler)/64+1 , ty2 ) < 2 then xs = xs +bewegungSpieler Else xs = xs - bewegungSpieler xs = (xs/64+1)*64 End If EndIf ;map Code: [AUSKLAPPEN] ;map array Dim tile_map$(15,11) For x = 1 To 11 For y = 0 To 15 Read tile_map(y,x) Next Next Code: [AUSKLAPPEN] .level Data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 Data 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 Data 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 Data 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 Data 2,1,1,1,3,1,1,3,1,1,1,1,1,1,1,2 Data 2,1,1,1,1,3,3,1,1,1,1,1,1,1,1,2 Data 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 Data 2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2 Data 2,1,1,2,2,2,1,1,1,2,2,1,1,1,1,2 Data 2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,2 Data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 Hauptspiel spielerdaten Code: [AUSKLAPPEN] ;spieler bewegen
If KeyHit(205) Then ;nach rechts gehen richtung = "rechts" xmapKol =spielerfeldx+1 If xmapKol > 15 Then xmapKol = 15 If TileStatusFeld(spielerfeldy,xmapKol) = 0 And objektFeld(spielerfeldy,xmapKol) = 0 Then xs = xs + bewegungSpieler frame2 = frame2 +1 If frame2 > 11 Then frame2 = 0 spielerfeldx = spielerfeldx+1 If spielerfeldx > 15 Then spielerfeldx = 15 EndIf endIf If KeyHit(203) Then ;nach links gehen richtung = "links" xmapKol = spielerfeldx-1 If xmapKol < 0 Then xmapKol = 0 If TileStatusFeld(spielerfeldy,xmapKol) = 0 And objektFeld(spielerfeldy,xmapKol) = 0 Then xs = xs - bewegungSpieler frame2 = frame2 +1 If frame2 > 11 Then frame2 = 0 spielerfeldx = spielerfeldx-1 If spielerfeldx < 0 Then spielerfeldx = 0 EndIf EndIf If KeyHit(200) Then ;nach oben gehen richtung = "oben" ymapKol = spielerfeldy-1 If ymapKol < 0 Then ymapKol = 0 If TileStatusFeld(ymapKol,spielerfeldx) = 0 And objektFeld(ymapKol,spielerfeldx) = 0 Then ys = ys - bewegungSpieler frame2 = frame2 +1 If frame2 > 11 Then frame2 = 0 spielerfeldy = spielerfeldy-1 If spielerfeldy < 0 Then spielerfeldy = 0 EndIf EndIf If KeyHit(208) Then ;nach unten gehen richtung = "unten" ymapKol = spielerfeldy+1 If ymapKol > 10 Then ymapKol = 10 If TileStatusFeld(ymapKol,spielerfeldx) = 0 And objektFeld(ymapKol,spielerfeldx) = 0 Then ys = ys + bewegungSpieler frame2 = frame2 +1 If frame2 > 11 Then frame2 = 0 spielerfeldy = spielerfeldy+1 If spielerfeldy > 10 Then spielerfeldy = 10 EndIf EndIf tiletype: Code: [AUSKLAPPEN] ;map
Type mapTile Field x Field y Field tile End Type Dim mapFeld.mapTile(10,15) For mpt_zeile = 0 To 10 For mpt_spalte = 0 To 15 mapFeld(mpt_zeile,mpt_spalte) = New mapTile mapFeld(mpt_zeile,mpt_spalte)\tile = leer Next Next abschnittDaten Code: [AUSKLAPPEN] Global Absschnitt = 1 ;für absschnitt zeichnen Global AbschnittDatei$ Global a$ Dim AbschnittFeld(10,15) Abschnitt per datei laden Code: [AUSKLAPPEN] .Abschnitt_laden
Function Abschnitt_laden() ;alle daten werden nach abschnittswechsel auf null gesetz zeile = 0 spalte = 0 a = "" ;dateien werden je nach abschnitt festgelegt AbsschnittDatei = ReadFile("Abschnitte/A"+Absschnitt+".abs") ;abschnittdatei einlesen For Zeile = 0 To 10 A = ReadLine(AbsschnittDatei) For Spalte = 0 To 15 AbschnittFeld(Zeile,Spalte) = Mid$(A,Spalte+1,1) Next Next ;alle dateien schliessen CloseFile AbsschnittDatei End Function Code: [AUSKLAPPEN] .map_zeichnen
Function map_zeichnen() x = 0 y = 64 For z1 = 0 To 10 For z2 = 0 To 15 mapFeld(z1,z2)\x = x mapFeld(z1,z2)\y = y x = x +64 ;tiles auf map DrawImage mapFeld(z1,z2)\tile,mapFeld(z1,z2)\x,mapFeld(z1,z2)\y Next x = 0 y = y +64 Next End Function Code: [AUSKLAPPEN] .map_zuweisen
Function map_zuweisen() For Zeile = 0 To 10 For Spalte = 0 To 15 ;tiles Select AbschnittFeld(Zeile,Spalte) Case 0 mapFeld(zeile,Spalte)\tile = leer Case 1 mapFeld(zeile,Spalte)\tile = boden_tile1 Case 2 mapFeld(zeile,Spalte)\tile = boden_tile2 Case 3 mapFeld(zeile,Spalte)\tile = busch_tile_test Case 4 mapFeld(zeile,Spalte)\tile = busch_tile2 Case 5 mapFeld(zeile,Spalte)\tile = fels_gruen2 Case 6 mapFeld(zeile,Spalte)\tile = fels_gruen3 Case 7 mapFeld(zeile,Spalte)\tile = fels_gruen4 Case 8 mapFeld(zeile,Spalte)\tile = tuer End Select Next Next End Function Hoffe man versteht etwas. Gruß Krumu1201 |
||
BladeRunnerModerator |
Di, Okt 21, 2014 9:51 Antworten mit Zitat |
|
---|---|---|
Danke schonmal für das einstellen des Codes. Ich konnte ihn bislang nur kurz überfliegen, Kommentare werden folgen.
aber: Es fehlt eine Beschreibung deines Problemes. Was funktioniert beim zusammenführen nicht, bzw. wo hapert es? Hast Du einen Code bei dem Du die Zusammenführung schon versucht hast und welche Fehler ergaben sich da? Je ausführlicher deine Fragestellung desto gezielter die potentielle Hilfe. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Krumu1201Betreff: Achso |
Di, Okt 21, 2014 10:46 Antworten mit Zitat |
|
---|---|---|
Habe ja wie ich geschrieben 2 spiele: einmal das minrpg das als test galt und das hauptrpg.
jetzt zur eindeutigen problemstellung: im minirpg laufe ich mit keydown und die kollision mit den tiles passt dann so mit dieser bewegung. nur im hautpspiel lade ich die map ja komplizierter und da bekomme ich die bewegung nicht so hin. im hautpspiel laufe ich noch mit keyhit bewegung sieht aber nciht gut aus. jetzt will ich die bewegung aus dem minirpg genauso im hauptspiel haben. packe mal 2 exen ins archiv damit man sich das problem auch visuell anschauen kann: hautpspiel.exe und miniRpg.exe hoffe die funktionieren, sonst melden und ich muss sie umbauen Gruß Krumu1201 |
||
XeresModerator |
Di, Okt 21, 2014 20:21 Antworten mit Zitat |
|
---|---|---|
Minirpg:
Die Bezeichnung der Variablen solltest du als erstes überarbeiten. - "frame2" ist total Aussagelos. Könnte mit dem Spieler was zu tun haben, aber warum dann gerade 2? Ist das die Steuerung für den zweiten Spieler? Oder wird der Spieler aus mehreren Bildern zusammen dargestellt? Wenn es nicht eindeutig ist, sollte man es eindeutig benennen. Englisch oder Deutsch aber wenn möglich einheitlich. - "bewegungSpieler" lässt schon mehr erahnen, womit sie zu tun hat, aber immer noch nicht ganz. Gibt sie an, ob der Spieler in Bewegung ist? Ist das das Bewegungsmoment des Spielers? Besser wäre "geschwindigkeitSpieler", und am besten wäre "spielerGeschwindigkeit"; Ich jedenfalls mag eine Benennung, die von Links nach Rechts von allgemein zu speziell übergeht: spielerBild spielerFrame spielerPositionX spielerPositionY spielerGeschwindigkeit spielerGeschwindigkeitMaximum - Read tile_map(y,x) Das ist nun super Verwirrend - x und y sind üblicher weise Breite und Höhe - und hier werden sie als Höhe und Breite benutzt. Gemeint ist wohl BlitzBasic: [AUSKLAPPEN] For y = 1 To 11 Das mag auch bei kurzen codes alles kein Problem sein, aber über kurz oder lang stolpert man über sowas wieder und denkt sich, es hätte einen bestimmten Zweck gehabt es so und nicht anders zu schreiben. - Ich möchte dazu raten, alle Variablen zu deklarieren. Jeder vertippt sich mal - aber nur in BB erzeugt das neue, leere Variablen die schwer zu findende Bugs erzeugen. Mit IDEal im Strict modus wird man immerhin darauf aufmerksam gemacht. - Magische Zahlen wie in "ys = (ys/64+1)*64" machen eine eigentliche simple Änderung super schwer. Eine Konstante "TILE_SIZE" macht zwar eine Zeile etwas länger - aber dafür kann man sie auch lesen und verstehen. BlitzBasic: [AUSKLAPPEN]
Falls ein anderer nicht schneller ist, gehe ich später noch weiter darauf ein. Zu guter letzt nur noch: Mach es den Leuten nicht schwerer als nötig dir zu helfen - linke direkt! Hauptspiel.exe [1,4MB] miniRpg.exe [1,4MB] |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
BladeRunnerModerator |
Do, Okt 23, 2014 10:37 Antworten mit Zitat |
|
---|---|---|
Ich schliesse mich mal Xeres Ausführungen an. Zudem verstehe ich nicht ganz warum das übertragen der Bewegung nicht klappen sollte. Du hast Doch schon einen Code der die flüssige Bewegung macht. Den musst Du nur auf das Bildschirmweise Darstellen des zweiten Codes anpassen. Wie sehen denn deine bisherigen Versuche dazu aus?
Ansonsten sind die Varnamen in der Tat oft nicht wirkliche Bezeichner, was es schwierig macht den Code zu verstehen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
XeresModerator |
Fr, Okt 24, 2014 0:35 Antworten mit Zitat |
|
---|---|---|
Hauptspiel:
Nochmal zur Benennung: Zeilennummern nehmen von oben nach unten zu (y), Spaltennummern nehmen von links nach rechts zu -> BlitzBasic: [AUSKLAPPEN] Dim mapFeld.mapTile(10,15) Was mir bei den Funktionen auffällt: BlitzBasic: [AUSKLAPPEN] Global Absschnitt = 1 Funktionen sind dafür gedacht, Code zu Kapseln - globale Variablen widersprechen diesem Prinzip. Je mehr globale Variablen man benutzt, desto schwieriger wird das Finden von Bugs, da Funktionen auf einmal von allem drumherum abhängen und nicht mehr nur von ihren Parametern. Viele Parameter braucht die Funktion ja nicht! AbschnittDatei$ enthält ein Datei-handle und wie Bilder, Musik usw. ist das in BB ein Int. Genauso wie "a" wird sie nicht im globalen Scope gebraucht. Gegen eine globale, die sich den aktuellen Abschnitt merkt, ist nichts ein zu wenden - nur sollte sie nicht hard in der Funktion stehen. BlitzBasic: [AUSKLAPPEN]
Schon mal besser. Jetzt fällt mir nur auf, dass die map_zuweisen() Funktion nochmal das Array durchgeht, um die eigentliche Karte zu modifizieren. Es kann sinnvoll sein, dass Laden vom Zuweisen zu trennen, wenn der Zugriff sehr lange dauert - aber da BB keine Threads beherrscht, bleibt das Programm so oder so stehen. Man könnte natürlich auch einen Cache basteln, der die Abschnitte vorhält, wenn sie schon einmal geladen wurden - aber falls nicht, könnte man auch beide Funktionen zusammen schreiben. Bei map_zeichnen() würde ich beanstanden, dass die Funktion nicht nur etwas zeichnet, sondern auch die Koordinaten der Tiles neu setzt. Entweder die Tiles enthalten schon Pixelkoordinaten, oder man berechnet sie in den Schleifen - beides erscheint mir unnötig. BlitzBasic: [AUSKLAPPEN]
Ich würde noch den Spieler in einen Type stecken - dann hat man alle relevanten Informationen in einer Struktur. Davon ab musst du ja nur die eine Steuerung mit der anderen ersetzen - wenn die Umgebung gleich funktioniert. Gib Bescheid, falls es nicht klappt und ansonsten viel Erfolg! |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Krumu1201 |
Fr, Okt 24, 2014 1:39 Antworten mit Zitat |
|
---|---|---|
Danke für die Kritiken und Verbesserungsvorschläge. Werde mich am Wochenende mal dran setzen und den code neu schreiben mit den Verbesserungen.
Gruß Krumu1201 |
||
CO2ehemals "SirMO" |
Fr, Okt 24, 2014 21:16 Antworten mit Zitat |
|
---|---|---|
Deine Frage war doch - wenn ich es richtig verstanden habe - folgende: Du hast ein Testprogramm geschrieben, in dem du simpel eine Tilemap via DataSchlagmichtot lädst. Dort funktioniert die Kollision der Map mit dem Spieler einwandfrei und die Bewegung des Spielers "sieht auch gut aus".
In deinem eigentlichen Projekt lädst du die Daten der Tilemap komplizierter und deswegen funktioniert die Kollision nicht. Zudem sieht die Bewegung des Spielers unschön aus? Sollte das soweit korrekt verstanden sein, habe ich folgende Vorschläge: - Füge deinem MapType eine Variable Kollision hinzu, die auf TRUE steht, falls es sich um ein Kollisionstile handelt und auf FALSE steht, wenn es ein normales Tile ist. - Darauf basierend schreibe am besten eine Funktion, die zwei Parameter: x und y erwartet und dann TRUE oder FALSE returned je nach Wert des MapType-Variablen. - In deinem Testprogramm wurde die Bewegung mit KeyDown() gemacht: Solange die entsprechende Taste gedrückt wird, wird der Code in der If() ausgeführt. In deinem richtigen Projekt schreibst du aber KeyHit(), was zur Folge hat, dass du die Tasten "hämmern" musst, um eine flüssige Bewegung hinzubekommen (Wenn die Taste gedrückt wurde (die Dauer ist egal), dann führe einmal den Code in der If() aus). Ist das gewollt? - Du kannst deine MapDaten auch über WriteByte, bzw. WriteInt und ReadByte, bzw. ReadInt speichern/lesen, dann musst du nicht mit dem String und mit Mid() rumfentern. BlitzBasic: [AUSKLAPPEN] AbschnittFeld(Zeile,Spalte) = Mid$(A,Spalte+1,1) |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
Krumu1201Betreff: Fragen |
Mo, Okt 27, 2014 15:56 Antworten mit Zitat |
|
---|---|---|
Habe mich am Wochenende mal hingesetzt und versucht ein paar Sachen umzusetzen: viel hingekriegt nicht, aber fragen sind aufgetaucht.
Erstmal nur zum Minirpg (andere kommt hoffentlich später ) 1.variablen zu map array local machen? 2.wie spieler type ansprechen ohne dim feld? mache es im moment so: Code: [AUSKLAPPEN] Type spieler Field spielerBild Field spielerFrame Field spielerRichtung$ Field spielerPositionX Field spielerPositionY Field spielerGeschwindigkeit Field spielerGeschwindigkeitMaximum End Type Dim spielerfeld.spieler(0) spielerfeld(0)= New spieler spielerfeld(0)\spielerPositionX = 64 spielerfeld(0)\spielerPositionY = 128 spielerfeld(0)\spielerGeschwindigkeit = 2 spielerfeld(0)\SpielerRichtung$ = "rechts" 3.TILE_TYPE_FREE,TILE_SIZE,KEY_DOWN usw. als Konstanten machen? Gruß Krumu1201 |
||
XeresModerator |
Mo, Okt 27, 2014 21:24 Antworten mit Zitat |
|
---|---|---|
Arrays gibt es in BB nur in zwei verschieden blöden Varianten.
- Dim Arrays sind immer global, können aber neu in anderer Größe definiert werden. - Blitzarrays werden in der form BlitzBasic: [AUSKLAPPEN] Local felder%[10]deklariert und müssen eine Konstante Größe besitzen... Beides nicht toll, aber ich würde bei der Dim Variante bleiben. Types sind so ähnlich wie Datentypen: Man kann jede Variable die ein % oder $ bekommt stattdessen auch als Type deklarieren. BlitzBasic: [AUSKLAPPEN] Type TPlayer Gegen einen globalen Spieler hätte ich nichts aus zu setzen - da die eine Variable viele andere kapselt (Bild, Frame, usw.) ist das so ziemlich am optimum von BB. Und zu guter Letzt: alles zu constanten machen, was auch Konstant ist - von 0 und 1 vielleicht abgesehen (falls es Sinn macht, gibt es ja True und False z.B. wenn es nicht um Berechnungen geht). |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group