Frage zu Source Code

Übersicht BlitzBasic Beginners-Corner

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

 

Bassmaster

Betreff: Frage zu Source Code

BeitragDo, Jan 24, 2008 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich gucke mir gerade das Scrollen von maps an.

Nur diesen Teil vom Source Code verstehe ich nicht wo ist da der Sinn das Programm funktioniert auch ohne diese Sachen. Würde das später irgendwelche Fehler oder Nachteile verursachen wenn ich das einfach rauslasse ?^^

Code: [AUSKLAPPEN]

;die variable xo wird solange aa > 0 ist erhöht      
xo = xo + 1

;wenn xo den wert 16 erreicht hat wird aa wieder auf 0 gesetzt und der kollisionsparameter
;py wird verändert, danach wird xo wieder auf 0 gesetzt

If xo = 16 Then aa = 0:py = py + 1:xo = 0





Hier ist der komplette Code


Code: [AUSKLAPPEN]

   Graphics 640,480,16,0
   ;setbuffer initialisieren
   SetBuffer BackBuffer()
   ;die benötigten variablen

   Global ppx = 10*32 ;X-Position des Charackters
   Global ppy = 7*32  ;Y-Position des Charackters
   
   Global py = 7      ;Kollisions X-Position des Charackters
   Global px = 10     ;Kollisions Y-Position des Charackters

   Global scrolly     ;Die Variable für die ScrollY-Position
   Global scrollx     ;Die Variable für die ScrollX-Position
   ;die benötigten bilder
   Global char    = LoadImage("char.bmp")
   Global Tileset = LoadAnimImage("tileset.bmp",32,32,0,6)
   ;die map-array
   Dim map(20,20)
;die Karte
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,4
Data 4,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,4
Data 4,0,0,0,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4

;einlesen und die zahlen der Tiles in der array speichern
For y = 0 To 20
For x = 0 To 20


   ;einlesen der werte aus der data map in die array
   Read map(x,y)
Next
Next


;start der hauptschleife
Repeat
;unnütze graficreste löschen
Cls

   ;esc-taste zum beenden abfragen
   If KeyDown(1) Then Exit

   ;die 20*20 tiles große map laden
For x = 0 To 20
For y = 0 To 20



   ;malt die karte an der positon x*32,y*32 und man kann die variablen scrollx und scrolly
   ;von außen manipulieren, um so scrolling zu erzeugen
   DrawBlock tileset,x*32-scrollx,y*32-scrolly,map(x,y)
Next
Next



;malt den charackter den du steuerst
DrawImage char,ppx-scrollx,ppy-scrolly




Text 0,0,py
Text 0,10,px
;_____________________Bewegungsrutinen für die einzelnen pfeil-tasten________________________________

      ;diese rutinen funcktionieren ganz einfach, solange aa größer 0 ist bleiben sie
      ;acktiv und es wird gescrollt
      ;pfeilrunter-taste
      If move = 1 Then
      ;wenn der wert aa größer 0 ist wird fortgesetzt
      If aa > 0    
      ;solange der wert aa größer 0 ist wird um 2 pixel weiter gescrollt
      scrolly = scrolly + 2
      ;die sichtbare figur wird bewegt
      ppy = ppy + 2
      ;die variable xo wird solange aa > 0 ist erhöht

      xo = xo + 1

      ;wenn xo den wert 16 erreicht hat wird aa wieder auf 0 gesetzt und der kollisionsparameter
      ;py wird verändert, danach wird xo wieder auf 0 gesetzt

      If xo = 16 Then aa = 0:py = py + 1:xo = 0
      End If
      End If
   
   ;pfeilhoch-taste
   If move = 2 Then
   If aa > 0
   scrolly = scrolly - 2
   ppy = ppy - 2
   xo = xo + 1
   If xo = 16 Then aa = 0:py = py - 1:xo = 0
   End If
   End If
   
   
;pfeillinks-taste
If move = 3 Then
If aa > 0
scrollx = scrollx - 2
ppx = ppx - 2
xo = xo + 1
If xo = 16 Then aa = 0:px = px - 1:xo = 0
End If
End If
;pfeilrechts-taste
If move = 4 Then
If aa > 0
scrollx = scrollx + 2
ppx = ppx + 2
xo = xo + 1
If xo = 16 Then aa = 0:px = px + 1:xo = 0
End If
End If



      ;rechs-taste
      If KeyDown(205) Then
      ;kollision checken, wie ihr es schon kennt
      If map(px+1,py) < 1 Then
      ;der nächste tastatur-eingabe-impuls wird möglich sobald aa weniger als 1 wert ist   
      ;das heißt in der zeit wo keine tastatur-eingabe erfolgen kann wird zur zeit gescrollt
      If aa < 1 Then
      ;die scrollrutine move = 4 wird aufgerufen
      move = 4
      ;aa nimmt den wert 1 an dadurch kann man erst wieder auf eine taste drücken, wenn
      ;aa < 1 wird
      aa = 1
      End If
      End If
      End If

;lings-taste
If KeyDown(203) Then
;kollision checken, wie ihr es schon kennt
If map(px-1,py) < 1 Then
If aa < 1 Then
move = 3
aa = 1
End If
End If
End If

;;;;;;;;;;;;;;;
Flip
Forever
;images wieder freigeben





FreeImage tileset
FreeImage char

;beenden
End

Eingeproggt

BeitragDo, Jan 24, 2008 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß jetzt nach kurzem drüberfliegen auch nicht, wozu man diese Stellen (und diese Variablen) braucht.
Aber danke, du hast mir gerade mit diesem Code den Appetit aufs Mittagessen verdorben. Wo hast du das Zeug her?
Tutorial?
Gib mir die EMail vom Verfasser, der gehört mal richtig zamgeschissen. (Sry für den Audruck)
Selber geschrieben?
Dann nimm dir folgende Dinge zu Herzen, die mich (und viele andere) an diesem Code stören:
Variablenbezeichnung: Null Sinn. Kein Mensch weiß, wofür diese Vars stehen.
Code einrücken: Man rückt den Code nicht nach Lust und laune ein, sondern man rückt sinngemäß zusammenhängende Blöcke ein (If-Endif, Repeat-Until, While-Wend, Function-End Function,...)
Rechtsschreibung: "Rutine", "funcktionieren", Groß/Kleinschreibung.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Bassmaster

BeitragDo, Jan 24, 2008 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.robsite.de/tutorials.php?tut=blitzbasic


RPG-Tutorial 5


Icq Nummer und email Adresse von dem Autor des Tutorials ^^

BlitzBasicUser@aol.com
ICQ: ( 130150217 )


In Tutorial 2 hat er sich für seine Rechtschreibfehler entschuldigt weil er angeblich unter Zeitdruck war aber das geile ist die anderen Tutorials sind auch voller Rechtschreibfehler aber naja egal man weiss ja was gemeint ist.

Man kann froh sein das leute sich die Zeit nehmen und solche Tutorials für anderen Kostenlos zur verfügung stellen.


Aber das war ja nicht das Thema ^^

PSY

BeitragDo, Jan 24, 2008 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
durch die variablen weiss er, ob der player einen kompletten schritt gemacht hat, d.h. auf einem neuen feld steht.

er scrollt 16x jeweils 2 pixel (felder sind 32x32 pixel)

sobald 16 mal gescrollt wurde, steht der player logischerweise auf einem neuen feld. klar fällt das optisch nicht auf, wenn du den code weglässt. er wird aber später für collisionsroutinen benötigt:

(nur ein Beispiel...checken ob Monster neben Player ist:)
Code: [AUSKLAPPEN]
if map(px+1,py+1)= monster  then gPlayerDead = TRUE


L8er,
PSY

(edit) willst nen boulderdash-clone schreiben? Wink
 

Bassmaster

BeitragDo, Jan 24, 2008 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne ich will kein boulderdash-clone schreiben ich weiss net mal was das ist^^

Ich will halt erst mal nur den Source Code verstehen und hinterher selber aufbauen können dann sehe wir mal weiter ^^


ty für die antwort
 

Bassmaster

BeitragDo, Jan 24, 2008 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab noch eine Frage woher soll denn eigentlich das Programm wissen ob move = 2 oder 1 ist Shocked

Und woher soll das Programm wissen ob aa > 0 ist O___o

BladeRunner

Moderator

BeitragDo, Jan 24, 2008 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Bassmaster, keine Doppelposts bitte oder ich muss schliessen. Du kannst den Edit-Button( user posted image) benutzen, wenn du etwas hinzuzfügen hast.

Danke.


Was deine Frage betrifft: irgendwann wird move ja festgelegt, entwerder in einer festen Zuweisung ( move = 1), oder aber als Berechnung (move = 2*alpha+xyz). Egal wie die Wertezuweisung zustandekommt, der letztmalig zugewiesene Wert ist der den das Programm benutzt.

Deine zweite Frage beantwortet sich genau so. Ist aa >0 wird das programm passend verzweigen.
Ich denke Du hast noch große Defizite was deinen Wissenstand um Variablen angeht.
http://de.wikipedia.org/wiki/V...mierung%29 - ist zwar nicht auf Blitz bezogen aber erklärt es schonmal.
 

Bassmaster

BeitragDo, Jan 24, 2008 18:09
Antworten mit Zitat
Benutzer-Profile anzeigen
jo sry wegen dem post.


stimmt move = 1 ganz unten irgendwo im source code steht das ich bin halt davon ausgeangen das alles oben deklariert wurde ...

thx


Also kann man bei Blitz Basic ein und der selben Variable mehrere Wert zu weissen ?

Ich kenn das halt nur von C++ da würde das halt nicht gehen.

Code: [AUSKLAPPEN]

#include <iostream>       // bibliotheks datei für die befehle
using namespace std;      // damit man nicht schreiben muss std::cout<<

int main()       

{

int a=1;               // deklarierte Variable

cout<<a;          // cout gibt die 1 aus

int a=2;

cout<<a;   // hier soll die 2 ausgeben werden aber geht ja net weil a = 1 ist

getchar();  //wartet auf eingabe vom user
}


da kommt dann die meldung a bereits deklariert.

Eingeproggt

BeitragFr, Jan 25, 2008 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Off-Topic:
Die Email-Adresse existiert nicht mehr. Ich hab meine Worte in taten umsetzen wollen und bekam vom Mail-Provider ne Error-Nachricht zurück. Naja, nachrennen werd ich dem Ersteller nicht für sein Tutorial. Was ich aber dazu noch sagen möchte: Ich finde dieses Tutorial schlechter als einige, die hier im Forum gepostet wurden und seh nicht ein, wie dieses Tut es auf die robsite geschafft hat...

On-Topic:
In Blitz ist es dasselbe wie in deinem C-Beispiel
Code: [AUSKLAPPEN]
Local a=1
Debuglog a
Local a=2
Debuglog a
WaitKey()
End

Probiers aus.. In Blitz endet es mit "Duplicate variable name".
Das heißt, du kannst natürlich NICHT einer Variable 2 Werte zuweisen.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

BladeRunner

Moderator

BeitragFr, Jan 25, 2008 9:49
Antworten mit Zitat
Benutzer-Profile anzeigen
natürlich kann man einer Variable mehrfach Werte zuordnen, sonst wäre es sehr mühsam zu programmieren.

Der Fehler den ihr macht ist dass ihr die Variable zwei mal zu deklarieren (sprich anzulegen) versucht. Das quittiert der Compiler natürlich mit einem Fehler.

Aber es ist kein Problem sowas zu machen

Code: [AUSKLAPPEN]
local a=1
print a
a=2
print a


oder in c:

Code: [AUSKLAPPEN]
int a=1;               // deklarierte Variable

cout<<a;          // cout gibt die 1 aus

a=2;

cout<<a;



Nochmal: Deklarieren geht nur einmal,
zuweisen beliebig oft (wenns nicht als ql:const ante deklariert wurde)
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

Eingeproggt

BeitragFr, Jan 25, 2008 10:02
Antworten mit Zitat
Benutzer-Profile anzeigen
So gesehen ja. Ich dachte, er will einer Variable gleichzeitig 2 Werte zuweisen Very Happy
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Bassmaster

BeitragFr, Jan 25, 2008 10:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Was genau ist an dem Tutorial so schlecht also mit der Rechtschreibung von dem Autor kann ich leben^^

Aber wie siehts mit dem Source Code aus ich will ja schließlich nicht "falsches" Programmieren lernen.

Eingeproggt

BeitragFr, Jan 25, 2008 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Also nochmal, was an dem Tutorial (aus meiner Sicht! Ich will jetzt nicht unbedingt darüber diskutieren) schlecht ist:

-) Die Variablenbezeichnungen sind schlecht gewählt.
Ich habs mir nochmal genau angesehen und großteils ist es eh ok, aber mit den Bezechnungen "xo" und "aa" fängt man nichts an.
Das zum Beispiel find ich gut:
Code: [AUSKLAPPEN]
Global scrolly     ;Die Variable für die ScrollY-Position

Und das ist schlecht:
Code: [AUSKLAPPEN]
;die variable xo wird solange aa > 0 ist erhöht
xo = xo + 1


Kein Wunder, dass du nicht wusstest, was diese variablen tun.

-) Der Code ist unübersichtlich.

Erstens sind die Einrückungen nicht sinnvoll gesetzt, sodass binnen kürzester Zeit die Frage kommt
"Warum sagt er mir 'Forever without Repeat'" (oder ähnliche Fehler).
Das sind einfach Paradebesipiele wie man sich selbst das Leben schwer macht. Rück den Code vernünftig ein und du siehst event. fehlende Kontrollbefehle (Endif, Wend, Next,...) sofort ohne Nachzudenken.

Außerdem werden Doppelpunkte verwendet. Macht funktional keinen großen UNterschied, aber macht den Code auch unübersichtlicher für den Coder.

Der letzte kleine Kritikpunkt:
Wie du wahrscheinlich weißt, muss man "Then" nicht unbedingt setzen, aber an sollte sich ein einheitliches Schema überlegen und dieses durchziehen. nicht so wie hier:
Code: [AUSKLAPPEN]
If move = 2 Then
   If aa > 0
   scrolly = scrolly - 2
  ....


So. Das wars von meiner Seite. Ich hoffe du verstehst meine Kritik. (und die anderen auch)

mfG, Christoph.

EDIT: Ich hab den Code für die Bewegung umgeschrieben, wie er mir besser gefällt. Dabei konnte ich mir die Variable aa übrigens schenken.
Code: [AUSKLAPPEN]
Select move
   ;Runter
   Case 1
      ;Spielerposition ändern
      scrolly = scrolly + 2
      ppy = ppy + 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         py = py + 1
         counter = 0
         move = 0
      EndIf
   ;Rauf
   Case 2
      ;Spielerposition ändern
      scrolly = scrolly - 2
      ppy = ppy - 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter=16 Then
         py = py - 1
         counter = 0
         move = 0
      EndIf
   ;Links
   Case 3
      ;Spielerposition ändern
      scrollx = scrollx - 2
      ppx = ppx - 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter=counter+1
      If counter = 16 Then
         px = px - 1
         counter = 0
         move = 0
      EndIf
   ;Rechts
   Case 4
      ;Spielerposition ändern
      scrollx = scrollx + 2
      ppx = ppx + 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         px = px + 1
         counter = 0
         move = 0
      EndIf
End Select

;Cursor Rechts
If KeyDown(205) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px+1,py) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=4 wird aufgerufen
         move = 4
      End If
   End If
End If

;Cursor Links
If KeyDown(203) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px-1,py) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=3 wird aufgerufen
         move = 3
      End If
   End If
End If

;Cursor Rauf
If KeyDown(200) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px,py-1) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=2 wird aufgerufen
         move = 2
      End If
   End If
End If

;Cursor Runter
If KeyDown(208) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px,py+1) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=1 wird aufgerufen
         move = 1
      End If
   End If
End If
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Bassmaster

BeitragDo, Jan 31, 2008 11:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx Eingeproggt für die antwort.

Ich hab da mal ein paar Sachen raugenommen da ich froh bin wenn meine Figur erst mal nur nach links und rechts laufen kann^^

Aber wieso kann ich jetzt nicht mit case 1 anfange O_o

Code: [AUSKLAPPEN]

Select move

   ;Links
   Case 1
      ;Spielerposition ändern
      scrollx = scrollx - 2
      ppx = ppx - 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter=counter+1
      If counter = 16 Then
         px = px - 1
         counter = 0
         move = 0
      EndIf


;Rechts
   Case 2
      ;Spielerposition ändern
      scrollx = scrollx + 2
      ppx = ppx + 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         px = px + 1
         counter = 0
         move = 0
      EndIf
End Select

;Cursor Rechts
If KeyDown(205) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px+1,py) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=4 wird aufgerufen
         move = 4
      End If
   End If
End If


;Cursor Links
If KeyDown(203) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px-1,py) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=3 wird aufgerufen
         move = 3
      End If
   End If
End If







Wenn ich es so mache dann geht es

Code: [AUSKLAPPEN]

Select move

   ;Links
   Case 3
      ;Spielerposition ändern
      scrollx = scrollx - 2
      ppx = ppx - 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter=counter+1
      If counter = 16 Then
         px = px - 1
         counter = 0
         move = 0
      EndIf


;Rechts
   Case 4
      ;Spielerposition ändern
      scrollx = scrollx + 2
      ppx = ppx + 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         px = px + 1
         counter = 0
         move = 0
      EndIf
End Select

;Cursor Rechts
If KeyDown(205) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px+1,py) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=4 wird aufgerufen
         move = 4
      End If
   End If
End If


;Cursor Links
If KeyDown(203) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px-1,py) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=3 wird aufgerufen
         move = 3
      End If
   End If
End If




und müsste nicht eigentlich noch irgendwas über dem Select move stehen o_O

Weil so geht das ja z.b. auch net

Code: [AUSKLAPPEN]

Global x
Input("Gib eine Zahl ein: ")


Select x

Case 1


x = 1
Print "test 1"


Case 2
x= 2
Print "test 2"


Default

Print "default"

End Select




Wenn dann muss man das ja so machen

Code: [AUSKLAPPEN]

x = Input("Gib eine Zahl ein: ")


Select x

Case 1

Print "test 1"


Case 2
Print "test 2"


Default
Print "default"

End Select


Eingeproggt

BeitragDo, Jan 31, 2008 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Teile meines Codes rausnehmen ist zwar nicht schlecht zum Anschauen, aber er ist nur als ganzes funktionsfähig.

Was ich nicht dazu gesagt habe und du anscheinend nicht auf die Schnelle erkannt hast:

Die Select-Variable "move" wird durch Tastendruck weiter unten festgelegt (KeyDown-Abfragen).

Die Sache mit input ist absolut nicht angebracht, weil wphl kaum jemand seine Figur mit Texteingabe steuern will.

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Bassmaster

BeitragDo, Jan 31, 2008 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja aber wieso geht es nicht wenn ich da case 1 hinschreibe o_O

Irgendeine Logik muss da doch hinterstecken


Code: [AUSKLAPPEN]

Select move


   ;Links
   Case 1
      ;Spielerposition ändern
      scrollx = scrollx - 2
      ppx = ppx - 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter=counter+1
      If counter = 16 Then
         px = px - 1
         counter = 0
         move = 0
      EndIf



;Rechts
   Case 2
      ;Spielerposition ändern
      scrollx = scrollx + 2
      ppx = ppx + 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         px = px + 1
         counter = 0
         move = 0
      EndIf
End Select

;Cursor Rechts
If KeyDown(205) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px+1,py) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=4 wird aufgerufen
         move = 4
      End If
   End If
End If


;Cursor Links
If KeyDown(203) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px-1,py) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=3 wird aufgerufen
         move = 3
      End If
   End If
End If

 

Bassmaster

BeitragDo, Jan 31, 2008 13:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahhh jetzt hab ichs so gehts :>

Code: [AUSKLAPPEN]

Select move
 
 ;links
   Case 1
      ;Spielerposition ändern
      scrollx = scrollx - 2
      ppx = ppx - 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter=counter+1
      If counter = 16 Then
         px = px - 1
         counter = 0
         move = 0
      EndIf
   
;Rechts
   Case 2
      ;Spielerposition ändern
      scrollx = scrollx + 2
      ppx = ppx + 2
      ;Variable, die zählt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         px = px + 1
         counter = 0
         move = 0
      EndIf
End Select

;Cursor Rechts
If KeyDown(205) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px+1,py) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=4 wird aufgerufen
         move = 2
      End If
   End If
End If

;Cursor Links
If KeyDown(203) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px-1,py) < 1 Then
      ;der nächste Tastatur-eingabe-impuls wird möglich sobald die vorige Bewegung abgeschlossen ist
      ;das heißt in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=3 wird aufgerufen
         move = 1
      End If
   End If
End If




D2006

Administrator

BeitragDo, Jan 31, 2008 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Das trifft sich gut, wo der Thread durch deinen erneuten Doppelpost eh geschlossen werden muss.

~GESCHLOSSEN~
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group