Le Puzz

Programmation avancée de jeux en PureBasic
CameleonTH
Messages : 333
Inscription : sam. 25/juin/2005 11:18
Localisation : Laon (02)
Contact :

Le Puzz

Message par CameleonTH »

Voila un petit jeux (a améliorer bien sure) dans lequel on deplace le point jaune grace au fléches directionnelle du clavier, le principe c'est de faire en sorte que toutes les cases deviennent rouges, 5 maps sont disponible.

Le concept je l'ai copier d'un mini-jeux du jeux Fable: The Lost Chapters.
Sa m'a pris 30min pour créer se petit simpatique mais gonflant :D.

Code : Tout sélectionner

InitSprite()
InitKeyboard()
InitSound()

Enumeration
  #window
  #move
  #win
  #lose
  #up
  #down
  #player
EndEnumeration

Dim map(5,5)

Global playerx
Global playery
Global nmap

playerx=1
playery=5
  
Procedure nextmap()
  ;PlaySound(#win)
  nmap=nmap+1 
  Debug nmap
  Select nmap
    Case 1
      Restore map1 
    Case 2
      Restore map2
    Case 3
      Restore map3
    Case 4
      Restore map4
    Case 5
      Restore map5 
    Case 6
      ;PlaySound(#lose) 
      MessageRequester("Terminée","Désoler c la fin de cette petite demonstration de mon nouveau jeu trés basique")
      End
  EndSelect 
  
  For i=1 To 5
    For k=1 To 5
      Read a
      If a=1
        DisplayTransparentSprite(#up,128*(k-1),128*(i-1))
      Else
        DisplayTransparentSprite(#down,128*(k-1),128*(i-1))
      EndIf
      map(i,k)=a
    Next
  Next
  playerx=1
  playery=5
EndProcedure

Procedure verif()
  If map(playery,playerx)=1
    map(playery,playerx)=0
  Else
    map(playery,playerx)=1
  EndIf 
  test=0
  For i=1 To 5
    For k=1 To 5
      a=map(i,k)
      test = test+a
    Next
  Next
  
  If test=25
    nextmap()
    Debug "Next map"
  EndIf
  If test=0
    ;tryagain()
    Debug "tryagain"
  EndIf
  
EndProcedure

OpenWindow(#window,100,100,640,640,#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget,"Le Puzz 0.1 Grosse Beta Par CameleonTH")
OpenWindowedScreen(WindowID(#window),0,0,640,640,1,1,1)

;LoadSound(#move,"sounds\explode.wav")
;LoadSound(#win,"sounds\applause.wav")
;LoadSound(#lose,"sounds\laugh.wav")

CreateSprite(#up,128,128)
CreateSprite(#down,128,128)
CreateSprite(#player,128,128)

StartDrawing(SpriteOutput(#up))
Box(0,0,218,218,RGB(0,255,0))
Circle(64,64,64,RGB(255,0,0))
StopDrawing()

StartDrawing(SpriteOutput(#down))
Box(0,0,218,218,RGB(0,255,0))
Circle(64,64,64,RGB(0,0,255))
StopDrawing()

StartDrawing(SpriteOutput(#player))
Box(0,0,218,218,RGB(0,255,0))
Circle(64,64,32,RGB(255,255,0))
StopDrawing()


TransparentSpriteColor(#up,0,255,0)
TransparentSpriteColor(#down,0,255,0)
TransparentSpriteColor(#player,0,255,0)

nextmap()


DisplayTransparentSprite(#player,128*playerx,128*playery)

  
Repeat 
   
  event=WindowEvent()
  
  Select event
    Case #PB_Event_CloseWindow
      quit=1
  EndSelect
  
  ExamineKeyboard()
  
  If KeyboardReleased(#PB_Key_Escape)  
    quit=1
  EndIf
   
  If KeyboardReleased(#PB_Key_Up)  
    If playery>1
      playery = playery-1
      ;PlaySound(#move) 
      verif()
    EndIf
  EndIf
  
  If KeyboardReleased(#PB_Key_Down)  
    If playery<5
      playery = playery+1
      ;PlaySound(#move) 
      verif()
    EndIf
  EndIf
  
  If KeyboardReleased(#PB_Key_Left)  
    If playerx>1
      playerx = playerx-1
      ;PlaySound(#move) 
      verif()
    EndIf
  EndIf
  
  If KeyboardReleased(#PB_Key_Right)  
    If playerx<5
      playerx = playerx+1
      ;PlaySound(#move)  
      verif()
    EndIf  
  EndIf
  
   
  For i=1 To 5
    For k=1 To 5
      a=map(i,k)
      If a=1
        DisplayTransparentSprite(#up,128*(k-1),128*(i-1))
      Else
        DisplayTransparentSprite(#down,128*(k-1),128*(i-1))
      EndIf 
    Next
  Next
  
  
  DisplayTransparentSprite(#player,128*(playerx-1),128*(playery-1))
  
  FlipBuffers()
  ClearScreen(0,0,0)
  
Until quit=1


;-----------------------------
;--------- Map Data ----------
;-----------------------------

DataSection

map1:
Data.l 1,1,1,1,1
Data.l 1,1,1,1,0
Data.l 1,1,1,0,0
Data.l 1,0,0,0,0
Data.l 0,0,0,0,0

map2:
Data.l 0,0,0,1,1
Data.l 1,1,1,0,1
Data.l 1,1,1,0,1
Data.l 1,0,0,0,1
Data.l 0,1,0,1,1

map3:
Data.l 1,0,1,1,1
Data.l 1,0,0,1,0
Data.l 1,1,0,0,0
Data.l 1,1,1,0,0
Data.l 0,0,0,0,0

map4:
Data.l 0,0,0,0,0
Data.l 1,1,1,1,1
Data.l 0,0,0,0,0
Data.l 1,1,1,1,1
Data.l 0,0,0,0,0

map5:
Data.l 1,0,1,0,1
Data.l 0,1,0,1,0
Data.l 1,0,1,0,1
Data.l 0,1,0,1,0
Data.l 1,0,1,0,1


EndDataSection
  
Anonyme

Message par Anonyme »

C'est sympathique ^^ , cepandant, je le trouve facile une fois que l'on à chopé le coup.

@++
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message par Pierre »

+1 :-)
Image
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

super ! ce petit jeux ! :D
je trouve que l'idée est tres bonne ! :D
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Très bien. :)
Manque plus que des sprites et du son, un éditeur pour faire ses niveaux, un mode 'Normal', (celui qui existe), un mode 'Contre la montre' ou on essayerait de résoudre un tableau dans un temps imparti pour accéder à un/des niveau(x) caché(s)...

Qui a dit "Il délire..."? :roll:

@gadget35 : voilà un jeu qui est fonctionnel et interessant. :roll:
CameleonTH
Messages : 333
Inscription : sam. 25/juin/2005 11:18
Localisation : Laon (02)
Contact :

Message par CameleonTH »

Bah il y a des son que l'on peut activer, ils sont mis en commentaires et ils faut les son aussi mais on peut en prendre d'autre voila c tous.
Répondre