Compétition PurePunch des fêtes de fin d'année 2012

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par djes »

Cool Dji a écrit :Hello Djes,

Est-il possible d'assouplir la règle pour les non-encore-inscrits sur le forum pour participer au PurePunch ?
?
N'importe qui peut participer, c'est pour le vote qu'il fallait être inscrit avant le début.
ricou 94
Messages : 9
Inscription : dim. 24/oct./2010 16:11
Localisation : ABLON sur SEINE

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par ricou 94 »

bonjour !
Je voudrais revenir sur le bug de la macro présentée par Graph100. Ce n'est pas un bug, mais pb m'en apprend tout les jours !!!

Vous savez sûrement que tout langage informatique modulaire utilise la structure xml pour déterminer l'organisation du code, et pour pouvoir le fragmenter en blocs cohérents et classé afin que le linker qui lira le bytecode généré par les modules de compilations précédents puisse structurer le fichier exécutable selon la norme décrite par le format "PE".
Nos codes se composent d'une branche principals, appelant des procédures qui sont évaluées puis compilées avant cette branche.
Ces procédures possèdent des instructions de bases appelées également instructions natives du langages, ces instructions faisant appels à des variables ou constantes qui pourraient constituer le plus petit maillon de la chaîne ou le dernier noeud d'une branche.
Il en va de même pour les symboles ou expressions de pb.
Ainsi le code :

Code : Tout sélectionner

;du commentaire : messagerequester ("hello world !","bonjour à tous",0)
ne sera pas exécuté. Et pourtant, il y a un deux point ! Mais ces deux points sont ignoré car la priorité du point virgule est plus forte que celle des deux points.

alors que :

Code : Tout sélectionner

;du commentaire
MessageRequester ("hello world !","bonjour à tous",0)
est exécuté.
Ce qui signifie que pb fait la différence entre le symbol deux points qui sépare deux instruction et le retour à la ligne qui marque la fin d'un bloc d'instructions.
Il en va de même pour les macros. En réalité, chaque mot de notre langage possède un niveau de priorité permettant à l'analyseur syntaxique de pb de structurer notre programme en arbre.
Pour aller plus loin : vous savez également que toutes les instructions conditionnelles se basent sur l'instruction "if" qui s'appuie sur des booléans pour valider la condition.
Du coup, lorsque le compilateur rencontre un symbol de fin de ligne il doit mettre à true une variable indiquant la fin de bloc d'instructions, et ajouter un noeud dans l'arbre xml.
Même si dans la macro présentée par Graph100 le bloc if ... endif... permet de délimiter la fin d'un bloc d'instructions, le code de la "macro" qui lui, sera évaluer qu'après analyse syntaxique de toute la ligne, remet à "false" cette variable puisque le "endif" est dans cette macro. Les instructions qui suivent (en l'occurance l'instruction With",
en l'abscence de retour à la ligne se retrouve donc dans la même branche que la macro. Et pb ne pouvant pas créer une priorité d'exécution émet un message d'erreur.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par graph100 »

ricou 94 a écrit :Même si dans la macro présentée par Graph100 le bloc if ... endif... permet de délimiter la fin d'un bloc d'instructions, le code de la "macro" qui lui, sera évaluer qu'après analyse syntaxique de toute la ligne, remet à "false" cette variable puisque le "endif" est dans cette macro. Les instructions qui suivent (en l'occurance l'instruction With",
en l'abscence de retour à la ligne se retrouve donc dans la même branche que la macro. Et pb ne pouvant pas créer une priorité d'exécution émet un message d'erreur.
Je ne suis pas du même avis, sur le coup il faudrait demander à Fred de juger, mais il me semble que With, n'est pas une instruction.

Ton explication indiquerais que le code que j'ai posté pour les Spaces invades ne fonctionne pas. Or il fonctionne.

Si j'ai bien compris, les macros sont utilisées avant toutes autre évaluation du code et transformation du code en bit code ou quoi que soit que PB utilise.
Une macro en PB est simplement la création d'un raccourcis qui permet de ne pas écrire un bout de code trop long et que l'on veux réutiliser, mais qui serais trop lent si on l'appelais avec un procédure.

d'ailleurs le code :

Code : Tout sélectionner

Macro O
EndIf
EndMacro

If 1=1
   debug "dans le IF"
O:Debug "pouet"
x = 1
fonctionne parfaitement.

Le problème soulevé est à mon sens une mauvaise interaction entre la macro "classique" et la macro du "With EndWith"

Pour résumer, Pb a un module qui prend le code, remplace toutes les macros et autres raccourcis du genre, puis ensuite seulement envois le code au reste de la machine qui compile.

Et l'erreur renvoyée est le résultat d'une mauvaise pré-interprétation des conditions qui permettent d'utiliser With. Ça ne doit être très compliqué à corriger.
Déjà je trouve qu'interdire les ":" après un with est très limitatif et injustifié (te fâche pas Fred, si me lis :oops: ) alors en plus cette contrainte là !! Tabernacle !

Aller, après autant de contestation, je vous envois toutes mes amitiés :D
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par Cool Dji »

djes a écrit :
Cool Dji a écrit :Hello Djes,

Est-il possible d'assouplir la règle pour les non-encore-inscrits sur le forum pour participer au PurePunch ?
?
N'importe qui peut participer, c'est pour le vote qu'il fallait être inscrit avant le début.
Yep, sorry pour la question :?
J'avais mal lu (ou trop rapidement) le règlement !

Cool et merci d'avoir relancé le PurePunch :D => les soirées sont studieuses :mrgreen:
Only PureBasic makes it possible
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par djes »

Avatar de l’utilisateur
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par wood51 »

Salut,
J'essaie de faire un petit jeux et je voudrais que mon prog lance le navigateur sur une page php qui enregistre(et affiche) les scores .
Ça implique donc un petit script php et une bd sqlite . Suis hors concours si je fais çà ou pas ?

@+ Wood51
Compétences : Bricoleur PureBasic du dimanche
Crâmage de cerveau en cours 100% :D
Projet en cours : http://purepicbasic.frenchboard.com/
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par kernadec »

bonjour
@graph100 tu as raison pourquoi pas! "un démineur"

Je viens de me rendre compte que je n'ai pas tout compris avec
les tests et les boucles d’événements :(
Alors, il faut que je reprenne les exercices :mrgreen:

Cordialement
ps ; la ligne 14 mettre le chemin de votre répertoire de PureBasic pour l'image drapeau
sinon l'image seras noir par défaut.

Code : Tout sélectionner

;****************************************************************************** 
;* 
;* Season's Greetings PurePunch Demo contest 
;* PureBasic 5.00 
;* 80 lines of 80 chars, 1 month delay 
; 
;* Name :  Démineur 
;* Author : Kernadec et Graph100
;* Date :   04.12.2012 
;* Notes : Champ de 8 à 10 Mines. cliquer  en évitant les mines. si le score atteint 215 c'est Gagné.  
;*            inclut un mode aléatoire qui peu effacer 10 ou 30 cases non minées  avec un clic 
;*
;****************************************************************************** 
UsePNGImageDecoder():UseJPEGImageDecoder()
If LoadImage(6, "c:\purebasic\Examples\3D\Data\Textures\MRAMOR6X6.jpg")
  ResizeImage(6,25,25) : Else : CreateImage(6,25,25,32) : EndIf
Enumeration : #Win : #image1 : EndEnumeration 
#flag=#PB_Window_SystemMenu | #PB_Window_ScreenCentered
Procedure grille(a,total)   ; Efface redessine les boutons du boom
  If a=1 : For i=1 To 225: If IsGadget(i) : FreeGadget(i) : EndIf : Next i
    StartDrawing(WindowOutput(#win)) : affiche$= " T'ES TROP FORT  "
    If total=>215 : Else : affiche$= " GAME OVER" : EndIf
    DrawText(150,180,Str(total)+affiche$,#Black,RGB(250,250,80)) : Delay(1500)
    DrawText(150,180,Str(total)+affiche$,RGB(250,250,80),RGB(250,250,80))
  StopDrawing(): EndIf
  For u=0 To 350 Step 25 : c1+2                 ; position des boutons
    For uu=0 To 350  Step 25 : c2+2
      StartDrawing(ImageOutput(#image1)) : DrawingMode(#PB_2DDrawing_Gradient)      
      BackColor(RGB(Random(255), Random(255), Random(255)))
      FrontColor(RGB(Random(255), Random(255), Random(255)))
      BoxedGradient(0, 0, 25, 25) : Circle(12, 12, 13)
      BackColor(RGB(Random(255), Random(255), Random(255)))
      FrontColor(RGB(Random(255), Random(255), Random(255)))
      BoxedGradient(2, 2, 21, 21) : Circle(12, 12, 7) : StopDrawing()
      ButtonImageGadget(b+1,uu+c2,u+c1,25,25, ImageID(#image1)) : b+1
  Next uu : c2=0 : Next u
EndProcedure
CreateImage(#image1,25,25,32) : CreateImage(5,25,25,32) 
OpenWindow(#Win, 0, 0, 407, 407, "Pseudo Démineur",#flag)
SetWindowColor(#Win,RGB(250,250,80)) : grille(0,0) : Dim boom(9)
For i=1 To 9 : boom(i)=Random(224)+1 : Next i ; emplacement des mines
Repeat 
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow : End
    Case #PB_Event_Gadget 
      n=Random(6)
      For z=0 To 9             ; test si boom et nouveau champ des mines
        If boom(z)=EventGadget() : n=-1 : If IsGadget(boom(z))
            SetGadgetAttribute(boom(z),#PB_Button_Image, ImageID(6))
      EndIf: Break:EndIf : Next z   
      If n=-1 
        For i=0 To 9     
          If IsGadget(boom(i)) ; Affiche les bombes en drapeaux damiers PB5
            SetGadgetAttribute(boom(i),#PB_Button_Image, ImageID(6)) 
          EndIf
        Next i
        If total<215 
          m1$="Fin de la Partie" : m2$=": Pour Gagner il faut Jouer!"
          MessageRequester(m1$,Str(total)+m2$,#PB_MessageRequester_Ok)
        EndIf : grille(1,total) : total=0 
        For w=0 To 9 : boom(w)=Random(224)+1 : Next w 
      EndIf
      If n<>-1 : flag = #True : For i=0 To 9 : If boom(i)=EventGadget() 
        flag = #False:Break : EndIf : Next i ;test si c'est une mine
        If flag And IsGadget(EventGadget()) 
        FreeGadget(EventGadget()) : total+1 : EndIf
        If n<5 : j = 0 : ElseIf n=5 : j = 10 : Else : j = 30 :  EndIf
        For o=1 To j                             ;supprime j cases
          h=Random(224)+1 : flag = #True
          For i=0 To 9 : If boom(i)=h :flag = #False : o - 1
          Break : EndIf : Next i               ;test si c'est une mine
          If flag : If IsGadget(h) : FreeGadget(h) : total+1 
              Else : o-1 : EndIf : EndIf
          If total >= 215 : Break : EndIf
        Next o
      EndIf
  EndSelect
ForEver
Dernière modification par kernadec le lun. 10/déc./2012 20:36, modifié 3 fois.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par djes »

wood51 a écrit :Salut,
J'essaie de faire un petit jeux et je voudrais que mon prog lance le navigateur sur une page php qui enregistre(et affiche) les scores .
Ça implique donc un petit script php et une bd sqlite . Suis hors concours si je fais çà ou pas ?

@+ Wood51
Hello !
C'est quand même assez embêtant ; évidemment ce n'est pas comme télécharger des graphs et des ziks depuis le net, mais c'est quand même incorporer une logique en dehors des limites. Perso je préférerais avec les scores, mais si l'on veut respecter le cadre... Ou alors il faudrait que ton système de sauvegarde de score soit universel et puisse être utilisé par tout le monde de façon équitable.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par Ar-S »

djes a écrit :
wood51 a écrit :Salut,
J'essaie de faire un petit jeux et je voudrais que mon prog lance le navigateur sur une page php qui enregistre(et affiche) les scores .
Ça implique donc un petit script php et une bd sqlite . Suis hors concours si je fais çà ou pas ?

@+ Wood51
Hello !
C'est quand même assez embêtant ; évidemment ce n'est pas comme télécharger des graphs et des ziks depuis le net, mais c'est quand même incorporer une logique en dehors des limites. Perso je préférerais avec les scores, mais si l'on veut respecter le cadre... Ou alors il faudrait que ton système de sauvegarde de score soit universel et puisse être utilisé par tout le monde de façon équitable.
Je pense que pour le contest tu pourrais te contenter d'un score locale avec gestion d'utilisateurs locaux. Un simple fichier pref suffirait.
Libre à toi par la suite d'inclure une bdd sqlite pour les joueurs du monde entier :mrgreen:
C'est juste mon avis, et je le partage :mrgreen:
~~~~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
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

Compétition PurePunch des fêtes de fin d'année 2012

Message par wood51 »

Salut , je vais voir ce que je peux faire . Un système accessible par tout le monde me semble sympas . En fait ce que j'ai prévu : un runprogram avec une URL du type -> www.monsite.com?pseudo=...&score=...
La page enregistre puis affiche . Si ça convient je veux bien me pencher dessus
Compétences : Bricoleur PureBasic du dimanche
Crâmage de cerveau en cours 100% :D
Projet en cours : http://purepicbasic.frenchboard.com/
Avatar de l’utilisateur
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

Compétition PurePunch des fêtes de fin d'année 2012

Message par wood51 »

Ars : t'as poster plus vite que moi . En local c'est moins marrant mais c'est vrai qu'à y réfléchir comme tu n'a pas fais de jeu tu ne profite pas du système et donc c'est pas juste.
+1000 pour toi
Compétences : Bricoleur PureBasic du dimanche
Crâmage de cerveau en cours 100% :D
Projet en cours : http://purepicbasic.frenchboard.com/
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par Ar-S »

Je ne suis pas allé jusqu'à comparer ça au fait qu'il ni a pas que des jeux. Je pensais juste comme Djes :
mais c'est quand même incorporer une logique en dehors des limites
Je ne m'occupe pas des règles, si les scores online ça le fait je n'ai rien contre, bien au contraire tant que tu restes dans le cadre des 80x80 1 image 1 fichier son. :wink:
Dernière modification par Ar-S le lun. 10/déc./2012 16:36, modifié 2 fois.
~~~~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
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par graph100 »

kernadec a écrit :

Code : Tout sélectionner

;* Author : Kernadec et Graph100
Bah fallait pas :D c'est gentil !

Par contre, pour gagner, il faut rejouer :mrgreen:
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Compétition PurePunch des fêtes de fin d'année 2012

Message par djes »

graph100 a écrit :
kernadec a écrit :

Code : Tout sélectionner

;* Author : Kernadec et Graph100
Bah fallait pas :D c'est gentil !

Par contre, pour gagner, il faut rejouer :mrgreen:
+1 et aussi : T'EST TROP FORT

A quoi sert l'image chargée (ou pas) au début ?

Pourrais-tu aussi préciser un peu la règle et mettre le titre correct dans l'entête ? Merci :)
Avatar de l’utilisateur
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

Compétition PurePunch des fêtes de fin d'année 2012

Message par wood51 »

Ar-S a écrit :Libre à toi par la suite d'inclure une bdd sqlite pour les joueurs du monde entier :mrgreen:
:D :D :D . Ce n'est qu'un petit jeux , je suis pas du tout calé en prog en plus c'est mon 2ème jeux (le premier c'est le même mais pour nds) . Mais bon si tu prédit un avenir mondiale pourquoi pas :mrgreen: :mrgreen: :mrgreen: . En tous cas l'idée du purepunch est génial ça permet de changer du quotidien :-)
Compétences : Bricoleur PureBasic du dimanche
Crâmage de cerveau en cours 100% :D
Projet en cours : http://purepicbasic.frenchboard.com/
Répondre