Verständnisproblem: Cls und Cursor-anzeige
Übersicht

extraBetreff: Verständnisproblem: Cls und Cursor-anzeige |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Guten tag....
nach einer halben stunde forensuche ist genug. folgender code (RPG-Tutorial, Robsite): (ist nicht vollständig!) Code: [AUSKLAPPEN] Dim map(31,23)
;den Grafikmodus laden, wie vorher erwähnt 1024*768*16 Graphics 1024,768,16,1 ;Läd das tileset, dessen tiles 32*32 pixel groß sind ;das erste tile hat den wert 0 und es sind insgesamt 6 dieser ;mini bilder Tileset = LoadAnimImage("tileset.bmp",32,32,0,6) ;ein mauszeiger, den ich mit Hypersnap aus einer curser-datei ;in das bitmap-format umgewandelt habe. Maus = LoadImage("maus.bmp") ;hier werden alle variablen globalisier, die auch in den ;functionen verwendet werden. Global x,y,mx,my,mapx,mapy,tile = 1 ;Startet die Hauptschleife Repeat ;Aktiviert den Backbuffer SetBuffer BackBuffer() ;ESC-Taste zum beenden des programs If KeyDown(1) Then End ;die array wird eingelesen und die map wird gemalt For x = 0 To 31 For y = 0 To 23 DrawImage tileset,x*32,y*32,map(x,y) Next Next ;Die Tasten von 1 - 6 ich erklehre mal kurz die ;functione: ;Das zu malende tile hat die framezahl : ;1-Taste = 1 ;2-Taste = 2 ;3-Taste = 3 ;4-Taste = 4 ;5-Taste = 5 ;6-Taste = 0 If KeyDown(2) Then tile = 1 If KeyDown(3) Then tile = 2 If KeyDown(4) Then tile = 3 If KeyDown(5) Then tile = 4 If KeyDown(6) Then tile = 5 If KeyDown(7) Then tile = 0 ;die veriablen mx und my werden den koordinaten der maus ;zugewiesen. mx = MouseX() my = MouseY() ;wenn man die Linke maustaste drückt.... If MouseDown(1) Then ;wird die function scroll aufgerufen.... scroll() ;und dei aktuelelle positon des mauszeigers, ;die in der function scroll berechnet wird... ;also das tile wird einfach auf klick ;gesetzt, wobei das frame des tilesets ;die veriable tile angibt. map(mapx,mapy) = tile End If ;die selbe prozedur, nur dass diesmal die ;rechte maustaste gedrückt wird, und das ;tile nur in das frame mit dem wert 0 umgeändert wird. If MouseDown(2) Then scroll() map(mapx,mapy) = 0 End If ;S-Taste ;Die function zum speichern der map und der variabele tile If KeyHit(31) Then save() ;L-Taste ;Funktion zum laden der map und der veriable tile If KeyHit(38) Then load() ;malt den mauszeiger an den koordinaten mx und my, die ;vorher bereits den maus-ko. zugeteilt wurden DrawImage maus,mx,my ;flippen und wieder zum anfang der schleife Flip Forever Ich versteh nicht wie der mauszeiger hier ohne cls angezeigt wird. Wenn ich ohne cls nen mauszeiger habe, dann zeichnet der sich immer neu ohne die alte position zu löschen. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
du brauchst kein CLS wenn du den gesamten Bildschirm überzeichnest wie hier mit den Tiles.
CLS würde nur benötigt wenn der Bildschirm irgendwo leer wäre bzw. nix gezeichnet, denn CLS macht nichts anderes als genau das eigentlich zu übernehmen (indem es den Bildbereich den du siehst mit einer Farbe auffüllt) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ohne jetzt den ganzen Code angesehen zu haben:
CLS = Clear Screen, bedeutet, dass alles was vorher auf dem aktuellen Buffer gezeichnet wurde gelöscht wird. FLIP = Flip Bufers, ist Doublebuffering eingerichtet, wird erst alles auf dem hinteren Buffer geszeichnet und bei Aufruf dieses Befehls, werden beide Buffer getauscht und das Bild was vorher im hinteren Buffer wird nun auf dem Bildshirm angezeigt. Hoffe es konnte dir bei deinem Problem weiterhelfen. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
extra |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
vieln dank für die schnellen antworten...hab mir schon gedacht das es mit den Tiles zutun hat
Aber, wie löse ich dann folgendes: Ich hab z.B 2 Bilder. Ein bild wird durch Tastendruck auf einer bestimmten Position gezeichnet, das 2 wird bei tastendruck auf die selbe position gezeichnet.(also das bekomm ich noch hin) Aber wie stell ich das nun an, damit der mauszeiger angezeigt wird. Wenn das bild also nicht mit tiles voll ist, brauch ich cls. Wenn ich aber cls verwende, werden die bilder nicht angezeigt. falls jmd. meine ausführungen nicht versteht, kann ich gern mal ein bsp-code posten. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
die bilder werden immer angezeigt. Du musst sie nur jedes mal nach CLS und vor FLIP zeichnen. wenn du das nicht machst sind sie weg. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
extra |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also bei mir werden die bilder nicht angezeigt wenn ich in der schleife einbaue, das z.b bei keyhit ein bild kommen soll...es blinkt nur kurz auf
aber egal hab das problem jetz anders gelöst: bei einem tastendruck ruf ich eine funktion auf, in der funktion mach ich eine schleife, lade cursor und bilder noch mal....schleife endet wenn ich die andere taste drücke und man kommt wieder in die hauptschleife und dann kommt das andere bild....zwar umständlich ..aber gelöst |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
www.robsite.de
Dort die Anfänger Tutorials Dir fehlen, gemäss deiner Beschreibung, sehr viele sehr elementare Grundwissensbausteine um überhaupt ein Spiel schreiben zu können fürchte ich. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
extra |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Welche Aussagen meiner Beschreibung lassen dich zu der Annahme kommen das ich ein Spiel schreiben will?
Hab alles nochmal durchgelesen und finde nichts das dich zu solchen vermutungen berechtigt hätte. |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das liegt daran, das Keyhit nur in dem Schleifendurchlauf 1 ist, in dem du die Taste drückst.
Und wenn du etwas wie Code: [AUSKLAPPEN] If KeyHit(28) Then DrawImage bild,0,0,0
geschrieben hast, ist das dadurch auch ziemlich logisch ![]() erstelle am besten eine Variable, der du dann einen Wert zuweist. Dann fragst du diesen Wert ab, und malst dann erst das Bild. Vielleicht hab ich mich ein bisschen undeutlich ausgedrückt, aber ich hab ja noch einen Beispielcode auf lager Code: [AUSKLAPPEN] Graphics 800,600
SetBuffer BackBuffer() Bild=LoadImage("bild.bmp") malen=0 While Not KeyDown(1) If KeyHit(28);Enter-Taste If malen=1 Then malen=0 ElseIf malen=0 Then malen=1 EndIf EndIf Cls If malen=1 Then DrawImage Bild,0,0,0 Flip Wend |
||
Twitter
Download Jewel Snake! Windows|Android |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
extra hat Folgendes geschrieben: bei einem tastendruck ruf ich eine funktion auf, in der funktion mach ich eine schleife, lade cursor und bilder noch mal....schleife endet wenn ich die andere taste drücke und man kommt wieder in die hauptschleife und dann kommt das andere bild....zwar umständlich ..aber gelöst Nun sagen wir es anders: Die aussage zeigt auf jeden Fall recht deutlich das dir grundlegendes Wissen im Bereich der grafischen Programmierung mit einem Canvas fehlt. Weil sonst hättest du einfach eine Zustandsvariable dir dir sagt welches Bild zu zeichnen ist und die von den Tasten abhängt und dann entsprechend einfach das zugehörige Bild zeichnen ![]() Wie gesagt, am besten die grundlegenden Tutorials auf Robsite ma machen. Selbst wenn du kein Spiel machen willst, lernst du dabei viele der grundlegenden Dinge für die Programmierung einer Multimediaanwendung. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
extra |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
oh...stimmt...mit ner zustand variable gehts nun auch...ohne den umweg mit der schleife...danke
danke auch für den code tankbuster. werd mir noch ein paar rob-tutorials reinziehen. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group