sprites und noch andere kleinigkeiten!!!

Previous topic - Next topic

Guest

Also als allererstes dickes lob an die GLBasic schöpfer! Ich als absoluter Anfänger hat schon nach kürzester Zeit diverse erfolgserlebnisse! Allerdings bin ich beim programmieren nicht so bewandert die meißten leute hier im forum! Des wegen hoffe ich das ihr mir ein bißchen zur seite stehen könntet!

Fragen:

1. Kann man auch die Auflösung in der Demoversion verändern?

2. Ich möchte ein klassisches Rollenspiel entwerfen das ohne großartiges Kampfsystem auskommt(Zelda like), alles mit Sprites natürlich! bisher habe ich die Sprites zu Darstellung immer ala Batch geschrieben:

bsp:

Sprite 1 0, 100
Sprite 1 50, 100
Sprite ....
Sprite 1 0, 150
...
...

gibt es eine sinnvoller methode dies zu bewerkstelligen? Das Schachbrett kommt denke ich nicht in frage da 8x8 felder einfach zu klein sind(Meine Sprites sind teilweise 12x12pixel gross!)

2. wie kann ich einen sprite bewegen, also von links nach rechts laufen lassen? ich habe schon viel mit sprites angefangen aber noch keine möglichkeit gefundne dies zu bewerkstelligen!

Kitty Hello

Hallo,

aller Anfang ist schwer, aber Du zeigst großes Interesse und damit schaffst Du's genau so wie die anderen hier und ich das auch geschafft haben.

Ich fang' mit der 2.Frage an, die ist einfacher:
Code (glbasic) Select
FOR x = 0 TO 640 // Variable x läuft von 0 nach 640
   // SPRITE nr, x, 0
   PRINT "Da lang ->", x, 0 // An Stelle 'x' was schreiben
   SHOWSCREEN // Bildschirm anzeigen
NEXT

Ein "Schachbrett" ist die einzige sinnvolle Möglichkeit um eine Landkarte ala Zelda darzustellen.
Code (glbasic) Select
DIM feld[100][100] // 100x100 Feld für die Blöcke

FOR x=0 TO 99
   FOR y=0 TO 99
      feld[x][y] = RND(9) // Zufällige Werte reinschreiben
    NEXT
NEXT

// Sprites laden
// FOR nr=0 TO 9; LOADSPRITE "name"+nr+".bmp", nr; NEXT

// Spielfeld anzeigen
WHILE TRUE // Endlosschleife
   MOUSESTATE mx, my,b1,b2 // Mauskoordinaten lesen
   breite = 5 // 5 BLöcke breiter Bildausschnitt
   hoehe = 5 // dto.
   blockgroesse = 32 // Pixel Blockgröße (Deine Sprites für den Hintergrund)
   startx = INTEGER(mx/blockgroesse)
   starty = INTEGER(my/blockgroesse)
   
   // jetzt ermitteln, um wieviele Pixel der Ausschnitt
   // verschoben ist.
   // also nochmal:
   // Wir haben eine Karte mit 100x100 Blöcken, je 32x32
   // Pixel. Gibt eine Karte von 3200x3200 Pixel.
   // Wir zeigen nur den Bereich der Karte an, der von
   // mx bis mx+breite*blockgroesse (my genauso)
   // Dazu bestimmen wir, welche Blöcke alle zu sehen sind
   // Das sind von mx/32 5 Blöcke nach rechts
   // Jetzt sind die Blöcke aber auch noch um ein paar
   // Pixel verschoben:
   softx = mx - startx*blockgroesse // =MOD(mx,blockgroesse)
   softy = my - starty*blockgroesse
   FOR x = 0 TO breite
      FOR y = 0 TO hoehe
         // Sprite Feld[x+startx][y+starty], x*blockgroesse-softx, y*blockgroesse-softy
         PRINT feld[x+startx][y+starty], x*blockgroesse-softx, y*blockgroesse-softy
      NEXT
   NEXT
   SHOWSCREEN
WEND


Ich hab' jetzt ein schlechtes Gewissen, weil ich hier unter Linux bin und nicht kompilieren/testen kann. Ich hoffe, dass Du mit der Maus durch eine Zahlenlandschaft scrollen kannst.

Das Spiel "Wumbo's Adventure" ist schon ein bisschen wie Zelda, aber der Code ist echt nicht gut geschrieben. Ein klasisches RPG wie FinalFantasy ist einfacher zu schreiben. Das mit dem Scrolling kann man ja auch rauslassen, wenn Du willst. Ich erklär' aber gerne wie's geht, wenn Du willst. Ich kann mich nur oft nicht so gut ausdrücken, dass man's kapiert. Zeichnungen helfen da immer...

edit:
Da war ein kleiner Fehler drin. Jetzt geht's