Dim-Felder

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

Midimaster

BeitragMo, Dez 21, 2009 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
also entscheide Dich: Types oder Array?

@sprime:
Array ist viel leichter zu verstehen. Vor allem war das auch schon Dein erster Gedanke. Das liegt Dir doch viel mehr, oder?

ich werd mich jetzt darum kümmern, frag mich Löcher in den Bauch. Am Ende hast Du DEIN Bananespiel und DEINEN Editor!


Stell mal den ganzen Code hier rein. Wird ja wohl nicht mehr als 200 Zeilen sein? Dann braucht der Hilfegeber nicht immer Details anfragen. Am besten stellste den Code als EDIT in den ersten Beitrag von Dir und aktualisierst ihn täglich.

Dein Spielfeld nennen wir nun nicht Bananen, sondern Feld

Dim Feld(38,15)

Die Bananen nennen wir Banane

Banane=1

Willst Du nun eine Banane bei X,y, ins Feld werfen, dann Feld(X,Y)=Banane, willst Du sie wieder entfernen, dann Feld(X,Y)=0, schon isse weg.

Das Zeichnen geht so:
Code: [AUSKLAPPEN]
For X=0 to 38
    For Y= 0 to 15
        If Feld(X,Y)=Banane Then
             da malste!
      ....


Die Bildschirm-Koordinaten muss man beim Zeichnen dann halt *32 nehmen

Diese Zeichenroutine ist sowohl für das Spiel als auch für den Editor brauchbar, also kommst sie in eine Function

Das ist fast genau das, was Du selber schon geschrieben oder gedacht hast. Schreib es mal und stell es rein. Is völlig egal ob es läuft und auch, ob es schon malt. Also los!



@alle:
Ihr solltet die Hilfesuchenden schon da abholen, wo Sie stehen und nicht immer gleich drei weitere Baustellen aufmachen. Hier haben wir einen typischen Fall: Der Junge macht seit 28.November da dran rum und is noch kein Stück weiter. Vor allem hat ihm noch keiner seine Eingangs gestellte Frage beantwortet.

Jamagin

Betreff: alles banane

BeitragMo, Dez 21, 2009 23:06
Antworten mit Zitat
Benutzer-Profile anzeigen
@midimaster

Ohne Code ist es schwierig etwas beizusteuern...! Aber du hast Recht!


lg. Jamagin Cool
Bevor du etwas neues beginnst, erledige das alte

Midimaster

BeitragMo, Dez 21, 2009 23:18
Antworten mit Zitat
Benutzer-Profile anzeigen
@jamagin
Ich meinte auch vorhin nicht dich, sondern die Antworten vom 28.11. Manche meinen es bestimmt lieb, aber bringen oft noch mehr Verwirrung in die Sache. Oft glaubt der Fragende, dass er mit seinem Lösungsweg dann völlig falsch lag. Dabei kann man alles so oder so machen. Laufen wird es immer.

Sprime kennt sich aus mit Arrays also helfen wir ihm mit Arrays.

Jamagin

Betreff: dim

BeitragMo, Dez 21, 2009 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
@midimaster

danke! Jep, bin dabei!! --> Wo bleibt nun der Code? *gg*

lg. Jamagin Cool
Bevor du etwas neues beginnst, erledige das alte

Nicdel

BeitragDi, Dez 22, 2009 8:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Sein Code vom Anfang, also das hier:

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


sieht schon richtig aus. Das Problem war ja, dass die Banane nicht verschwunden ist, also das Feld nicht auf -1 gesetzt wird. Jetzt wäre es ganz praktisch, wenn man soviel vom Code sehen könnte, um herauszufinden, was an der Abfrage nicht stimmt.
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

Jamagin

Betreff: banane

BeitragDi, Dez 22, 2009 10:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum so umständlich?? Im Grunde reicht ja eine einfache If ImagesCollide (blabla...) in dieser Function von ihm!

Tritt eine Berührung zwischen Spieler und Banane auf dann lösche Banane - fertig!

lg. Jamagin Cool
Bevor du etwas neues beginnst, erledige das alte

Tankbuster

BeitragDi, Dez 22, 2009 11:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn schon RectsCollide, denn ImagesCollide ist verbuggt, und führt oft zu MAV.
Twitter
Download Jewel Snake!
Windows|Android

Jamagin

Betreff: imagescollide

BeitragDi, Dez 22, 2009 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@Tankbuster

ImagesCollide ist verbuggt?? Wieso das denn?
Nicht wenn die Parameter richtig gesetzt sind! Ich habe nie Probleme mit Imagescollide und ImagesRectOverlap oder wie der Befehl heißt bei einer Banane? Na ich weiß nicht ob das dann gut ist, Rectsoverlap und so weiter kann man ja bei Rechteckigen Objekten sehr gut anwenden aber bei gekrümmten?

Natürlich jeder wie er mag, wenn jemand Wert auf Pixelgenau legt dann schon ImageCollide...

lg. Jamagin Cool
Bevor du etwas neues beginnst, erledige das alte

Tankbuster

BeitragDi, Dez 22, 2009 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist so eines der ersten Themen dazu:
https://www.blitzforum.de/foru...php?t=9105

Andere find ich grad garnicht.
Fakt ist auf jedenfall, dass der Befehl ziemlich oft ohne codetechnischen-Grund zum Mav führt. Sowas wie...
Code: [AUSKLAPPEN]

[...]
While Not Keydown(1)

If ImagesCollide(Schuss,x,y,0,Spieler,sx,sy,0) Then blub..

Waittimer(timer)
Flip 0
Wend

...funktioniert zwar eine Zeit lang, aber irgendwann macht es Bam, und es kommt ein Mav. Bei manchen Rechnern funktioniert das garnicht.

Der Grund dafür ist wahrscheinlich die Tatsache, dass moderne Treiber sowas nichtmehr sonderlich unterstützen.
Twitter
Download Jewel Snake!
Windows|Android

mpmxyz

BeitragDi, Dez 22, 2009 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/foru...hp?t=27025
Es liegt an den Grafikkartentreibern.
Langsam aber sicher scheint die Unterstützung für DX7 und DirectDraw zu schwinden...
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Jamagin

BeitragDi, Dez 22, 2009 11:43
Antworten mit Zitat
Benutzer-Profile anzeigen
@Tankbuster

Ich würde sagen, ist aber nur Annahme den Waittimer(Wert) nach While und Flip 0 durch Flip ersetzen!

Begründung: Ich habe es bei meinem Programm ausprobiert mit Flip 0 und da hatte ich mehr Ruckartige Bewegungen als mit Flip, denn bei Flip 0 wird das Bild sofort aktualisiert und Flip aktualisiert erst dann wenn das Bild im Backpuffer komplett gezeichnet ist, erst dann wird geflippt!

Und die MAV könnte durchaus mit dem Waittimer zusammenhängen oder auch mit dem Flip 0, ersetze Flip 0 mit Flip und schreib dein Waittimer nach While, du wirst sehen, die Fehlermeldung bleibt aus. Sie kann aber auch auftreten, wenn es das Objekt gar nicht mehr gibt, vielleicht hat nur ein CLS gefehlt, d.h, das Objekt war zwar noch sichtbar, aber es wurde keine Bildschirmsäuberung durchgeführt!

Was auch immer, man sollte nicht gleich ausweichen, wenn ein Befehl Probleme verursacht, sondern den Fehler suchen. Auch darin besteht programmieren...! Soll aber keine Kritik an Dich sein!!

lg. Jamagin Cool
Bevor du etwas neues beginnst, erledige das alte

Tankbuster

BeitragDi, Dez 22, 2009 11:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Sie kann aber auch auftreten, wenn es das Objekt gar nicht mehr gibt

Die Bilder existieren solange im Speicher bis sie mit FreeImage gelöscht wurden. Du kannst auch nicht gezeichnete Bilder auf Kollision überprüfen Wink
Genauso wie du RectsOverlap auch ohne Rect benutzen kannst.

Es ist egal ob irgendwas auf dem Back- oder FrontBuffer gezeichnet wurde.
Twitter
Download Jewel Snake!
Windows|Android

mpmxyz

BeitragDi, Dez 22, 2009 11:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Man soll also Treiberfehler beseitigen... Rolling Eyes
Und ich rate dir, die Beschreibung von Flip noch einmal genau durchzulesen.
Flip ohne 0 bringt einem außerdem noch 100% Auslastung, da das Programm aktiv darauf wartet, dass der Bildschirm fertig aktualisiert wurde.
Mit "noch nicht fertig gezeichnet" hat das gar nichts zu tun!

Es heißt nicht, dass ImagesCollide bei jedem nicht funktioniert... Es gibt nur bei einigen Leuten Probleme, weshalb man auf ihn gleich verzichten sollte...
Edit: Ich hatte mit meiner alten Grafikkarte z.B. keine Probleme gehabt.

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Jamagin

BeitragDi, Dez 22, 2009 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
@mpmxyz

Treiberfehler beseitigen, na ich weiß nicht ob das geht!!

Warum soll ich mir Flip nochmals durchlesen, ich habe es eh beschrieben. Nur ich werde mein Programm nicht umstellen, wenn eh alles flüssig geht!
Habe ja versucht eine Ausblendroutine mit Flip 0, das hat dann aber nicht schön ausgesehen, da war die Blendroutine nicht mal zu Ende und schon wurde umgeschaltet. Nee, das ist nicht fair! Shocked

Und wenn einige Probleme mit MAV haben, ich kann das leider nicht beurteilen. Ich hatte eben bis jetzt keine damit und wenn eine auftritt, ja da war gestern (21.12.09) was von einem User hier, der hatte ne MAV bei Imagescollide aber auch nur, weil er es falsch angewendet hatte. Ich habe dann seinen Code komplett erneuert und es lief ohne MAV!!

lg. Jamagin Cool
Bevor du etwas neues beginnst, erledige das alte
 

sprime

BeitragSa, Jan 09, 2010 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
[quote="Alfadur"]sprime hat Folgendes geschrieben:

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.


und wie mach ich das ?

Midimaster

BeitragSa, Jan 09, 2010 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Sprime

na wie geht es voran mit dem Projekt?

stell mal bitte den aktuellen Code rein, dann die aktuelle Frage, denn irgendwie ist ja nun schon "ein wenig" Zeit vergangen seit deinem letzen Mal hier...
 

sprime

Betreff: ..

BeitragSa, Jan 09, 2010 22:10
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab seitdem nicht mehr programmiert, also hat sich nix verändert xD

brauch man meinen code um zu sagen wie man das umsetzt ?? weil ich denke der is sehr lang unübersichtlich für leute die den nicht geschrieben haben :S ^^

Midimaster

BeitragSa, Jan 09, 2010 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ich denke, es geht um diese Bananengeschichte?

Hast du immer noch Probleme, dass die Bananen nicht verschwinden?
 

sprime

BeitragSa, Jan 09, 2010 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ja genau.. mein problem ist ja nur, dass ich nicht weiß wie ich dem programm sage das die banane an der ich grad bin verschwunden muss.. also wie ich sage welche banane verschindet.. und halt mit dims

BladeRunner

Moderator

BeitragSa, Jan 09, 2010 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast doch dein Dim. Und Du hast die Position des Spielers. aus der Spielerposition kannst Du auf die Banane schliessen.
Das ist nur ein wenig Mathe.
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

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group