Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| les boules qui mangent des boules | |
| | Auteur | Message |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: les boules qui mangent des boules Jeu 25 Fév 2010 - 20:32 | |
| Salut à tous, Voici un petit jeu qui va rapidement vous mettre les boules... Pour chaque joueurs vous pouvez définir qui joue (lui ou l'ordinateur) et vous pouvez changer le nom. vous pouvez faire quelques règlages en modifiant les lignes 47 à 49 du code, notament diminuer le nombre de points pour gagner. Le but du jeu est de manger les boules ennemies et d'être le premier à atteindre les 30 points. C'est un jeu tour par tour, avec lancé automatique d'un dé. Les options de sauvegarde ne fonctionnent pas encore. Lancez-vous, vous allez vite comprendre comment jouer. Voici le code: - Code:
-
' les boules qui mangent des boules (JEAN CLAUDE 02/2010)
dim a,ap,bo,aj,c,d,n,nb,j,t,tr,vcy,x,y,yp,L,ESP,hg,H,EP,lj,clicX,clicY dim r(6),g(6),b(6),x1(6),x2(6),y1(6),y2(6) dim a$,tour$,temp,tempDE,nbpg dim joueur$(6),gj$(6),lance(12) dim cx(50),cy(50) dim couleurboule(384),px(384),py(384),gain(384),nbpion(384)
x=screen_x:y=screen_y
label init,ini,quit,joueur,nom,modnom,mdn,gp,joue,joue1,joue2,clic,tour,joue3,joue4 label de,de1,de2,de3,de4,de5,de6,gain,nul,perdu,joue1a,joue2a,score,ordi,ordi2,ordi3 label ordi4 joueur$(1)="TERMINATOR":joueur$(2)="RAMBO":joueur$(3)="DARK VADOR" joueur$(4)="SKYWALKER":joueur$(5)="OBI-WAN":joueur$(6)="YODA"
full_space 0 border_hide 0:font_name 0,"fixedsys" picture 1:top 1,0:height 1,y-140:width 1,x 2d_target_is 1:font_name 1,"fixedsys":print_target_is 1 color 1,200,200,200 gosub ini:gosub init
main_menu 10 sub_menu 11:parent 11,10:caption 11,"Fichier" sub_menu 111:parent 111,11:caption 111,"Nouvelle Partie":on_click 111,joue sub_menu 112:parent 112,11:caption 112,"Charger une Partie" sub_menu 113:parent 113,11:caption 113,"Sauver une Partie" sub_menu 114:parent 114,11:caption 114,"QUITTER":on_click 114,quit sub_menu 12:parent 12,10:caption 12,"Joueurs" for j=1 to 6 sub_menu 12+j:parent 12+j,12:caption 12+j,joueur$(j) on_click 12+j,joueur next j button 2:top 2,250:left 2,450:width 2,50:height 2,18:caption 2,"Modifier":hide 2 edit 3:top 3,250:left 3,550:width 3,100:height 3,18:hide 3 container_option 4 top 4,267:left 4,250:width 4,160:height 4,50:hide 4 option 5:parent 5,4:top 5,10:left 5,5:width 5,150 option 6:parent 6,4:top 6,30:left 6,5:width 6,150 picture 7:top 7,y-130:left 7,x-110:height 7,100:width 7,100 color 7,255,200,200 picture 8:top 8,7:left 8,0:height 8,22:width 8,x color 8,200,200,200 temp=10: ' temps entre chaque joueurs tempDE=50: ' temps de visualisation des dé nbpg=29: ' Nombre de points pour gagner (maxi conseillé 50) end ' ============================================================================== joue: hide 2:hide 4:inactive 111:inactive 12 color 1,200,200,200:gosub init:j=0 vcy=50 for nb=1 to 16 vcy=vcy+50 t=int(rnd(6))+1:j=t for c=t to t+23 cx(t-1)=0 j=j+1:bo=bo+1 if j=7 then j=1 cx(c)=cx(c-1)+50:cy(c)=vcy couleurboule(bo)=j:px(bo)=cx(c):py(bo)=cy(c) 2d_fill_color r(j),g(j),b(j) 2d_circle cx(c),cy(c),10 next c:next nb for nb=1 to 6 nbpion(nb)=99 next nb joue1: gosub tour if gj$(tr)="O" then gosub ordi:goto joue1 joue1a: if nbpion(tr)<1 then message " "+joueur$(tr)+"vous n'avez plus de cartouches":goto joue1 print_target_is 0:print_locate 1,y-120:print string$(140," "):print_locate x-(x/2)-100,y-120 print " "+joueur$(tr)+" choisissez l'attaquant" on_click 1,joue2 return
joue2: gosub clic:ap=bo if couleurboule(bo)<>tr then message "Vous devez attaquer avec votre couleur":goto joue1a if couleurboule(bo)=7 then message " Vous devez Choisir une boule":goto joue1a if couleurboule(bo)=8 then message " Cette boule est déja jouée":goto jouea1 2d_fill_color r(tr),g(tr),b(tr) 2d_circle px(bo),py(bo),2 joue2a: print_locate 1,y-120:print string$(140," "):print_locate x-(x/2)-100,y-120 print " "+joueur$(tr)+" choisissez le défenseur" on_click 1,joue3 return
joue3: gosub clic if couleurboule(bo)=tr then message "Vous devez attaquer une autre couleur":goto joue2a if couleurboule(bo)=7 then message " Vous devez Choisir une boule":goto joue2a if couleurboule(bo)=8 then message " Cette boule est déja jouée":goto joue2a 2d_fill_color r(couleurboule(bo)),g(couleurboule(bo)),b(couleurboule(bo)) 2d_circle px(bo),py(bo),15 print_locate 1,y-120:print string$(140," "):print_locate x-(x/2)-100,y-120 print " "+joueur$(tr)+" attaque "+joueur$(couleurboule(bo)) a=tr:gosub de:wait 1000 print_locate 1,y-100:print string$(100," "):print_locate 10,y-100 print " "+joueur$(tr)+" => "+str$(d):lance(tr)=d a=couleurboule(bo):gosub de:wait 1000 print_locate 1,y-80:print string$(100," "):print_locate 10,y-80 print " "+joueur$(couleurboule(bo))+" => "+str$(d):lance(couleurboule(bo))=d if joueur$(couleurboule(bo))="" then message " A coté !"+chr$(13)+"Recommencez":goto joue4 if lance(tr)>lance(couleurboule(bo)) then gosub gain:goto joue4 if lance(tr)=lance(couleurboule(bo)) then gosub nul:goto joue4 if lance(tr)<lance(couleurboule(bo)) then gosub perdu:goto joue4 joue4: gosub score if tour$="P" then goto joue1 goto joue1a return
ordi: off_click 1 if nbpion(tr)<1 then message " "+joueur$(tr)+"vous n'avez plus de cartouches":return ordi2: bo=int(rnd(384))+1 ap=bo if couleurboule(bo)<>tr then goto ordi2 if couleurboule(bo)=7 then goto ordi2 if couleurboule(bo)=8 then goto ordi2 2d_fill_color 255,255,255 2d_circle px(bo),py(bo),10 wait temp ordi3: bo=int(rnd(384))+1 if couleurboule(bo)=tr then goto ordi3 if couleurboule(bo)=7 then goto ordi3 if couleurboule(bo)=8 then goto ordi3 2d_fill_color r(couleurboule(bo)),g(couleurboule(bo)),b(couleurboule(bo)) 2d_circle px(bo),py(bo),15 print_locate 1,y-120:print string$(150," "):print_locate x-(x/2)-100,y-120 print " "+joueur$(tr)+" attaque "+joueur$(couleurboule(bo)) a=tr:gosub de:wait 1000 print_locate 1,y-100:print string$(100," "):print_locate 10,y-100 print " "+joueur$(tr)+" => "+str$(d):lance(tr)=d a=couleurboule(bo):gosub de:wait 1000 print_locate 1,y-80:print string$(100," "):print_locate 10,y-80 print " "+joueur$(couleurboule(bo))+" => "+str$(d):lance(couleurboule(bo))=d if lance(tr)>lance(couleurboule(bo)) then gosub gain:goto ordi4 if lance(tr)=lance(couleurboule(bo)) then gosub nul:goto ordi4 if lance(tr)<lance(couleurboule(bo)) then gosub perdu:goto ordi4 ordi4: gosub score if tour$="P" then return goto ordi
score: print_target_is 8 for n=1 to 6 if n=1 then yp=210 if n=2 then yp=370 if n=3 then yp=530 if n=4 then yp=690 if n=5 then yp=850 if n=6 then yp=1010 print_locate yp-20,5:print " ":print_locate yp-15,5:print gain(n) print_locate yp+18,5:print " ":print_locate yp+22,5:print nbpion(n) next n print_target_is 0 return
perdu: couleurboule(ap)=7 nbpion(tr)=nbpion(tr)-1 2d_pen_color 200,200,200:2d_fill_color 200,200,200:2d_circle px(ap),py(ap),20 2d_pen_color 0,0,0 2d_fill_color r(couleurboule(bo)),g(couleurboule(bo)),b(couleurboule(bo)) 2d_circle px(bo),py(bo),15 gain(couleurboule(bo))=gain(couleurboule(bo))+1:couleurboule(bo)=8 nbpion(couleurboule(bo))=nbpion(couleurboule(bo))-1 tour$="P" return
nul: 2d_pen_color 200,200,200:2d_fill_color 200,200,200:2d_circle px(ap),py(ap),20 2d_pen_color 0,0,0:2d_fill_color r(tr),g(tr),b(tr):2d_circle px(ap),py(ap),10 2d_pen_color 200,200,200:2d_fill_color 200,200,200:2d_circle px(bo),py(bo),20 2d_pen_color 0,0,0 2d_fill_color r(couleurboule(bo)),g(couleurboule(bo)),b(couleurboule(bo)) 2d_circle px(bo),py(bo),10 tour$="P" return
gain: 2d_pen_color 0,0,0:2d_fill_color r(tr),g(tr),b(tr):2d_circle px(ap),py(ap),10 nbpion(couleurboule(bo))=nbpion(couleurboule(bo))-1 couleurboule(bo)=tr 2d_fill_color r(couleurboule(bo)),g(couleurboule(bo)),b(couleurboule(bo)) 2d_circle px(bo),py(bo),15 gain(tr)=gain(tr)+1:couleurboule(bo)=8::nbpion(tr)=nbpion(tr)-1 if gain(tr)>nbpg then message "Bravo! "+joueur$(tr)+ " Vous avez gagné la Partie.":goto quit tour$="G" return
de: tour$="" d=int(rnd(6))+1 for n=1 to 12 wait tempDE 2d_target_is 7:2d_pen_width 5:2d_rectangle 20,20,80,80 2d_fill_color r(a),g(a),b(a) d=int(rnd(6))+1 if d=1 then gosub de1 if d=2 then gosub de2 if d=3 then gosub de3 if d=4 then gosub de4 if d=5 then gosub de5 if d=6 then gosub de6 next n return
de1: 2d_target_is 7:2d_pen_width 5:2d_rectangle 20,20,80,80:2d_fill_color 0,0,0 2d_circle 50,50,5:2d_target_is 1:2d_pen_width ep return
de2: 2d_target_is 7:2d_pen_width 5:2d_rectangle 20,20,80,80:2d_fill_color 0,0,0 2d_circle 40,40,5:2d_circle 60,60,5 2d_target_is 1:2d_pen_width ep return
de3: 2d_target_is 7:2d_pen_width 5:2d_rectangle 20,20,80,80:2d_fill_color 0,0,0 2d_circle 35,35,5:2d_circle 50,50,5:2d_circle 65,65,5 2d_target_is 1:2d_pen_width ep return
de4: 2d_target_is 7:2d_pen_width 5:2d_rectangle 20,20,80,80:2d_fill_color 0,0,0 2d_circle 35,35,5:2d_circle 65,35,5:2d_circle 35,65,5:2d_circle 65,65,5 2d_target_is 1:2d_pen_width ep return
de5: 2d_target_is 7:2d_pen_width 5:2d_rectangle 20,20,80,80:2d_fill_color 0,0,0 2d_circle 35,35,5:2d_circle 65,35,5:2d_circle 35,65,5:2d_circle 65,65,5:2d_circle 50,50,5 2d_target_is 1:2d_pen_width ep return
de6: 2d_target_is 7:2d_pen_width 5:2d_rectangle 20,20,80,80:2d_fill_color 0,0,0 2d_circle 40,35,4:2d_circle 40,50,4:2d_circle 40,65,4 2d_circle 60,35,4:2d_circle 60,50,4:2d_circle 60,65,4 2d_target_is 1:2d_pen_width ep return
tour: tr=tr+1 if tr>6 then tr=1 return
clic: clicX=mouse_x_position(1):clicY=mouse_y_position(1) for n=1 to 384 if px(n)<(clicX+10) and px(n)>(clicX-10) and py(n)<(clicY+10) and py(n)>(clicY-10) then bo=n:exit_for bo=0:next n return
joueur: for j=1 to 6 if clicked(12+j)=1 then exit_for next j print_locate 250,250:print string$(20," ") print_locate 250,250:print " NOM: "+joueur$(j)+" " show 2:on_click 2,nom show 4 if gj$(j)="O" then mark_on 6:set_focus 6 if gj$(j)="J" then mark_on 5:set_focus 5 caption 5," Gérer par "+joueur$(j)+" " caption 6," Gérer par l ' Ordinateur " on_click 5,gp on_click 6,gp return
gp: if checked(5)=1 then gj$(j)="J" if checked(6)=1 then gj$(j)="O" return
nom: show 3:set_focus 3 on_key_up 3,modnom return
modnom: if key_up_code=13 then a$=upper$(text$(3)):gosub mdn return
mdn: if len(a$)>11 then message "11 Caractères Maximum":text 3,"":return if len(a$)<3 then message "3 Caractères Minimum":text 3,"":return joueur$(j)=a$:hide 3:aj=j:gosub init:j=aj print_locate 250,250:print string$(20," ") print_locate 250,250:print " NOM: "+joueur$(j)+" " caption 5," Gérer par "+joueur$(j)+" " caption 6," Gérer par l ' Ordinateur " caption 12+j,joueur$(j) on_click 12+j,joueur return
ini: for j=2 to 6 gj$(j)="O" next j gj$(1)="J" return
init: L=120:ESP=40:H=5:EP=1.5 r(1)=50:g(1)=255:b(1)=0:r(2)=255:g(2)=150:b(2)=100:r(3)=255:g(3)=0:b(3)=255 r(4)=0:g(4)=255:b(4)=255:r(5)=255:g(5)=0:b(5)=100:r(6)=255:g(6)=255:b(6)=50 hg=int(((L/2)+(H/2))/2) for n=1 to 6:x1(n)=(L*n)+(ESP*n):y1(n)=hg:x2(n)=x1(n)+L:y2(n)=hg*2:next n for j=1 to 6:2d_pen_width ep:2d_fill_color r(j),g(j),b(j):2d_rectangle x1(j),y1(j),x2(j),y2(j) a=len(joueur$(j)):if a<7 then lj=20 if a=7 then lj=14 if a>7 then lj=8 print_locate x1(j)+int((lj*4)/2),y1(j)+8:print joueur$(j):next j return
quit: terminate
Dernière édition par Jean Claude le Jeu 25 Fév 2010 - 20:57, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: les boules qui mangent des boules Jeu 25 Fév 2010 - 20:42 | |
| Une présision, le compteur de chaque joueur est composé à gauche du nombre de points acquis et a droite du nombre de cartouches qui lui reste pour jouer. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: les boules qui mangent des boules Ven 26 Fév 2010 - 7:53 | |
| Vu l'absence de réactions, je me suis dit que quelque chose ne collait pas. La taille de l'écran. Je m'apercois que pour certains d'entre vous la taille de l'écran doit poser problème. Et comme je n'ai qu'un écran, je n'ai pas pu controler. Le programme fonctionne avec 1280X1024. Si vous souhaitez controler le votre: - Code:
-
dim x,y x=screen_x:y=screen_y print x print y
A+ | |
| | | Invité Invité
| Sujet: Re: les boules qui mangent des boules Ven 26 Fév 2010 - 8:16 | |
| Je suis désolé Jean Claude, j'ai essayé ton programme cette nuit, et je n'ai rien compris. Je ne sais pas ce quel est le but. Dès qu'on choisi une boule, les changements qui interviennent ne me laisse pas le temps de comprendre ce qui se passe, et franchement, je ne sais pas ce qui faut manger. Il faut dire que je ne suis pas un habitué des jeux, et mon jugement est très certainement pas affuté comme l'ai ceux qui font cela toute la journée. Mon esprit est trop lent par rapport à ce que je vois. Il y a des boules partout et les yeux ne savent pas où regarder. Comme tu dis, ça me fout les boules. Apparemment c'est un jeu pour intellectuel, et je n'en suis pas un. @+ |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: les boules qui mangent des boules Ven 26 Fév 2010 - 9:17 | |
| Non ce n'est pas un jeu pour intéllectuel. Tu peux ralentir, le défilement du jeu, en augmentant la valeur des variables temp à la ligne 47 et tempDE à la ligne 48.
Par défault le joueur (vert) nommé TERMINATOR, c'est l'utilisateur (tu peux y mettre ton nom). Tu choisis une boule verte pour attaquer une autre couleur. Si tu gagnes tu pert une cartouche, mais tu gagne un point et ton adversaire pert une cartouche et une boule, et comme tu as gagné tu peux attaquer à nouveau. Si tu perds, tu perds une boule, une cartouche et tu n'as pas de point. Ton adversaire gagne un point.Tu perds ton tour En cas de nul, tu perds ton tour. Quand un joueur perd son tour, la machine sélectionne le joueur suivant. Si ce joueur est gérer par l'ordinateur, il faut attendre la fin des combats. Quand ton tour revient tu jette un oeil au score de chacun pour décider qui tu dois attaquer.
J'ai bricolé ce jeu en m'inspirant de RISK. Je l'ai fait pour m'amuser à programmer en 2D. Il est loin d'être fini et parfait, il faut que je revois le comptage des boules et que je permettes la sauvegarde de la partie. Il faut également qu'il puisse s'adapter à toutes les tailles d'écran, car pour le score çà n'est pas géré.
Et pour finir, je dirais que le jeu lui même n'a pas trop d'intérêt car il n'y a pas de stratégie, c'est du hasard. Mais il y a des trucs intéressants de programmation (par EX: le lancé des dés est plutot réussi). Réalisé en 3D, çà pourrait être plus sympa.
Je te remercis d'avoir regardé, sachant que tu n'es pas branché coté jeu, c'est d'ailleurs mon cas.
A+ | |
| | | Invité Invité
| Sujet: Re: les boules qui mangent des boules Ven 26 Fév 2010 - 11:35 | |
| Ce que je ne comprends pas dans ton jeu,, Il faut attaquer quoi? Il y a toutes les couleurs à côté de sa propre couleur. J'ai pas analysé le code, ce n'est pas du jeu de le faire, mais le dé détermine quoi? Par rapport à quoi est faite la stratégie? L'analyse d'un combat est déterminé par quoi?, la couleur d'à côté, du nombre sur le dé? Je ne vois pas le but. D'accord pour les cartouches. Ce que je ne pige pas, c'est en choisissant un pion, pour gagner, qu'est-ce qu'on doit éviter, qui doit-on attaquer, vu qu'il y a plusieurs adversaires?. Ton jeux s'adresse à des gens jouent à pleins de jeux et qui voyent où tu veux en venir. Moi, je suis dans le noir, parce qu'il n'y a pas d'explications pour des gens ignares comme moi. Il serait mieux que des gens plus douès que moi prennent le relai, je suis hors-course. @+ J'ai juste voulu voir en vitesse, ton programme pour voir ce que c'était. Mais je l'ai déjà dit sur le forum, je ne suis pas intéressé par les jeux. |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: les boules qui mangent des boules Ven 26 Fév 2010 - 11:45 | |
| Oui, c'est ce que je dit: - Citation :
- Et pour finir, je dirais que le jeu lui même n'a pas trop d'intérêt car il n'y a pas de stratégie, c'est du hasard. Mais il y a des trucs intéressants de programmation (par EX: le lancé des dés est plutot réussi). Réalisé en 3D, çà pourrait être plus sympa.
Tu as raison, c'est pas tellement le jeu qui compte. Je voulais m'exercer à programmer en 2D. A+ | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Ven 26 Fév 2010 - 14:30 | |
| Je vois qu'il n'y a pas que moi qui fait des programmes qui flanquent les boules ! Effectivement, comme le dit cosmos, un petit système d'aide intégré au jeu, qui expliquerait clairement le but et les règles ne serait pas de trop. J'ai un écran 1024x768 et effectivement, c'est un peu grand. Félicitation, cependant pour cette belle réalisation pleine de couleurs. PS: quand on choisit de mettre un autre nom, l'édit reste apparent pendant le jeu. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: les boules qui mangent des boules Ven 26 Fév 2010 - 16:12 | |
| Exact JJN4, il faut définir les options des joueurs avant de commencer.
Le but du jeu (à part de vous flanquer les boules) c'est d'être le premier à atteindre les 30 points avec la couleur que tu as choisie (quand tu gagnes une attaque, la boule passe dans ton camp). Pour cela, si tu es seul à jouer, tu sélectionnes le nom du joueur et tu cliques sur l'option "gerer par TERMINATOR" par exemple pour la couleur verte. Tu peux, si tu le souhaites, gérer toutes les couleurs. Tu attaques la couleur que tu veux, le dé fait le reste. Attention: si tu attaques la couleur qui a le plus de points, tu prends le risque de perdre l'attaque et donc de lui attribuer un point. Les boules qui ont grossies ne peuvent plus être jouées (elles n'ont plus faim). Pour le tuto, franchement, il suffit de faire une partie, pour piger.
Un conseil, prend plusieurs joueurs tu vois mieux ce qui se passe et diminue la variable nbpg ligne 47 (je crois), ainsi la partie est plus courte.
A+
Il faudra que je revois le bébé pour la résolution d'écran | |
| | | Contenu sponsorisé
| Sujet: Re: les boules qui mangent des boules | |
| |
| | | | les boules qui mangent des boules | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |