Hilfe bei Spieleprogramierung

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Marvin133
Beiträge: 80
Registriert: 25.01.2010 15:51
Computerausstattung: Win 7 Home Premium 64 Bit \ PB 4.41 Demo\2.8Ghz QuadCore \4GB RAM\ nVidia GTS 250
Kontaktdaten:

Hilfe bei Spieleprogramierung

Beitrag 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                              
Win 7 Home Premium 64 Bit \ PB 4.41 Demo\2.8Ghz QuadCore \4GB RAM\ nVidia GTS 250

Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Hilfe bei Spieleprogramierung

Beitrag 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...
Win11 x64 | PB 6.20
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Hilfe bei Spieleprogramierung

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Marvin133
Beiträge: 80
Registriert: 25.01.2010 15:51
Computerausstattung: Win 7 Home Premium 64 Bit \ PB 4.41 Demo\2.8Ghz QuadCore \4GB RAM\ nVidia GTS 250
Kontaktdaten:

Re: Hilfe bei Spieleprogramierung

Beitrag 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?
Win 7 Home Premium 64 Bit \ PB 4.41 Demo\2.8Ghz QuadCore \4GB RAM\ nVidia GTS 250

Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Hilfe bei Spieleprogramierung

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Marvin133
Beiträge: 80
Registriert: 25.01.2010 15:51
Computerausstattung: Win 7 Home Premium 64 Bit \ PB 4.41 Demo\2.8Ghz QuadCore \4GB RAM\ nVidia GTS 250
Kontaktdaten:

Re: Hilfe bei Spieleprogramierung

Beitrag von Marvin133 »

Win 7 Home Premium 64 Bit \ PB 4.41 Demo\2.8Ghz QuadCore \4GB RAM\ nVidia GTS 250

Bild
Antworten