PoussPouss

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

PoussPouss

Message par SPH »

Hi all :!:

voici un jeu que j'avais codé sur amiga. Je l'ai recréé sur PC :

http://xmas.free.fr/Pousspouss.zip

Code : Tout sélectionner

; PB 5.70LTS x86
;
; Code : SPH
; Codé le 1 mai 2020
; (c)2020
; 
; Mon score : 1419 secondes pour tout finir =)


If InitSprite() = 0
  MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0)
  End
EndIf
If InitMouse() = 0
  MessageRequester("Erreur", "Impossible d'activer la souris !", 0)
  End
EndIf
If InitKeyboard() = 0
  MessageRequester("Erreur", "Impossible d'activer le clavier !", 0)
  End
EndIf

LoadFont(1000, "Arial", 18)
LoadFont(1001, "Arial", 30)


OpenWindow(0, 0, 0, 1024, 768, "PoussPouss", #PB_Window_ScreenCentered)

OpenWindowedScreen(WindowID(0), 0, 0, 1024, 768)

LoadSprite(0,"bmp/pointeur.bmp")
LoadSprite(1,"bmp/pilone.bmp")
LoadSprite(2,"bmp/mur.bmp")
LoadSprite(3,"bmp/trou.bmp")
LoadSprite(4,"bmp/vide.bmp")

For i=100 To 208
  LoadSprite(i,"bmp/"+Str(i)+".bmp")
Next
;;;
Dim n(108)
For i=0 To 108
  n(i)=i+100
Next
For i=1 To 2000
  Swap n(Random(108)),n(Random(108))
Next

x=0
nb=0
Dim p(15,11)
For u=0 To 11
  For i=0 To 15
    p(i,u)=n(x) : nb+1
    If nb>8
      nb=0
      x+1
    EndIf
  Next
Next
For i=4 To 12
  p(i,11)=2
Next
p(13,11)=1
p(14,11)=1
p(15,11)=3
;;;
For i=1 To 2000
  Swap p(Random(15),Random(11)),p(Random(15),Random(11))
Next

Dim x(1)
Dim y(1)

ClearScreen(RGB(0,15,26))
DisplaySprite(1,350,390)
DisplaySprite(2,350,470)
StartDrawing(ScreenOutput())
DrawingFont(FontID(1001))
BackColor(RGB(0,15,26))
DrawText(400,150,"PoussPouss", RGB(255,0,0))
DrawText(100,300,"Alignez entre les pylônes neuf items identiques", RGB(255,255,255))
DrawText(450,403,"Un pylône", RGB(255,255,255))
DrawText(450,483,"Un mur inamovible", RGB(255,255,255))

DrawingFont(FontID(1000))
BackColor(RGB(0,15,26))
DrawText(440,640,"Code : SPH", RGB(60,60,60))
DrawText(406,672,"HexaScrabble.com", RGB(60,60,60))
StopDrawing()
FlipBuffers() 

Repeat
  Delay(1)
  ExamineMouse() ; Etat de la souris
  
Until MouseButton(1)=1


;*****************************************************************************************************
;*****************************************************************************************************
;*****************************************************************************************************
time=ElapsedMilliseconds()
;*****************************************************************************************************
;*****************************************************************************************************
;*****************************************************************************************************

Repeat
  
  While WindowEvent():Wend  ;<<-----------------------------
  
  ;;;
  ExamineMouse() ; Etat de la souris
  xm = MouseX()  ; Position en x de la souris                     
  ym = MouseY()  ; Position en y de la souris
                 ;;;
  xx=xm/64
  yy=ym/64
  
  If MouseButton(1)=1 And p(xx,yy)<>2
    If xx>0
      If p(xx-1,yy)=3
        Swap p(xx,yy),p(xx-1,yy)
      EndIf
    EndIf
    If xx<15
      If p(xx+1,yy)=3
        Swap p(xx,yy),p(xx+1,yy)
      EndIf
    EndIf
    If yy>0
      If p(xx,yy-1)=3
        Swap p(xx,yy),p(xx,yy-1)
      EndIf
    EndIf
    If yy<11
      If p(xx,yy+1)=3
        Swap p(xx,yy),p(xx,yy+1)
      EndIf
    EndIf
    
    
    nb=0
    For u=0 To 11
      For i=0 To 15
        If p(i,u)=1
          x(nb)=i
          y(nb)=u
          nb+1
        EndIf
      Next
    Next
    
    
    If (Abs(x(0)-x(1))=10 And Abs(y(0)-y(1))=0)
      If x(0)>x(1)
        Swap x(0),x(1)
      EndIf
      nb=0
      kel=p(x(0)+1,y(0))
      For i=x(0)+1 To x(1)-1
        If p(i,y(0))=kel
          nb+1
        EndIf
        ;;;        
      Next
      If nb=9 And kel<>4
        For i=x(0)+1 To x(1)-1
          p(i,y(0))=4              
        Next
        total+1
        If total=20
          Goto fin
        EndIf
      EndIf   
    EndIf
    
    If Abs(y(0)-y(1))=10 And Abs(x(0)-x(1))=0
      If y(0)>y(1)
        Swap y(0),y(1)
      EndIf
      nb=0
      kel=p(x(0),y(0)+1)
      For i=y(0)+1 To y(1)-1
        If p(x(0),i)=kel
          nb+1
        EndIf
        ;;;        
      Next
      If nb=9 And kel<>4
        For i=y(0)+1 To y(1)-1
          p(x(0),i)=4              
        Next
        total+1
        If total=20
          Goto fin
        EndIf
        
      EndIf   
      
    EndIf
    
  EndIf
  
  For u=0 To 11
    For i=0 To 15
      DisplaySprite(p(i,u),i*64,u*64)
    Next
  Next
  
  DisplayTransparentSprite(0,xm,ym)
  
  FlipBuffers() 
  Delay(1)
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)

End

;#############
;#############
;#############
;#############
;#############


fin:
ClearScreen(RGB(0,15,26))
StartDrawing(ScreenOutput())
DrawingFont(FontID(1001))
BackColor(RGB(0,15,26))
DrawText(400,200,"Félicitations", RGB(255,0,0))
DrawText(300,400,"Tu as mis "+Str((ElapsedMilliseconds()-time)/1000)+" secondes", RGB(255,255,255))
DrawText(370,448,"pour finir le jeu...", RGB(255,255,255))
StopDrawing()
FlipBuffers() 

Repeat
  While WindowEvent():Wend  ;<<-----------------------------
  
  Delay(1)
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End

http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: PoussPouss

Message par MLD »

@SPH
Désolé ne fonctionne pas chez moi. :roll: :oops:
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: PoussPouss

Message par Ar-S »

ni chez moi.. la souris n'arrive à rien
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: PoussPouss

Message par SPH »

Vous voyez les icones ou bien le jeu ne se lance pas du tout ?

Si vous etes dans le jeu, il faut cliquer sur une piece a coté du trou pour "l'echanger".

Donnez moi un max de details, merci :idea:

EDIT

Vous voyez ca ? :

Image
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
Guillot
Messages : 532
Inscription : jeu. 25/juin/2015 16:18

Re: PoussPouss

Message par Guillot »

ça marche chez moi
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PoussPouss

Message par falsam »

Bonjour SPH. Les items s'affichent bien mais je ne peux rien déplacer.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: PoussPouss

Message par SPH »

supprimé car inutile now :idea:
Dernière modification par SPH le lun. 04/mai/2020 9:29, modifié 1 fois.
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PoussPouss

Message par falsam »

En fait j'ai mal compris le fonctionnement de ton jeu. J'ai cherché à échanger entres deux items. Je n'avais pas vu le trou. Donc ton jeu fonctionne mais qu'est ce que c'est ****** pardon barbant ;)

Peut être qu'il aurait fallu un minimum de présentation.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: PoussPouss

Message par Kwai chang caine »

Moi aussi j'ai rien capté au début :oops:
Après avoir lu les copains, et tes explications, j'ai cherché le trou
Je ne sais pas pourquoi, mais quand on parle de trou, on pense primairement à un rond (Trou de balle, de perceuse, d'aiguille, de badour :mrgreen: ) enfin bref...un rond
Après j'ai trouvé ce carré noir, et "j'm'est" dit: "Tiens..... ne serait ce point un trou dans le cerveau de SPH ?" et là...je clique et ça marche :D
Je trouve aussi que toutes ces couleurs, ces images ça perd un peu
Comme je l'avais dit à MLD c'est le genre de jeu qui me tape un peu sur les nerfs, donc je n'ai pas vraiment continué :oops:
En fin de compte, le principal attrait de ce jeu a été de trouver le trou, après j'étais comblé :lol:
En tout cas je te remercie beaucoup pour le partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: PoussPouss

Message par SPH »

Ouf, ca me rassure...

ps : j'ai codé ca en 5 heures 8)
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: PoussPouss

Message par venom »

Mince, frustration.
J'ai aligner 9 items entre deux pilonnes et rien. 8O Pas de score ni de message ???

Image




@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: PoussPouss

Message par SPH »

venom a écrit :Mince, frustration.
J'ai aligner 9 items entre deux pilonnes et rien. 8O Pas de score ni de message ???
Non, juste une disparition (je sais, c'est pas cool) 8)
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: PoussPouss

Message par venom »

Tu aurais pu mettre un messagerequester avec le temps écoulé comme dans ton code :

Code : Tout sélectionner

; Mon score : 1419 secondes pour tout finir =)
:wink:





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: PoussPouss

Message par SPH »

venom a écrit :Tu aurais pu mettre un messagerequester avec le temps écoulé comme dans ton code :

Code : Tout sélectionner

; Mon score : 1419 secondes pour tout finir =)
:wink:
Heu, ca, ca a ete prevu. Quand on finit tout, il y a une fin indiquant combien de temps on a mis :!: 8)
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: PoussPouss

Message par venom »

Ah !!! Il faut faire tous les items pour voir le score ? ou juste 1 item comme sur mon screen ?






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre