Seite 1 von 1

Hilfe bei Spieleprogramierung

Verfasst: 25.01.2010 15:57
von Marvin133
Guten Tag zusammen!
Ich bin neu hier und ich habe vor ca. 3 Tagen die Sprache PureBasics gesehn und es hat in mir die interesse geweckt diese zulerne.Sofort habe ich im i-net ein paar befehle und struckturen aufgeschnappt und angefangen ein pacman-clone zu Proggen.Icch kann ihn bisjetzt in alle richtungen bewegen und auch sound ausgeben nur ich frage mich wenn ich ein sprite als Punkt ausgebe und dann mit dem pacman darüber bewege wie krieg ich den dann weg?ich habe mir schon mal ein paar gedanken gemacht mit den koordinaten und was anderes dahin zu zeichenn aber wie sage ich das dann das punkte konto um eins erhöht wird,ohne das wenn man darüber fährt nco hein punkt ensteht?was ich ncoh anmerken wolte das ich nur die demo zur verfügung habe da ich erst einmal den einsteig finden wollte und da mir die vollversion zu vielkostet da ich ja erst 14 jahre alt bin.

Code: Alles auswählen

InitSound()
InitSprite()  
                                                   
If InitKeyboard()=0                                               
   MessageRequester("Fehler","Konnte dx nicht finden",0)          
EndIf                                                           

If OpenScreen(800,600,32,"Vollbild") = 0                          
   MessageRequester("Fehler","Konnte kein Vollbild erstellen ",0)  
EndIf
                                                             
LoadSound(0,"Data\sound\move.wav",0)
LoadSprite(0,"Data\grafik\pacman1.bmp",0)                               
LoadSprite(1,"Data\grafik\pacman2.bmp",0)
LoadSprite(2,"Data\grafik\pacman3.bmp",0)
LoadSprite(3,"Data\grafik\pacman4.bmp",0)
LoadSprite(4,"Data\grafik\wall1.bmp",0)
LoadSprite(5,"Data\grafik\point.bmp",0)
LoadSprite(6,"Data\grafik\pointdelete.bmp",0)

a=0
b=100
f=10
g=10
h=100
l=10
x=100
y=100

Repeat                                                  
  ExamineKeyboard()
  FlipBuffers()                                         
  DisplaySprite(4,0,0)
  DisplayTransparentSprite(a,x,y)                             
  TransparentSpriteColor(0,RGB($0,$0,$0))
   
;------------------rechts---------------- 
 
   If KeyboardPushed(#PB_Key_Right)
      x=x+10
      a=0
      DisplayTransparentSprite(a,x,y)
      
   Else
   If x>=800
      x=1
   EndIf
   EndIf
;-----------------links------------------                     
  If KeyboardPushed(#PB_Key_Left)
     x=x-10
     a=1
     DisplayTransparentSprite(a,x,y)
     
  Else
  If x>=800
     x=0
  EndIf
  EndIf 
;----------------hoch--------------------  
  If KeyboardPushed(#PB_Key_Up)
     y=y-10
     a=2
     DisplayTransparentSprite(a,x,y)
     
   Else
   If y>=600
      y=0
   EndIf
   EndIf
;-----------------runter-----------------   
   If KeyboardPushed(#PB_Key_Down)
     y=y+10
     a=3
     DisplayTransparentSprite(a,x,y)
     
   Else
   If y>=600
      y=0
   EndIf
   EndIf 
  If KeyboardPushed(#PB_Key_Escape)                     
    End                                                 
  EndIf                                                
ForEver                              

Re: Hilfe bei Spieleprogramierung

Verfasst: 25.01.2010 16:03
von Andesdaf
erstmal willkommen!

nur allgemein:
wenn du code postest und du brauchst grafiken dazu, ist es schlecht,
den Code zu testen denn die Grafiken sind hier ja nicht dabei.

Du könntest alles mit Bildchen etc. in eine ZIP packen. Das geht
zum Code testen einfacher.

Für deine konkrete Frage wird es nicht weiter helfen, aber für die
Zukunft kannst du dir es ja merken, das wird garantiert nicht deine
letzte Frage hier :wink:

So, und jetzt geb ich ab an die Spezialisten auf dem Gebiet...

Re: Hilfe bei Spieleprogramierung

Verfasst: 25.01.2010 16:12
von Kaeru Gaman
Hi und Willkommen an Board!

Du solltest Steuerung und Darstellung trennen.
dir fällt vielleicht auf, dass der Display-Befehl immer gleich aussieht,
also kannst du ihn auch außerhalb der Ifs hinschreiben und brauchst ihn nur ein mal.

und dann kannst du auch die anderen Display-Befehle drum herum schreiben.

auf einem screen wird immer alles komplett neu dargestellt.
du beginnst mit deinem Hintergrundbild, deswegen läßt du ja das ClearScreen() weg.
alles was du danach darstellst, wird da drüber "gezeichnet", was nicht da sein soll, läßt du einfach weg.

dafür brauchst du natürlich irgendwie eine Tabelle, wo drinsteht, wo ein Punkt ist und wo nicht.
außerdem wäre es vielleicht ganz praktisch, auch die Wände da rein zu setzen,
damit du checken kannst, ob der pac in die richtung gehen kann oder nicht.
so eine Tabelle nennt man dann "Tile-Map", das einzelne Feld "Tile" (Kachel) und dieRoutine um es darzustellen "Tile-Engine".

und für die Score machst du auch einfach eine Variable, so wie du für x, y und a hast.
jedesmal wenn pac einen punkt frißt, zählst du die hoch.

PS:
und wie Andesdaf schon sagte, generell wenn Content nachgeladen wird, den auch zur Verfügung stellen.
weder haben wir die Zeit, erstmal zig sprites zu basteln, noch ausreichend informationen, wie die eigentlich aussehen sollten.
in dem Fall ist es jetzt kein Beinbruch, weil dein code noch sehr übersichtlich ist, aber nur ein bißchen mehr und es ist nicht mehr nachvollziehbar.

Re: Hilfe bei Spieleprogramierung

Verfasst: 25.01.2010 17:02
von Marvin133
ja aber wie checke cih ob pacman über einen punkt rübersaust?
das mit dem score habe ich mir acuh schon überlegt nur wie definiere ich die wände dass er da nicht durchgehen soll?

kann man denn die steuerrung ncoh vereinfachen um weniger code schreiben zu müssen?
wie lade ich denn ne zip datei hier hoch?

kann man das so machen das man das spielfeld in ganz viel kleine 4 ecke aufteilt und dann jedem 4eck ein wert zuweist wie 1 ,welches dann für den scorepunkt stehen soll und wenn pacman sich darüber bewegt das dann der wert auf 0 gesetzt wird,während gleichzeitig die scorevariable und dann das mit enm leeren sprite übermalen würde das da grafisch kein punkt wäre.Würdedass dann kein punkt mehr giben falls man nochmal sich darüber bewegt?

Re: Hilfe bei Spieleprogramierung

Verfasst: 25.01.2010 18:34
von Kaeru Gaman
1? - Tileengine
2? - Tileengine

3? - wus? du hast doch schon "einfachen" code. btw, da fällt mir auf dass dein randcheck fehlerhaft ist, und der sollte auch nicht in ein Else.
4? - woanders hochladen, hier verlinken.

5? - das ist eine Tileengine, hast du gut beschrieben.

Re: Hilfe bei Spieleprogramierung

Verfasst: 25.01.2010 20:14
von Marvin133