PacMan ^^

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

danny666

Betreff: PacMan ^^

BeitragDi, Nov 09, 2004 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich versuche mich gerade, PacMan zu coden. Brauche aber etwas Hilfe. Hier mal mein bisheriger Code:

Code: [AUSKLAPPEN]

Graphics 640,480,16,0
SetBuffer BackBuffer()
;Graphik-Modus
u=LoadAnimImage("pacupeat.png",22,22,0,3):MaskImage u,255,255,255
d=LoadAnimImage("pacdowneat.png",22,22,0,3):MaskImage d,255,255,255
l=LoadAnimImage("paclefteat.png",22,22,0,3):MaskImage l,255,255,255
r=LoadAnimImage("pacrighteat.png",22,22,0,3):MaskImage r,255,255,255
f=LoadImage("banana.png"):MaskImage f,255,255,255
feld=LoadAnimImage("feld.png",24,24,0,2):MaskImage feld,255,255,255
;lädt die Animationen
Const tile_width=24
Const tile_heigth=24
Const num_x_tile=25
Const num_y_tile=19
;Größe der Fliesen, Gesamtzahl der Fliesen auf dem Bildschirm
DrawImage feld,24*1,24*1,0
DrawImage feld,24*1,24*2,0
DrawImage feld,24*1,24*3,0
DrawImage feld,24*1,24*4,0
DrawImage feld,24*1,24*5,0
DrawImage feld,24*1,24*6,0
DrawImage feld,24*1,24*7,0
DrawImage feld,24*1,24*8,0
DrawImage feld,24*1,24*9,0
DrawImage feld,24*1,24*10,0
DrawImage feld,24*1,24*11,0
Flip
WaitMouse


Aber die ganzen Felder auf diese Weise zu machen erscheint mir sehr zeitaufwendig...da kann man doch bestimmt was mit Dim und For machen, oder? Ich blick die beiden Begriffe net, sonst würd ich es selber machen. Natürlich sind auch Verbesserungsvorschläge erwünscht Wink Wenn ihr noch die Grafik-Dateien wollt, gebt mir eure Mailaddy, dann schick ich sie euch.
Hilfe wäre sehr nett.
mfg
danny[666]
PS: Tut mir den Gefallen und steckt euch Kommentare wie "wenn du das nich weißt, kannst du es gleich lassen" sonst wo hin.
Live your dream, forget your life!
 

Timo

BeitragDi, Nov 09, 2004 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
mit einer for next schleife kannst du die Quellcodepassage zwischen den beiden Begriffen mehrmals wiederholen, hier 11 mal (.... = 1 to 11)
die Variable schleifenzaehler zählt dabei mit. am anfang ist sie eins, das zweite mal ist sie 2 und zum schluss 11.


Code: [AUSKLAPPEN]

Graphics 640,480,16,0
SetBuffer BackBuffer()
;Graphik-Modus
u=LoadAnimImage("pacupeat.png",22,22,0,3):MaskImage u,255,255,255
d=LoadAnimImage("pacdowneat.png",22,22,0,3):MaskImage d,255,255,255
l=LoadAnimImage("paclefteat.png",22,22,0,3):MaskImage l,255,255,255
r=LoadAnimImage("pacrighteat.png",22,22,0,3):MaskImage r,255,255,255
f=LoadImage("banana.png"):MaskImage f,255,255,255
feld=LoadAnimImage("feld.png",24,24,0,2):MaskImage feld,255,255,255
;lädt die Animationen
Const tile_width=24
Const tile_heigth=24
Const num_x_tile=25
Const num_y_tile=19
;Größe der Fliesen, Gesamtzahl der Fliesen auf dem Bildschirm
DrawImage feld,24*1,24*1,0
For schleifenzaehler = 1 to 11
  DrawImage feld,24*1,24*schleifenzaehler,0
next
Flip
WaitMouse
 

ke^kx

BeitragDi, Nov 09, 2004 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du ein PacMan-Spiel proggen willst würde ich an deiner stelle mit Dim arbeiten. Es gibt 'ne Menge Tutorials darüber, ist eigentlich nicht so schwer.

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM

joachim_neu

BeitragDi, Nov 09, 2004 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
jo, auf jeden fall mit dims arbeiten! zumindest bei den punkte, die es gilt aufzufressen, denn mit "punkt1, punkt2, ..." wird das ein bisschen viel!
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de
 

Another progger

BeitragDi, Nov 09, 2004 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,ich hab grad auch n pacman spiel programmiert.wenn du willst schick ich dir den ordner per e-mail.
Hier der quelltext:


Code: [AUSKLAPPEN]

life=5
Graphics 800,600,16,1
SetBuffer BackBuffer()
SeedRnd MilliSecs()
Dim level$(17,24)
Dim flevel$(17,24)
datei=ReadFile("level.txt")
SeedRnd MilliSecs()
;;
Dim feind(5,2)
Dim baba(5)
;;

wahl=0
but=LoadImage("but.bmp")
For zeile=0 To 17
 A$=ReadLine(datei)
 For spalte=0 To 24
  level(zeile,spalte)=Mid(a$,spalte+1,1)
 Next
Next

frame=1
wand=LoadImage("wand.bmp")
mann=LoadAnimImage("mann.bmp",32,32,0,4)
weg=LoadImage("weg.bmp")
geg=LoadImage("gegner.bmp")
datei=ReadFile("flevel.txt")


For zeile=0 To 17
 A$=ReadLine(datei)
 For spalte=0 To 24
  flevel(zeile,spalte)=Mid(a$,spalte+1,1)
 Next
Next


For n=0 To 5
baba(I)=MilliSecs()
Next






;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;
Repeat

Cls
For zeile=0 To 17
 For spalte=0 To 24
  Select level$(zeile,spalte)
   Case " " DrawImage weg,spalte*32,zeile*32
   Case "1" DrawImage wand,spalte*32,zeile*32
   Case "g" DrawImage but,spalte*32,zeile*32
   Case "s" DrawImage but,spalte*32,zeile*32  DrawImage mann,spalte*32,zeile*32,frame x=zeile y=spalte
  End Select
 Next
Next


For zeile=0 To 17
 For spalte=0 To 24
  Select flevel$(zeile,spalte)
    Case "f" DrawImage weg,spalte*32,zeile*32 DrawImage geg,spalte*32,zeile*32 feind(d,1)=zeile feind(d,2)=spalte d=d+1
    End Select
 Next
Next
d=0


If pause+90<MilliSecs()
If KeyDown(200) And level(x-1,y)<>"1"
 If level(x-1,y)=" " punkte=punkte+1
 level(x,y)="g"  level(x-1,y)="s"
 x=x-1
 pause=MilliSecs()
 frame=3
EndIf
EndIf


If pause+90<MilliSecs()

If KeyDown(208) And level(x+1,y)<>"1"
 If level(x+1,y)=" " punkte=punkte+1

 level(x,y)="g"  level(x+1,y)="s"
 x=x+1
 pause=MilliSecs()
 frame=2
EndIf
EndIf

If pause+90<MilliSecs()

If KeyDown(203) And level(x,y-1)<>"1"
 If level(x,y-1)=" " punkte=punkte+1
 level(x,y)="g" 
 level(x,y-1)="s"
y=y-1
pause=MilliSecs()
frame=0
EndIf
EndIf


If pause+90<MilliSecs()

If KeyDown(205) And level(x,y+1)<>"1"
 If level(x,y+1)=" " punkte=punkte+1
 level(x,y)="g"
 level(x,y+1)="s"
y=y+1
pause=MilliSecs()
frame=1
EndIf
EndIf
 


;gegner intelligent


For I=0 To 5






If flevel$(feind(I,1),feind(I,2)-1)<>"1"  wah=wah+1


If flevel$(feind(I,1),feind(I,2)+1)<>"1"  wah=wah+1


If flevel$(feind(I,1)+1,feind(I,2))<>"1"  wah=wah+1


If flevel$(feind(I,1)-1,feind(I,2))<>"1"  wah=wah+1
If (wah > 2) Or feind(I,0)=0   feind(I,0)=Rand(4)

wah=0

If baba(I)+100<MilliSecs()

Select feind(I,0)


Case 1   
 If flevel$(feind(I,1),feind(I,2)-1)<>"1"
 flevel$(feind(I,1),feind(I,2))=" "
 feind(I,2)=feind(I,2)-1
 flevel$(feind(I,1),feind(I,2))="f"
 baba(I)=MilliSecs()
Else feind(I,0)=0
EndIf   

Case 2 
 If flevel$(feind(I,1),feind(I,2)+1)<>"1"
  flevel$(feind(I,1),feind(I,2))=" "
  feind(I,2)=feind(I,2)+1
  flevel$(feind(I,1),feind(I,2))="f"
 baba(I)=MilliSecs()
 
Else feind(I,0)=0
 
 EndIf   

 
Case 3
 If flevel$(feind(I,1)+1,feind(I,2))<>"1"
  flevel$(feind(I,1),feind(I,2))=" "
  feind(I,1)= feind(I,1)+1
  flevel$(feind(I,1),feind(I,2))="f"
 baba(I)=MilliSecs()

  Else feind(I,0)=0
 EndIf
   



Case 4
 If flevel$(feind(I,1)-1,feind(I,2))<>"1"
  flevel$(feind(I,1),feind(I,2))=" "
 feind(I,1)=feind(I,1)-1
 flevel$(feind(I,1),feind(I,2))="f"
 baba(I)=MilliSecs()

 Else feind(I,0)=0
 EndIf   

End Select

EndIf




Next
If punkte=208 Goto ending


For p=0 To 5

If feind(p,1)=x And feind(p,2)=y Then
 life=life-1
 Cls
 Text 0,0,"Ein leben ist weg"
 Flip
 Delay 1500
 

EndIf

Next



If life=0
Cls
Text 0,0,"Loser..."
 Flip
 FlushKeys
WaitKey
End
EndIf
 
Flip
Until KeyDown(1)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,



Cls
Text 0,0,"Punkte:"+punkte
Flip
FlushKeys
WaitKey

End   

.ending
ClsColor 127,0,0 
Cls
Text 0,0,"Level geschafft"
Flip
FlushKeys
WaitKey 
End
[/code]

eXceptION

BeitragDi, Nov 09, 2004 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
er kann das genau so gut mit strings machen... dim ein array mit strings, anzahl gleich anzahl von tiles vertical...
Norweger...

Spreche aber verdammt gut 8086

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group