problem mit variablen
Übersicht BlitzBasic Beginners-Corner
CrystalBetreff: problem mit variablen |
Mo, Mai 17, 2010 17:05 Antworten mit Zitat |
|
---|---|---|
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? LG |
||
Hagbard |
Mo, Mai 17, 2010 17:11 Antworten mit Zitat |
|
---|---|---|
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 |
Mo, Mai 17, 2010 17:13 Antworten mit Zitat |
|
---|---|---|
ich hab mich wahrscheinlich schlecht ausgedrückt
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 |
Mo, Mai 17, 2010 17:14 Antworten mit Zitat |
|
---|---|---|
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 |
Mo, Mai 17, 2010 17:16 Antworten mit Zitat |
|
---|---|---|
schon, aber wie kann ich diese definieren?
der x,y-wert des characters ändert sich immer und daher auch der gegenstand |
||
BBPro2 |
Mo, Mai 17, 2010 17:18 Antworten mit Zitat |
|
---|---|---|
ja weil du genau das was dir gerade gesagt wurde nicht beherzigst....
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 |
Mo, Mai 17, 2010 17:18 Antworten mit Zitat |
|
---|---|---|
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 |
Mo, Mai 17, 2010 17:19 Antworten mit Zitat |
|
---|---|---|
und wie kann man das machen, ich bin noch nicht lange mit bb vertraut :/ | ||
Thunder |
Mo, Mai 17, 2010 17:26 Antworten mit Zitat |
|
---|---|---|
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 |
Mo, Mai 17, 2010 19:01 Antworten mit Zitat |
|
---|---|---|
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 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] .... 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] .... 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 |
Di, Mai 18, 2010 3:22 Antworten mit Zitat |
|
---|---|---|
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 |
Mi, Mai 19, 2010 0:40 Antworten mit Zitat |
|
---|---|---|
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 |
Mi, Mai 19, 2010 19:01 Antworten mit Zitat |
|
---|---|---|
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 |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group