Fallende Steine

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

bruce85

Betreff: Fallende Steine

BeitragFr, Nov 24, 2006 1:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich hab mal in Blitz Basic ein kleines beispiel geproggt indem die steine runterfallen wenn man auf ein Stein klickt, wenn man die Rechte Maustaste klickt, kann man dort wieder ein neuer Stein Plazieren.
Ich habe das mit Arrays und Types gemacht, hier mal der Code:

Code: [AUSKLAPPEN]
Graphics 338,338
SetBuffer BackBuffer()

;Map erstellen
Dim Spielfeld(9,9)

;aktuelle Map setzen
Restore Map_Data
;Map lesen
For y=0 To 9
  For x=0 To 9
    Read Spielfeld(x,y)
  Next
Next

;Feld X und Y definieren
Global Feld_x,Feld_y

Global s.stein
;Type für die steine
Type stein
  Field stein_x
  Field stein_y
  Field stein_x_speed
  Field stein_y_temp#
  Field stein_faellt
  Field stein_loeschen
End Type

;Den Zufallsgenerator aktivieren
SeedRnd MilliSecs()

;################ Hauptschleife ################
Repeat
  Cls
  DrawMap()
  DrawStein()
  ;Mit der rechten Maustaste kann man an dieser Position wieder ein Stein
  ;hin plazieren
  If Spielfeld(Feld_x,Feld_y) = 2 Then
    If MouseDown(2) And MouseHit(2) Then
      Spielfeld(Feld_x,Feld_y) = 1
    EndIf
  EndIf
  Flip
Until KeyHit(1)

End

;################ Map Zeichnen ################
Function DrawMap()
  For y=0 To 9
    For x=0 To 9
      map = Spielfeld(x,y)
      Color 255,255,255
      If map <> 0 Then Rect x*34,y*34,32,32,0
      Color 128,0,0
      If map = 1 Then Rect x*34+1,y*34+1,30,30,1
    Next
  Next
  ;berechnung auf welches Feld die Maus sich gerade befindet
  If MouseX()/34 < 10 And MouseX()/34 >= 0 Then Feld_x = MouseX()/34
  If MouseY()/34 < 10 And MouseY()/34 >= 0 Then Feld_y = MouseY()/34
End Function

;################ Alle Steine abfragen, Zeichnen u.s.w. ################
Function DrawStein()
  ;Wenn in der Data Feld eine 1 besteht wo man
  ;gerade mit der Maus drauf ist, dann kann das ausgeführt werden
  If Spielfeld(Feld_x,Feld_y) = 1 Then
    If MouseDown(1) Then
      ;Das Feld entsprechend eine andere Zahl zuweisen damit der Stein verschwindet
      Spielfeld(Feld_x,Feld_y) = 2
      ;An dieser Position ein neuer stein erstellen
      s.stein = New stein
      s\stein_x = Feld_x*34
      s\stein_y = Feld_y*34
      s\stein_x_speed# = Rnd(-3,3)
      ;s\stein_y_temp# = 5 damit der stein nicht zu hoch springt
      s\stein_y_temp# = 5
      ;anschließend s\stein_faellt auf true schalten
      s\stein_faellt = True
    EndIf
  EndIf
  For s.stein = Each stein
    ;Stein zeichnen
    Rect s\stein_x,s\stein_y,32,32,1
    ;Wenn dieser stein auf True ist, wird das hier ausgeführt
    If s\stein_faellt = True Then
      ;s\stein_y_temp# Variable verringern
      s\stein_y_temp# = s\stein_y_temp# - .30
      ;s\stein_y durch s\stein_y_temp# veringern
      s\stein_y = s\stein_y - s\stein_y_temp#
      ;anschließend den stein noch dazu nach links oder nach rechts bewegen,
      ;da wir oben eine Zufallszahl -3,3 erzeugt haben, wird der stein
      ;automatisch in verschiedene richtung bewegt, also -x oder +x
      s\stein_x = s\stein_x - s\stein_x_speed
      If s\stein_y > 350 Then s\stein_loeschen = 1
    EndIf
    If s\stein_loeschen = 1 Then
      Delete s.stein
    EndIf
  Next
End Function

;Die Daten für das Feld
.Map_Data
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1


Ich hoffe das ist verständlich geschrieben Very Happy

MFG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Black Spider

BeitragFr, Nov 24, 2006 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
erinnert mich an das alte Zelda für Gameboy-da kamen dir die Fliesen auch immer so entgegen,
aber schick; auch gut kommentiert.
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif
 

snörkl

BeitragFr, Nov 24, 2006 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
irgendwie sinnlos^^- ist aber witzig
 

bruce85

BeitragFr, Nov 24, 2006 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke,
ich habs halt mal hier reingepostet für die die noch net soviel ahnung mit BB haben um sowas halt mal zu zeigen Very Happy

MFG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group