Dim-Felder
Übersicht

sprimeBetreff: Dim-Felder |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallöle...
Ich sitz ja schon seit ner Weile an einem Jump'n'run Spiel, habe jetz aber alles umstrukturiert und bin jetz auf ein Problem gestoßen. In meinem Spiel kann man Bananen aufsammeln (so wie münzen bei anderen spielen). Die bananen hab ich in ein dimfeld gespeichert: dim bananen(38,16) hab sie auch gemalt, sie sind auf dem bildschirm angezeigt, aber ich weiß nicht wie ich das umsetzen soll, das die verschwinden wenn ich die berühre, ich habs schon versucht mit banane(bananex,bananey) = 0 , aber i.wie hat das nicht funtkoiniert, könnt ihr mir helfen ? |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mehr Code wär ganz gut. Ansonsten: Versuch mal bananen(bananex/tilesize,bananey/tilesize) =0 oder so ähnlich... | ||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie werden die Bananen denn gezeichnet?
Und was für Informationen stehen im Dimfeld? Wie verwaltest du die Bananen eigentlich? So al'la "Banane(ID,Sonstiges)" oder anders? |
||
Twitter
Download Jewel Snake! Windows|Android |
sprime |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
naya ich speicher das dimfeld halt mit dim banane(x,y) malen tu ichs mit
For x = 0 To 37 For y = 1 To 15 DrawImage tileset,x*32,y*32, banane(x,y) Next Next wo die bananen liegen mach ich halt ausm leveleditor raus in datafeldern data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 zb. und ja, mehr hab ich eig nich |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuch mal
BlitzBasic: [AUSKLAPPEN]
|
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schaumal, du könntest es auch so machen:
Achtung, pseudocode! Zitat: Const draw=0 Const x_pos=1 Const y_pos=2 Dim Banane(100,2) Bild=LoadImage("banane.png") create_Bananen() While .... [...] If Bananeeingesammelt(i) Then Banane(i,draw)=0 [...] For i=1 to BananenAnzahl If Banane(i,draw)=1 Then DrawImage Bild,Banane(i,x_pos),Banane(i,y_pos),0 Next Wend... Du musst nicht für jede Banane ein Bild laden, du kannst ein geladenes mehrfach einzeichnen. Ist aber ein Fehler, der von Anfängern häufig gemacht wird ![]() Wobei Nicdels Lösung Einfacher ist. Meine ist nur bei größeren Maps toll, da man nicht für jedes Feld eine Banane braucht ( ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
sprime |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich brech gleich zusammen, ich bekomms i.wie nich hin, ich hab versucht die einfachere lösung zu nehmen aber es funktioniert immernoch nicht.. ich hab jetz so gemalt:
Code: [AUSKLAPPEN] For x = 0 To 37
For y = 1 To 15 If banane(x,y)>=1 Then DrawImage tileset,x*32,y*32,banane(x,y) EndIf If banane((Player_pos_x +16) /32,(Player_pos_y +32) /32)>=1 Or banane((Player_pos_x +16) /32,Player_pos_y /32)>=1 Then banane(x,y) = -1 EndIf Next Next es geht immer noch nicht, ich laufe durch die bananen durch und es passiert nichts.. |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
wieso arbeitest du nicht mit types ?
dann kannst du die banane einfach löschen und dein Programm würde sogar umso weniger bananen da sind, schneller werden ![]() Grüße TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
sprime |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
die idee hat ich ja auch schon aber ich wusste nicht wie ich das in meinen leveleditor einbauen kann, das heißt wie ich im leveleditor die bananen aufmalen kann, der die dann speichert und dann im richtigen spiel malt | ||
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
naja zum malen einfach statt den zwei for schleifen
Code: [AUSKLAPPEN] for banane.banane=each banane
Drawimage bananenbild,banane\x,banane\y next Speichern würd ich so machen... Code: [AUSKLAPPEN] map=writefile("mapname.blubb")
i=0 for banane.banane=each banane i=i+1 next writeint map,i ;zählt die anzahl der bananen insgesamt und speichert den wert for banane.banane=each banane;für jede banane jetzt die daten speichern writeint map,banane\x writeint map,banane\y next Wenn dus dann lädst... Code: [AUSKLAPPEN] map=readfile("mapname.blubb")
counter=readint(map) ;anzahl auslesen for i=0 to counter ;für die anzahl mal wiederholen banane.banane=new banane;erstellen banane\x=readint(map);und die daten entsprechend auslesen banane\y=readint(map) next |
||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beim Speichern speicherst du die Anzahl der Types und dann die Attribute.
Dass kann dann (achtung Skizze) so aussehen Code: [AUSKLAPPEN] 3
X Y Leben X Y Leben X Y Leben |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
sprimeBetreff: .. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
war jetz 4 wochen nicht mehr am pc.. nun seh ich die antworten.. ich verzweifel leute.. ich scheiter schon daran die bananen im leveleditor sehen zu lassen.. eure antworten sind gut aber i.wie klappt das bei meinem spezifischen fall nicht.. vielleicht könnt ihr mir genau den code sagen damit ich vielleicht verstehe was mein problem ist.. also ganz von vorne im editor..:
Code: [AUSKLAPPEN] Global anzahl=0
Global info.banane Type banane Field Pos_x Field Pos_y End Type so ist mein type... soo, jetz will ich machen das wenn ich im level editor auf eine stelle klicke das dann da eine banane ist und wenn ich dann speicher das er die anzahl und die stelle der banane speichert.. schon beim malen scheitere ich.. ich habe gemacht : Code: [AUSKLAPPEN] If MouseDown(1) And my<512 And layer = 4 Then
For info.banane = Each banane DrawImage tileset, info\Pos_x, info\Pos_y,tile4 Next End If doch es passiert nichts ! hab ich was vergessen, was falsch gemacht oder so ?? bitte helft mir, ich werd echt verrückt.. vielleicht sind das dumme fragen/fehler von mir aber irgentwie muss man es ja lernen ^^ versucht es mir einfach idiotensicher zu erklären ich danke euch im vorraus |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Willst du die Bananen wirklich nur zeichnen lassen, wenn man die Maus gedrückt hält, unter diesen Koordinaten ist und der 4. Layer ausgewählt ist?
Das mit dem Layer verstehe ich ja noch - aber den Rest finde ich unlogisch. Versuchs doch erst mal ohne diese Bedingungen. Und nenne das teil nicht "info" - das ist die sinnloseste Bezeichnung überhaupt... Bei mehr als einem Type weißt du sicher nicht mehr ob "info" eine Banane, ein Auto oder sonst was ist... |
||
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) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dein Gedankengang ist schon falsch:
Zitat: ...dass, wenn ich im level editor auf eine stelle klicke, dass dann da eine banane ist...
Wenn Du klickst, willst Du doch eigentlich, dass da eine neue Banane ensteht. Natürlich soll sie auch noch da sein, wenn Du dann anschließend nicht mehr klickst. du musst als das Zeichnen der Bananen von der Maus-Eingabe trennen. Code: [AUSKLAPPEN] Hauptschleife
---------- If MausIrgendwas Then Neue Banane dort erstellen endif For Each Banane... Zeichnet alle Bananen, die schon erstellt wurden Next Flip ------------ |
||
![]() |
JamaginBetreff: alles banane |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wozu gibt es Variablen?
Wenn ich die Maustaste drücke, Wert = NOT Wert und immer wenn der Wert = true dann ZEICHNE Banane sonst nicht. Weiters mußt du dann aber auch überprüfen, ob auf dem Feld X, Y schon eine Banane liegt, sonst würdest ja viel. 2 oder mehr Bananen auf ein Feld legen!! lg. Jamagin ![]() |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
@sprime
Wieviel Codezeilen hast Du denn von diesem Projekt schon fertig geschrieben? Ich frage deshalb, weil ich glaube, dass Du ohne Types alleine besser zurecht kämst. Wenn natürlich schon das Spiel läuft und nur noch der Editor geschrieben werden muss, dann bleib bei den Types. Wenn aber der Editor das erste ist, was Du jetzt von dem Projekt anpackst, dann würde ich an Deiner Stelle zu Deinem ersten Gedanke vom 28.Nov zurückkehren. @alle mensch, nicht jeder der gerade mit dem programmieren anfängt muss doch gleich TYPES anfangen. Das macht es echt nicht leichter für nen Neuling. Einige haben hier echt einen Narren an Types gefressen. Für die alle hier der ultimative Type ![]() Code: [AUSKLAPPEN] TYPE MY_INTEGER
Field Zahl% End TYPE A.MY_INTEGER = NEW MY_INTEGER A\Zahl=5 PRINT A\Zahl End ...wundert mich, dass das eigentlich noch keiner vorgeschlagen hatte bisher... |
||
![]() |
JamaginBetreff: types |
![]() Antworten mit Zitat ![]() |
---|---|---|
@midimaster
haha, auf jedenfall schneller als Print A. Spaß beiseite! Mit Types arbeiten ist klasse, mit Dim genauso. Aber man sollte doch alles in Betracht ziehen und dann seine für sich persönlich bessere Methode wählen. Wie auch immer, in meinem Vorschlag hab ich nichts von Types erwähnt, lediglich von Variablen und diese müssen nicht unbedingt ein Type sein. Andererseits kann er mit Types aber den Bananen zusätzliche Eigenschaften mitgeben, wie zB. Energie oder Extrapunkte oder ein Freileben, was auch immer! lg. Jamagin ![]() NB: Aber dein Ultimatives Type das hat was...! |
||
Bevor du etwas neues beginnst, erledige das alte |
sprime |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sagen wir so, ich könnte dieses problem schon auf dim's ändern, das hat ich ja vorher, aber da saß ich vor dem problem das ich nich hinbekommen habe die bananen verschwinden zu lassen wenn ich durchlaufe.. geht das mit dim feldern ?? ihr könnt ja oben nochmal mein problem betrachten | ||
![]() |
JamaginBetreff: nochmals |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] For item.banane = Each banane If ImagesCollide(BANANE, item\x, item\y, 0, FIGUR, player\x, player\y, player\frame) PlaySound FX_COLLECTING ; --> Einen Sound abspielen SC = SC + 10 ; Punkte gutschreiben Delete item ; Banane löschen exit ; Schleife verlassen EndIf Next Beispiel mit Type... lg. Jamagin ![]() |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
Alfadur |
![]() Antworten mit Zitat ![]() |
---|---|---|
sprime hat Folgendes geschrieben: sagen wir so, ich könnte dieses problem schon auf dim's ändern, das hat ich ja vorher, aber da saß ich vor dem problem das ich nich hinbekommen habe die bananen verschwinden zu lassen wenn ich durchlaufe.. geht das mit dim feldern ?? ihr könnt ja oben nochmal mein problem betrachten
Das du das nicht hingekriegt hast liegt womöglich hierdran: (code vom 28.11.) Code: [AUSKLAPPEN] If banane((Player_pos_x +16) /32,(Player_pos_y +32) /32)>=1 Or banane((Player_pos_x +16) /32,Player_pos_y /32)>=1 Then banane(x,y) = -1 Du checkst ob an der Spielerposition eine Banane ist, falls ja, und hier kommt der Fehler, setzt du einfach das Array an der Stelle auf -1 an welcher sich gerade deine Hinmalschleife befindet. Ist das sinnig? Wenn an der Stelle an der der Spieler ist ((Player_pos_x +16) /32,(Player_pos_y +32) /32) eine Banane ist, dann solltest du auch das Array an der Stelle an der der Spieler ist auf 0 oder -1 setzen. Und nicht an relativ zufälligen X/Y Werten. Außerdem ist die Kollisionsprüfung innerhalb dieser zwei For Schleifen auch unsinnig. |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group