problem mit variablen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Crystal

Betreff: problem mit variablen

BeitragMo, Mai 17, 2010 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hey leute

ich hab ein kleines problem, und zwar:

ich habe zwei variablen (x,y). Diese geben die position eines bildes an (mein character).

da sich dieser immer ändert (durch tasten) weiß ich nicht, wie ich z.b. etwas fallen lassen kann im spiel und dieses bild dann auf der alten position liegen bleibt (da wo ichs hingeworfen habe).

wenn sich die x,y-werte ändern, bewegt sich logischerweise der character und das fallen gelassene item

wie kann ich das beheben? Confused

LG

Hagbard

BeitragMo, Mai 17, 2010 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich dich richtig verstanden habe:

Das aufgehobene Item, darf nur die gleichen X, Y Werte haben, solange sie eben aufgehoben sind. D.h. du musst erstmal zwischen aufgehoben und nicht aufgehoben unterscheiden. Du könntest also eine Variable auf 0 (nicht aufgehoben) oder 1 (aufgehoben) setzen und anschließend festlegen (If status = 0 Then ... ), was bei welchen Zustand passieren soll.
 

Crystal

BeitragMo, Mai 17, 2010 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab mich wahrscheinlich schlecht ausgedrückt Laughing

ich möchte, dass wenn man etwas aus dem inventar auf den boden wirft, dass der gegenstand da liegen bliebt, auch wenn ich mich davon wegbewege.

LG

SpionAtom

BeitragMo, Mai 17, 2010 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Inventargegenstand benötigt eigene x,y-Koordinaten, dann sollte es klappen
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Crystal

BeitragMo, Mai 17, 2010 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
schon, aber wie kann ich diese definieren?

der x,y-wert des characters ändert sich immer und daher auch der gegenstand Confused
 

BBPro2

BeitragMo, Mai 17, 2010 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ja weil du genau das was dir gerade gesagt wurde nicht beherzigst.... Rolling Eyes


der gegenstand braucht seine EIGENEN koordinaten
diese werden wenn er getragen wird immer aktualisiert (auf den wert der x,y
koordinaten des trägers gesetzt) und wenn er nicht getragen wird
bleiben diese konstant

dann gehts

mpmxyz

BeitragMo, Mai 17, 2010 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn der Gegenstand eigene Variablen hat, sollte sich seine Position nicht ändern, wenn sich der Spieler bewegt.
Falls dieser irgendwo vom Spieler fallen gelassen wird, muss seine Position einmalig auf die des Spielers gesetzt werden.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

Crystal

BeitragMo, Mai 17, 2010 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie kann man das machen, ich bin noch nicht lange mit bb vertraut :/

Thunder

BeitragMo, Mai 17, 2010 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann solltest du dich eher mit Grundlagen beschäftigen und nicht mit Spieleprogrammierung, oder?

Ansonsten Type - Achtung: Keine Grundlagen -> Kein Verständnis für Types!


Edit: Ich glaube nicht, dass es sinnvoll ist, das Programmieren auf so einen Weg zu erlernen. Ich hatte noch das Glück ein BlitzBasic-Buch bei mir zu Hause zu haben, in dem alles Schritt für Schritt erklärt wurde. Zuerst natürlich Textmodus - von Grafik war für die ersten (min.) 90 Seiten keine Rede.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
  • Zuletzt bearbeitet von Thunder am Mo, Mai 17, 2010 19:07, insgesamt einmal bearbeitet

Midimaster

BeitragMo, Mai 17, 2010 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider sendest du kein einziges Stück Code mit. Da wird das Helfen schwierig.

Also Da ist eine Spieler mit seinen X und Y- Koordinaten. Und du hast einen Gegenstand der bekommt eigene X und Y-Koordinaten. Die nennen wir mal ItemX% und ItemY%.

Zwischenfrage:
Sieht man den Gegenstand immer schon am Spieler, während der Spieler sich bewegt? Oder wird der eigentlich erst in dem Moment sichtbar, wo der Spieler ihn abwirft?

Im Moment des Abwerfens passiert jedenfalls folgendes:

BlitzBasic: [AUSKLAPPEN]
ItemX=X
ItemY=Y

danach darf dieser Code nicht mehr aufgerufen werden, da ja die beiden Variablen sich jetzt nicht mehr ändern sollen.

Das könnte so sein:

Variante A:


BlitzBasic: [AUSKLAPPEN]
....
If KeyHit(2) Then ;wenn die Zahl 1 gedrückt wird
ItemX=X
ItemY=Y
EndIf

DrawImage Spieler, X, Y
DrawImage Gegendstand, ItemX, ItemY
Flip
...



Variante B:

Wenn man den Gegenstand schon immer am Spieler sieht, dann müsste noch eine Zeile eingefügt werden, die den Gegenstand mitnimmt, solange der noch nicht abgeworfen wurde. Dazu führen wir noch eine neue Variable ItemAmBoden% ein:


BlitzBasic: [AUSKLAPPEN]
....
If KeyHit(2) Then ;wenn die Zahl 1 gedrückt wird
ItemAmBoden=1
EndIf

If ItemAmBoden=0 Then
ItemX=X
ItemY=Y
EndIf

DrawImage Spieler, X, Y
DrawImage Gegendstand, ItemX, ItemY
Flip
...



Ich empfehle dir hier mal mein Variablen-Tutorial:
https://www.blitzforum.de/foru...hp?t=33456
  • Zuletzt bearbeitet von Midimaster am Di, Mai 18, 2010 8:24, insgesamt einmal bearbeitet
 

BBPro2

BeitragDi, Mai 18, 2010 3:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Crystal hat Folgendes geschrieben:
und wie kann man das machen, ich bin noch nicht lange mit bb vertraut :/


das hat relativ wenig speziell mit bb zu tun
du scheinst noch nicht sehr lange mit programmieren an sich vertraut zu sein

das ist ja erstmal nichts schlimmes und es ist ja super dass immer wieder
leute irgendwann anfangen zu programmieren - sonst hätten wir irgendwann ein ziemliches
problem, wenn alle weg gestorben sind, die schon programmieren können... ^^

aber du solltest wirklich erstmal einige tutorials durcharbeiten und die ABSOLUTEN
grundlagen von programmierung kennen lernen bevor du daran denkst irgendwas
(vor allem grafisches) zu programmieren

bißchen print input und variablen reichen für die ersten paar tage bis man ein gefühl dafür
bekommt wie man mit variablen überhaupt zu arbeiten hat

dann kann man schritt für schritt andere konzepte hinzuholen
 

Hangman

BeitragMi, Mai 19, 2010 0:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier sind die Codeschnipsel der anderen mal zum ausprobieren. Kannst gucken ob wir dich richtig verstanden haben, wenn ja siehst dann ja jetzt wie es geht.
Code: [AUSKLAPPEN]
Graphics 1024,768,16,2
SetBuffer BackBuffer()


Global X,Y

Global ItemX,ItemY

Global Aufgehoben;1=aufgehoben, 0=nicht aufgehoben(bleibt liegen)



Repeat
   Cls
      
      If KeyHit(57) Then Aufgehoben = 1 - Aufgehoben
      If KeyDown(205) Then X = X + 1;Spieler bewegen
      If KeyDown(208) Then Y = Y + 1
      If KeyDown(200) Then Y = Y - 1
      If KeyDown(203) Then X = X - 1
      
      If Aufgehoben = 1 Then
         ItemX = X
         ItemY = Y
      End If
      
      Color 255,255,0
      Rect X,Y,40,40,1;Player zeichnen
      
      Color 255,0,255
      Rect ItemX,ItemY,30,30,1;Objekt zeichnen
      
      Color 255,255,255
      Text 400,10,"Leertaste: Aufnehmen/Ablegen des Items"
      Text 400,30,"Pfeiltasten um sich zu bewegen"
      Text X+50,Y,"Spieler"
      Text ItemX+40,ItemY,"Item"
      
   Flip
Until KeyHit(1)
End
Ich habe Berthold gebrochen.

skey-z

BeitragMi, Mai 19, 2010 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also hier empfielt sich der Einsatz von Types, am Anfang erscheinen Sie recht komplex, aber so schwer ist das gar nicht, ich glaube midimaster, aber auch andere haben dazu schon ein paar gute Tutorials geschrieben.

Wenn es sich nur um einen einzigen Gegenstand im 'ganzen' Spiel handelt, reichen 2 Variablen für den Gegenstand, wenn es mehrere Gegenstände seien sollen, braucht man auf jedne Fall Types.

Code: [AUSKLAPPEN]

Type TItem
     Field x%
     Field y%
     Field img%
End Type


in der Hauptschleife dann

Code: [AUSKLAPPEN]

If KeyHit(57) Then PullItem(SpielerX, SpielerY, GegenstandImg);Leertaste

for item.TItem = each TItem
    DrawImage item\img, item\x, item\y
next


Die Function für das Item abwerfen
Code: [AUSKLAPPEN]

Function PullItem(x%, y%, img%)
     item.TItem = new TItem
     item\x = x
     item\y = y
     item\img = copyimage(img)
End Function


Für den Anfang und einen Denkanstoß sollte es reichen, alles andere in den Tutorials
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group