IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PureBasic Discussion :

Compétition PurePunch Juillet-Août 2014


Sujet :

PureBasic

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Août 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 3
    Par défaut Compétition PurePunch Juillet-Août 2014
    ~ 30 juin 2014 ~

    Compétition PurePunch Juillet-Août 2014
    Lien vers le sujet sur le forum officiel PureBasic français

    Thème
    Only 50 !
    Montrez ce que vous savez faire avec PureBasic en 50 lignes de code seulement. Que ce soit un utilitaire, un jeu, une démo graphique en 3D, n'importe quoi qui montre vos capacités et celles du langage, repoussez les limites du possible !
    Que le meilleur gagne !

    Les lots & les sponsors
    • La société Goldoweb SL offre un kit complet Raspberry Pi au vainqueur ! Merci à lui !
    • Comme la dernière fois, Fantaisie Software et Fred sponsorisent la compétition. Il y a aura donc des prix pour la seconde et la troisième place ! A voir ici, prochainement.


    Si vous aussi voulez sponsoriser, contactez-moi ! Cliquez ici pour voir les lots de la dernière compétition.

    Les règles
    1. Le programme sera fait en Purebasic version 5.22, soit en version complète, soit en version démo, les APIs sont autorisées mais pas l'ajout de bibliothèque utilisateur (userlib).
    2. Le source du programme ne pourra comporter au maximum que 50 lignes de texte de 80 caractères max par ligne. Il est possible d'avoir fichiers texte, par exemple le code source PB, plus un fichier de données textuelles, un shader Ogre, un fichier de préférences, des données XML, etc. Mais les fichiers sont cumulatifs et les règles s'appliquent : l'ensemble des fichiers ne peut comporter que 50 lignes de texte, de 80 caractères maximum par ligne.
    3. Etre original, c'est à dire soit être une création complète, soit apporter quelque chose de nouveau à un code existant.
    4. Ne pas être néfaste.
    5. Possibilité de joindre une (et une seule) image d'une taille maximale de 512 pixels de large sur 512 pixels de haut, en 32 bits. La poster sur le forum ou sur un site accessible durant toute la durée de la compétition, ou la joindre à l'archive complète du projet liée dans le post sur le forum.
    6. Possibilité de joindre un fichier sonore (et un seul) d'une taille maximale de 1 Mo. Le poster sur un site accessible durant toute la durée de la compétition, ou le joindre à l'archive complète du projet liée dans le post sur le forum.
    7. Il sera possible d'ajouter une ligne de code (non comptée) en début de source avertissant l'utilisateur d'une spécificité du programme (comme par exemple une attente ou la nécessité d'utiliser une bibliothèque sous-système particulière). Celle-ci devra être de la forme
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      MessageRequester("Information", "Message", #PB_MessageRequester_Ok)
    8. Date et heure limite : 31 août 2014, 23h59
      A la fin de la période, un fil pour le vote sera mis en place afin d'élire le meilleur programme. Seules les personnes inscrites sur le forum avant le 30 juin pourront voter (3 points pour le 1er, 2 points pour le second, 1 point pour le troisième). Les votants pourront télécharger et désigner leurs trois programmes favoris jusqu'au 14 septembre à 23h59. Après comptage et vérification, les vainqueurs seront contactés afin de recevoir leurs prix.

    Comment poster
    Postez le code dans le forum après y avoir ajouté et complété l'entête suivant (les lignes ne comptent pas dans les 50) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ;*****************************************************************************
    ;*
    ;* July-August 2014 PurePunch contest
    ;* PureBasic 5.22
    ;* 50 lines of 80 chars, 2 months delay
    ;*
    ;* Name     :  
    ;* Author   : 
    ;* Date     : 
    ;* Notes    :
    ;*
    ;*****************************************************************************
    Bonne chance à tous les compétiteurs !

  2. #2
    Responsable Purebasic

    Avatar de comtois
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 313
    Billets dans le blog
    8
    Par défaut
    Si je trouve une idée et un peu de temps, je participerai

    Pour ceux qui n'ont pas de licence PureBasic, la version démo est suffisante pour participer, elle permet de coder jusqu'à 800 lignes.
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  3. #3
    Candidat au Club
    Inscrit en
    Août 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 3
    Par défaut Nouveau sponsor
    Plus on est de fous...

    Sinon, Fred et Fantaisie Software m'ont contacté pour sponsoriser la compétition.

  4. #4
    Responsable Purebasic

    Avatar de comtois
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 313
    Billets dans le blog
    8
    Par défaut
    Falsam nous propose le code suivant :
    Ambiance ombre chinoise, dégradé de gris et son tibétain pour un jeu 2D dans lequel une tortue se cache derrière des arbres.

    Trouver le plus de tortue et cliquer dessus : Une tortue trouvée ajoute du temps au jeu ainsi qu'un arbre pour compliquer la recherche. Les moines vous accordent le droit de vous tromper 1 fois.

    Si vous trouvez 50 tortues, les moines vous accordent une seconde chance de vous tromper. 30 Tortues de plus et les moines vous accordent une troisième chance de vous tromper.

    Nom : turtles.jpg
Affichages : 1372
Taille : 40,9 KoNom : turtlesgo.jpg
Affichages : 1367
Taille : 60,9 Ko
    L'image et le son sont dans le zip:
    http://s242132022.onlinehome.fr/Down...sic/turtle.zip

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    ;*****************************************************************************
    ;*
    ;* July-August 2014 PurePunch contest
    ;* PureBasic 5.22
    ;* 50 lines of 80 chars, 2 months delay
    ;*
    ;* Name     : Where is the turtle
    ;* Author   : falsam   
    ;* Date     : Jul 02, 2014 - Update Jul 02, 2014
    ;* Notes    : Search and click on a turtle. A turtle found adds time and a tree.
    ;*
    ;*****************************************************************************
    EnableExplicit
    Structure x:s.i:x.i:y.i:a.i:EndStructure
    Global fg,f1,f2,Dim m(12),NewList s.x(),ct,tf,ti,ns,li,i,ev,mr,ac=-1,bs,bo
    Procedure f(w):Protected fc.b, mx, my
    mx=WindowMouseX(w):my=WindowMouseY(w):MouseLocate(mx,my)
    If mx>0 And mx<WindowWidth(w,1)-1 And my>0 And my<WindowHeight(w,1)-1
    ReleaseMouse(0):fc=1:Else:fc=0:ReleaseMouse(1):EndIf
    ProcedureReturn fc:EndProcedure
    Procedure r(i,j):ProcedureReturn Random(i,j):EndProcedure
    Procedure ps(f,p):SetSoundFrequency(0,f):SoundPan(0,p):PlaySound(0):EndProcedure
    fg=LoadFont(-1,"Arial",20):f1=LoadFont(-1,"Arial",16)
    f2=LoadFont(-1,"Arial",50,256)
    InitSprite():InitKeyboard():InitMouse():InitSound():UsePNGImageDecoder()
    OpenWindow(0,0,0,800,600,"Turtle",13107201):AddWindowTimer(0, 0, 1000)
    OpenWindowedScreen(WindowID(0),0,0,800,600):LoadSound(0,"s.wav")
    For i=0 To 12:m(i)=LoadSprite(-1,"s.png",8):ClipSprite(m(i),i*64,0,64,64):Next
    ClipSprite(m(8),0,130,64,64):ClipSprite(m(9),65,130,64,64)
    ClipSprite(m(10),129,130,64,64):ClipSprite(m(11),0,360,15,23)
    ClipSprite(m(12),0,280,48,48)
    Repeat:Repeat:ev=WindowEvent():If ev=13110 And ti>0:ti=ti-1:EndIf:
    If ev=13116:End:EndIf:Until ev=0
    FlipBuffers():ExamineKeyboard():ExamineMouse():ClearScreen($18D3D3D3) 
    If ac=-1:ac=0:ct=10:ns=1:tf=0:ti=5:li=1:ps(44100,0):EndIf
    If ns=1:ClearList(s()):For i=0 To ct:AddElement(s())
    s()\s=m(r(7,0)):s()\x=r(692,64):s()\y=r(472,128):s()\a=r(255,128):Next
    SelectElement(s(),0):s()\s=m(8):s()\x=r(448,128):s()\y=r(384,128):s()\a=255:ns=0
    EndIf:ForEach s():DisplayTransparentSprite(s()\s,s()\x,s()\y,s()\a):Next
    SelectElement(s(),0):DisplayTransparentSprite(m(12),380,540)
    If f(0):DisplayTransparentSprite(m(11),MouseX(),MouseY()):EndIf
    If MouseButton(1):If mr=0:mr=1
    If SpriteCollision(m(11),MouseX(),MouseY(),m(12),380,540):ac=-1
    ElseIf ac<>-2:If SpriteCollision(m(11),MouseX(),MouseY(),m(8),s()\x,s()\y)
    tf+1:ps(r(50000,10000),r(300,100)-200):ti+2:ns=1:ct+1
    Else:ac=2:EndIf:EndIf:EndIf:Else:mr=0:EndIf
    If tf>49 And bo=0:li+1:bo+1:EndIf:If tf>79 And bo=1:li+1:bo+1:EndIf
    If ti=0 And ac<>-2 Or ac<>-1:ac=2:mr=0:EndIf   
    If ac=2:If li>0:li-1:ac=0:s()\s=m(9)
    Else:ti=0:ac=-2:ps(4700,0):s()\s=m(10):EndIf:EndIf
    StartDrawing(ScreenOutput()):DrawingMode(1):DrawingFont(FontID(f2))
    If ac=-2:RotateSprite(m(12),1,1):DrawText(200,280,"GAME OVER!",$18808080): EndIf
    DrawingFont(FontID(fg)):DrawText(10, 10, "Where is the turtle",$000000)
    DrawText(530,10,"Turtles: "+Str(tf)+"  Time: "+Str(ti),$000000)
    DrawingFont(FontID(f1))
    DrawText(20,560,"falsam - PurePunch Contest 2014",$000000)
    DrawText(610,560,"Escape key : End",$000000)
    StopDrawing():Until KeyboardPushed(1)
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  5. #5
    Responsable Purebasic

    Avatar de comtois
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 313
    Billets dans le blog
    8
    Par défaut
    kvitaliy propose le code suivant :
    Importunate fly

    Nom : scrfly.jpg
Affichages : 1147
Taille : 15,8 Ko
    L'image et le son se trouvent dans cette archive

    http://www.upload.ee/files/4137028/fly.zip.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    ;*****************************************************************************
    ;*
    ;* July-August 2014 PurePunch contest
    ;* PureBasic 5.22+
    ;* 50 lines of 80 chars, 2 months delay
    ;*
    ;* Name     :Importunate fly
    ;* Author   :kvitaliy
    ;* Date     :Jul 02, 2014
    ;* Notes    :Banish a fly from the screen the mouse pointer
    ;*
    ;*****************************************************************************
    UseOGGSoundDecoder():UsePNGImageDecoder():ExamineDesktops()
    w=DesktopWidth(0):h=DesktopHeight(0):x=Random(w-130):y=Random(h-130)
    LoadImage(3,"fly.png"):GrabImage(3,1,0,0,76,64):GrabImage(3,0,76,0,76,64)
    If InitSound():LoadSound(0, "fly.ogg"):PlaySound(0): EndIf:Delay(2000)
    hl=OpenWindow(0,x,y,76,64,"", #PB_Window_BorderLess|#PB_Window_Invisible)
    ImageGadget(3,0,0,76,64,ImageID(1)):DisableGadget(3,1)
    SetWindowColor(0,RGB(1,1,1)):StickyWindow(0,1):AddWindowTimer(0,1,200)
    SetWindowLongPtr_(hl, #GWL_EXSTYLE, GetWindowLongPtr_(hl,
    #GWL_EXSTYLE) | #WS_EX_LAYERED | #WS_EX_TOOLWINDOW)
    SetLayeredWindowAttributes_(WindowID(0), RGB(1,1,1), 0, #LWA_COLORKEY)
    HideWindow(0, 0):Dim P.POINT(1)
    Procedure.f Distance(x1,y1,x2,y2)
       ProcedureReturn Sqr( ((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1)) )
    EndProcedure
    Repeat: Event = WaitWindowEvent(10)
    GetCursorPos_(P(0)):If Distance(x,y,P(0)\x,P(0)\y) < 50
    HideWindow(0, 1):PlaySound(0):HideWindow(0, 0):x=Random(w-130):y=Random(h-130)
    Delay(2000):count + 1: If count>5: Break:EndIf
    ResizeWindow(0,x,y,#PB_Ignore,#PB_Ignore):HideWindow(0, 0)       
    EndIf
    Select Event
    Case #PB_Event_Timer
    If vis:vis=0:SetGadgetState(3,ImageID(0)):Else:vis=1
    SetGadgetState(3,ImageID(1)):EndIf
    Case #PB_Event_CloseWindow ; Alt+F4 exit!
    CloseWindow(0):Break:EndSelect:ForEver
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  6. #6
    Responsable Purebasic

    Avatar de comtois
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 313
    Billets dans le blog
    8
    Par défaut
    Idle nous propose le code suivant :

    We haven't had a purepunch for awhile!
    Here's a brief time absorbing cellular challenge
    Avec cette image
    Nom : osmosis.png
Affichages : 1163
Taille : 354,1 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    ;*****************************************************************************
    ;*
    ;* July-August 2014 PurePunch contest
    ;* PureBasic 5.22
    ;* 50 lines of 80 chars, 2 months delay
    ;*
    ;* Name     :Osmosis 
    ;* Author   : idle
    ;* Date     : 4/7/2014
    ;* Notes   :Your a tiny cell lost in the petri dish full of preditors: the trick is finding where you are before you loose
    ;*                :Arrow keys move you round, escape ends , R resets 
    ;*****************************************************************************
    Structure ball:x.d:vx.d:y.d:vy.d:r.d:m.d:sprite.i:EndStructure:Global ri,bo
    Global NewList bb.ball():Global Dim sp(12):Global *player.ball,st,time
    Procedure CircleToCircle(*b.ball,*b1.ball):dx.d=*b\x-*b1\x:dy.d=*b\y-*b1\y
    dist.d=Sqr(dx*dx+dy*dy):t.d=*b\r+*b1\r:If dist<t:fd.d=(dist-t)/dist:m0.d=*b\m
    m1.d=*b1\m:x0.d=*b\x-*b\vx:x1.d=*b1\x-*b1\vx:y0.d=*b\y-*b\vy:y1.d=*b1\y-*b1\vy
    dx=*b\x-*b1\x:dy=*b\y-*b1\y:nx.d=dx/t:ny.d=dy/t
    p.d=(2*(x0*nx+y0*ny)-(x1*nx+y1*ny))/(m0+m1)*(1/(2*#PI)):dx=x0-(p*m1*nx)
    dy=y0-(p*m1*ny):*b\vx=*b\x-dx:*b\vy=*b\y-dy:dx=x1+(p*m0*nx):dy=y1+(p*m0*ny)
    *b1\vx=*b1\x-dx:*b1\vy=*b1\y-dy:ProcedureReturn 1:EndIf:EndProcedure
    Procedure up():Protected dx.d,dy.d:ForEach bb():dx=(bb()\x-bb()\vx)
    dy=(bb()\y-bb()\vy):bb()\vx=bb()\x:bb()\vy=bb()\y:bb()\x+dx:bb()\y+dy
    If bb()\x-bb()\r<0:bb()\vx=0+bb()\r:bb()\x=bb()\vx:bb()\x-dx
    ElseIf bb()\x+bb()\r>ri:bb()\vx=ri-bb()\r:bb()\x=bb()\vx:bb()\x-dx:EndIf
    If bb()\y-bb()\r<=0:bb()\vy=0+bb()\r:bb()\y=bb()\vy:bb()\y-dy
    ElseIf bb()\y+bb()\r>=bo:bb()\vy=bo-bb()\r:bb()\y=bb()\vy:bb()\y-dy:EndIf:Next
    EndProcedure:Procedure Reset():ClearList(bb()):For a=1 To 100:AddElement(bb())
    If a=1:r=18:*player=@bb():Else:r=Random(20,3):EndIf:vx.d=(-1+Random(2))*0.5
    vy.d=(-1+Random(2))*0.5 : bb()\x=Random(ri-r,r):bb()\y=Random(bo-r,r)
    bb()\vx=bb()\x+vx:bb()\vy=bb()\y+vy:bb()\r=r:bb()\m=#PI*r*r:s=Random(1,0)
    If a=1:s=3:EndIf:bb()\sprite=sp(s):Next:st=ElapsedMilliseconds():time=0
    EndProcedure:Procedure RunWorld():Protected*bt.ball,ft.d,su.d,ag.d
    Repeat:Repeat:EV=WindowEvent():If EV=#PB_Event_CloseWindow:End:EndIf:ag+0.1   
    Until EV=0:FirstElement(bb()):ExamineKeyboard():If KeyboardPushed(#PB_Key_Up)
    bb()\y-0.01:bb()\m-1:ElseIf KeyboardPushed(#PB_Key_Down):bb()\y+0.01
    bb()\m-1:EndIf:If KeyboardPushed(#PB_Key_Left):bb()\x-0.01:bb()\m-1
    ElseIf KeyboardPushed(#PB_Key_Right):bb()\x+0.01:bb()\m-1
    ElseIf KeyboardInkey()="r":Reset():EndIf:For a=1 To 5:up():ForEach bb()
    *bt=@bb():While NextElement(bb()):r= CircleToCircle(@bb(),*bt):If r
    If bb()\r>=*bt\r
    bb()\m+2:*bt\m-2:Else:*bt\m+2:bb()\m-2:EndIf:bb()\r=Sqr(bb()\m/#PI)
    *bt\r=Sqr(*bt\m/#PI):EndIf:Wend:ChangeCurrentElement(bb(),*bt):Next:Next
    ClearScreen(0):ZoomSprite(sp(12),ri*2,ri*2):RotateSprite(sp(12),ag,0)
    DisplayTransparentSprite(sp(12),0-ri/2,0-ri/2):su=-*player\m:ForEach bb()
    r=bb()\r:If bb()\m>0:su+bb()\m:ZoomSprite(bb()\sprite,bb()\r*2,bb()\r*2)
    RotateSprite(sp(2),bb()\x-bb()\vx,1):ZoomSprite(sp(2),bb()\r*1.8,bb()\r*1.8)
    rt=bb()\r*0.9:DisplayTransparentSprite(sp(2),bb()\x-rt,bb()\y-rt,127)   
    DisplayTransparentSprite(bb()\sprite,bb()\x-bb()\r,bb()\y-bb()\r,127)   
    Else: If *player=@bb():If Not time:time=(ElapsedMilliseconds()-st)/1000 
    MessageRequester("osmosis","You got absorbed IN "+Str(time)+" seconds")
    EndIf:Else:DeleteElement(bb()):EndIf:EndIf:Next:If *player\m>su:If Not time
    time=(ElapsedMilliseconds()-st)/1000
    MessageRequester("osmosis","You became the largest In "+Str(time)+" seconds")
    EndIf:EndIf:FlipBuffers():Until  KeyboardPushed(#PB_Key_Escape):EndProcedure   
    InitSprite():InitKeyboard():UsePNGImageDecoder():ri=800:bo=600
    OpenWindow(0,0,0,ri,bo,"Osmosis"):OpenWindowedScreen(WindowID(0),0,0,ri,bo)
    For a=0 To 3:sp(a)=LoadSprite(-1,"osmosis.png",8)
    ClipSprite(sp(a),a*128,0,128,128):Next
    sp(12)=LoadSprite(-1,"osmosis.png")
    ClipSprite(sp(12),0,128,512,384):reset():RunWorld()
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/08/2014, 14h43
  2. Réponses: 12
    Dernier message: 29/01/2013, 09h45
  3. Compétition PurePunch été 2010
    Par comtois dans le forum PureBasic
    Réponses: 5
    Dernier message: 07/08/2010, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo