Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

Le Deal du moment : -40%
Tefal Ingenio Emotion – Batterie de cuisine 10 ...
Voir le deal
59.99 €

descriptionpacman - [résolu] Création du jeu PACMAN Empty[résolu] Création du jeu PACMAN

more_horiz
Bonsoir,

Histoire d'animer ce forum un peu calme, je propose de créer un jeu... Pacman !
Non pas tout seul dans son coin... mais avec plusieurs personnes !

On s'affectera à chacun une partie du programme ou des tâches et on avancera tranquillement en proposant ces évolutions sur le forum.

Des volontaires ?

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Je n'ai pas le niveau (un jour, je comprendrais les greffons !!!), mais je trouve que c'est une très bonne idée, et j'attends avec impatience le résultat !!!

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
ça veut dire quoi, je n'ai pas le niveau... on est là pour apprendre justement !

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Je n'ai pas le niveau (un jour, je comprendrais les greffons !!!), mais je trouve que c'est une très bonne idée, et j'attends avec impatience le résultat !!! (il m'a enlevé les mots de la bouche :O)


Bah je veux bien qu'on me donne un petit truc à faire moi mais faut que ce soit simple et qu'on vienne pas râler si c'est tout moche hihi


Je propose 500 niveaux de jeu, 20 modes de difficulté, des graphismes en 3D Isométrique, un Mode Multijoueurs 32 joueurs max sur serveurs en ligne, Différents modes de jeu (tournois, coop, duel, match à mort), des tas de powers-up à récupérer sur les maps, un gameplay typé jeu de rôle avec xp et évolution permettant par exemple à haut niveau que notre petit pacman jaune lance des ogives nucléaire, et aussi divers skins et customisations tunings débloquables et enfin pour les musiques on pourrais faire appel à un orchestre symphonique pis pour les bruitages on peut chercher des gars dans le domaine du cinéma hollywoodien.

Temps de développement estimé : 1 mois

Nombre de linottiens requis : 2 000

Allez on recrute !

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Voici un premier début...

Pour l'instant, le programme ne sait qu'afficher le tableau du jeu.

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Maintenant, on peut bouger pacman !
Il ne manque plus que les fantômes !

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
La téléportation fonctionne <img src=" title="Smile" />

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Cool ça avance <img src=" title="Smile" /> super boulot, garde moi un petit truc à faire pour jeudi x) (je me repose en début de semaine maladie oblige) (à noter j'ai jamais jouer de ma vie à un pacman donc je peux pas comparer xD)

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Merci <img src=" title="Smile" />

J'avance plus vite que prévu en fait !
Les fantômes sont arrivés !

Je te laisse regarder le code de pacman quand tu pourras.
Ensuite, il restera à gérer les vies et les scores.

Et enfin, les bonus !

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
("BOGUE Linotte 1.2.4, la ligne suivante ne marche pas si on n'utilise
pas la variable bogue (cf plus haut).
Le codeur de Linotte programme comme ses pieds !")


MDR


Bon j'apporte ma modeste contribution j'espère que ça te plaira...


J'ai fait le système de vies...

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Oups,

Est-ce que tu peux reporter tes modifications dans cette version ?

J'ai introduit le fonctionnement des "boules" pour manger les montres...

Je n'y touche plus en attendant ton feu vert ! <img src=" title="Smile" />

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Voili voilou ^^

Comme je connais mal pac-man je peux pas dire si ce que tu as fais est conforme à l'original, en tout cas je trouve ça vraiment pas mal moi ^^

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Peux-tu me déposer le livre directement dans le message entre les balises

Code:

.
.
.

.
De là où je suis, je ne peux pas télécharger de fichiers ! <img src=" title="Sad" />

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz

Code:

Pac-man :

("Version :
0.
1")
Espèces :

initx & inity & posx & posy & posinitx & posinity & score & niveau est un nombre
init & télétransporté & malade & mangé est un drapeau valant faux
l'espèce partie contient score, niveau
l'espèce personnage hérite de praxinoscope et contient posx, posy, posinitx, posinity, init, initx, inity, télétransporté, malade, mangé
Grands Rôles :

GameOver est un graffiti, texte vaut "GAME OVER", position vaut 100000, taille vaut 20, x vaut 150, y vaut 250, couleur vaut "rouge"
icônelifes1 est un graphique, image vaut "pac1.
png", x vaut 380, y vaut 475, position vaut 100000
icônelifes2 est un graphique, image vaut "pac1.
png", x vaut 400, y vaut 475, position vaut 100000
lifes est un graffiti, texte vaut "LIFES", couleur vaut "jaune", taille vaut 10, position vaut 100000, x vaut 300, y vaut 490
vie est un nombre valant 3
vitesse est un nombre valant 10
taille est un nombre valant 15
x est un nombre valant 50
y est un nombre valant 30
image jeu est une toile, couleur vaut "noir", largeur vaut 500, hauteur vaut 500
fond est un graphique,y vaut 150, image vaut "logo.
png", position vaut 3,.
.
.

transparence vaut 10
quitter est un nombre valant 0
pacman est un personnage, position vaut 1, .
.
.

image0 vaut "pac1.
png", .
.
.

image1 vaut "pac2.
png"
fantome est un personnage, position vaut 1, .
.
.

image0 vaut "fantome1.
png", .
.
.

image1 vaut "fantome2.
png", .
.
.

image2 vaut "fantome3.
png", .
.
.

image3 vaut "fantome4.
png", .
.
.

image4 vaut "fantome5.
png", .
.
.

image5 vaut "fantome6.
png", .
.
.

image6 vaut "fantome7.
png"
fantome1 est un personnage, position vaut 1, .
.
.

image0 vaut "fantome1.
png", .
.
.

image1 vaut "fantome2.
png", .
.
.

image2 vaut "fantome3.
png", .
.
.

image3 vaut "fantome4.
png", .
.
.

image4 vaut "fantome5.
png", .
.
.

image5 vaut "fantome6.
png", .
.
.

image6 vaut "fantome7.
png"
fantome2 est un personnage, position vaut 1, .
.
.

image0 vaut "fantome1.
png", .
.
.

image1 vaut "fantome2.
png", .
.
.

image2 vaut "fantome3.
png", .
.
.

image3 vaut "fantome4.
png", .
.
.

image4 vaut "fantome5.
png", .
.
.

image5 vaut "fantome6.
png", .
.
.

image6 vaut "fantome7.
png"
fantome3 est un personnage, position vaut 1, .
.
.

image0 vaut "fantome1.
png", .
.
.

image1 vaut "fantome2.
png", .
.
.

image2 vaut "fantome3.
png", .
.
.

image3 vaut "fantome4.
png", .
.
.

image4 vaut "fantome5.
png", .
.
.

image5 vaut "fantome6.
png", .
.
.

image6 vaut "fantome7.
png"
niveau courant est un casier de nombre vide
niveau courant image est un casier de graphique vide
direction est un texte vide
touches est un casier de texte valant "gauche", "droite", "haut", "bas"
("Pièces :
")
a est un nombre valant 27
b est un nombre valant -27
c est un nombre valant 10
d est un nombre valant 11
e est un nombre valant 12
f est un nombre valant 13
g est un nombre valant 14
sensh est un casier de texte valant "gauche", "droite"
sensv est un casier de texte valant "haut", "bas"
boules est un casier de graphique vide

Décor :

Rôles :

§page de garde est une toile
§image0 est un graphique, image vaut "vide.
png"
§image1 est un graphique, image vaut "diamant.
png"
§image2 est un graphique, image vaut "vide.
png"
§image3 est un graphique, image vaut "pack.
png"
§image4 est un graphique, image vaut "mur_h.
png"
§image5 est un graphique, image vaut "mur_v.
png"
§image6 est un graphique, image vaut "mur_gh.
png"
§image7 est un graphique, image vaut "mur_dh.
png"
§image8 est un graphique, image vaut "mur_gb.
png"
§image9 est un graphique, image vaut "mur_db.
png"
§image10 est un graphique, image vaut "vide.
png"
pieces est un casier de graphique valant image0, image1, .
.
.

image2, image3, image4, image5, image6, image7, image8, image9, .
.
.

image10, image10, image10, image10, image10
§niveau1 est un casier de nombre valant 28, 31 ("largeur X hauteur") , .
.
.

6,4,4,4,4,4,4,4,4,4,4,4,4,7,6,4,4,4,4,4,4,4,4,4,4,4,4,7, .
.
.

5,1,1,1,1,1,1,1,1,1,1,1,1,5,5,1,1,1,1,1,1,1,1,1,1,1,1,5, .
.
.

5,1,6,4,4,7,1,6,4,4,4,7,1,5,5,1,6,4,4,4,7,1,6,4,4,7,1,5, .
.
.

5,3,5,0,0,5,1,5,0,0,0,5,1,5,5,1,5,0,0,0,5,1,5,0,0,5,3,5, .
.
.

5,1,8,4,4,9,1,8,4,4,4,9,1,8,9,1,8,4,4,4,9,1,8,4,4,9,1,5, .
.
.

5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5, .
.
.

5,1,6,4,4,7,1,6,7,1,6,4,4,4,4,4,4,7,1,6,7,1,6,4,4,7,1,5, .
.
.

5,1,8,4,4,9,1,5,5,1,8,4,4,7,6,4,4,9,1,5,5,1,8,4,4,9,1,5, .
.
.

5,1,1,1,1,1,1,5,5,1,1,1,1,5,5,1,1,1,1,5,5,1,1,1,1,1,1,5, .
.
.

8,4,4,4,4,7,1,5,8,4,4,7,0,5,5,0,6,4,4,9,5,1,6,4,4,4,4,9, .
.
.

0,0,0,0,0,5,1,5,6,4,4,9,0,8,9,0,8,4,4,7,5,1,5,0,0,0,0,0, .
.
.

0,0,0,0,0,5,1,5,5,0,0,0,0,0,0,0,0,0,0,5,5,1,5,0,0,0,0,0, .
.
.

0,0,0,0,0,5,1,5,5,0,6,4,4,g,g,4,4,7,0,5,5,1,5,0,0,0,0,0, .
.
.

4,4,4,4,4,9,1,8,9,0,5,0,0,g,g,0,0,5,0,8,9,1,8,4,4,4,4,4, .
.
.

a,0,0,0,0,0,1,0,0,0,5,0,0,d,e,0,0,5,0,0,0,1,0,0,0,0,0,b, .
.
.

4,4,4,4,4,7,1,6,7,0,5,0,0,c,f, 0,0,5,0,6,7,1,6,4,4,4,4,4, .
.
.

0,0,0,0,0,5,1,5,5,0,5,0,0,0,0,0,0,5,0,5,5,1,5,0,0,0,0,0, .
.
.

0,0,0,0,0,5,1,5,5,0,8,4,4,4,4,4,4,9,0,5,5,1,5,0,0,0,0,0, .
.
.

0,0,0,0,0,5,1,5,5,0,0,0,0,0,0,0,0,0,0,5,5,1,5,0,0,0,0,0, .
.
.

6,4,4,4,4,9,1,8,9,0,4,4,4,7,6,4,4,4,0,8,9,1,8,4,4,4,4,7, .
.
.

5,1,1,1,1,1,1,1,1,1,1,1,1,5,5,1,1,1,1,1,1,1,1,1,1,1,1,5, .
.
.

5,1,6,4,4,7,1,6,4,4,4,7,1,5,5,1,6,4,4,4,7,1,6,4,4,7,1,5, .
.
.

5,1,8,4,7,5,1,8,4,4,4,9,1,8,9,1,8,4,4,4,9,1,5,6,4,9,1,5, .
.
.

5,3,1,1,5,5,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,5,5,1,1,3,5, .
.
.

8,4,7,1,5,5,1,6,7,1,6,4,4,4,4,4,4,7,1,6,7,1,5,5,1,6,4,9, .
.
.

6,4,9,1,8,9,1,5,5,1,8,4,4,7,6,4,4,9,1,5,5,1,8,9,1,8,4,7, .
.
.

5,1,1,1,1,1,1,5,5,1,1,1,1,5,5,1,1,1,1,5,5,1,1,1,1,1,1,5, .
.
.

5,1,6,4,4,4,4,9,8,4,4,7,1,5,5,1,6,4,4,9,8,4,4,4,4,7,1,5, .
.
.

5,1,8,4,4,4,4,4,4,4,4,9,1,8,9,1,8,4,4,4,4,4,4,4,4,9,1,5, .
.
.

5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5, .
.
.

8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9
niveaux est un casier de casier valant niveau1
("Acteurs du jeu")
jeu est une partie ,niveau vaut 0
Actions :

quitter vaut 0
("Initialiser les moteurs :
")
appelle gestion touches
parcours affichage niveau avec niveaux{niveau@jeu}
("on commence le jeu :
")
projette fond
projette lifes
projette icônelifes1
projette icônelifes2
projette pacman
projette fantome & fantome1 & fantome2 & fantome3
appelle animation pacman
appelle animation fantome
appelle moteur pacman
appelle moteur fantome avec fantome
appelle moteur fantome avec fantome1
appelle moteur fantome avec fantome2
appelle moteur fantome avec fantome3
appelle clignotement
parcours initialisation des personnages
("boucle infinie")
tant que 1 est différent de 2, lis
attends 1 seconde
ferme
termine

Affichage niveau :

Rôles :

*niveau est un casier de nombre
largeur est un nombre valant niveau{0}
§largeur temporaire est un nombre
hauteur est un nombre valant niveau{1}
§hauteur temporaire est un nombre
§position est un nombre valant 2
image fond est un rectangle, couleur vaut "noir", plein vaut "oui", largeur vaut largeur * taille, hauteur vaut hauteur * taille
§bug est un nombre
Actions :

vide niveau courant
efface la toile
projette image jeu
parcours calculer x et y avec largeur, hauteur,largeur@image fond, hauteur@image fond
x@image fond vaut x
y@image fond vaut y
("On boucle est affiche le niveau :
")
("affiche niveau")
projette image fond
pour chaque hauteur, lis
largeur temporaire vaut 0
pour chaque largeur, lis
si ((niveau{position}) inf 20) et ((niveau{position}) sup 0) est vrai alors lis
ajoute affichage image (niveau{position}, largeur temporaire, hauteur temporaire) dans niveau courant image
ferme
sinon, ajoute affichage image (0, largeur temporaire, hauteur temporaire) dans niveau courant image
bug vaut niveau{position}
si bug égal c est vrai alors lis
bug vaut g
ferme
sinon, si bug égal d est vrai alors lis
bug vaut g
ferme
sinon, si bug égal e est vrai alors lis
bug vaut g
ferme
sinon, si bug égal f est vrai alors lis
bug vaut g
ferme
ajoute #bug dans niveau courant
position vaut position + 1
largeur temporaire vaut largeur temporaire + 1
ferme
hauteur temporaire vaut hauteur temporaire + 1
ferme
reviens

Affichage image :

Rôles :

*type est un nombre
*largeur est un nombre
*hauteur est un nombre
§image est un casier de graphique
pieces est un casier de graphique
Actions :

si type est égale à 2 alors lis
x@pacman vaut x+largeur*taille
y@pacman vaut y+hauteur*taille
posx@pacman vaut largeur
posy@pacman vaut hauteur
posinitx@pacman vaut largeur
posinity@pacman vaut hauteur
initx@pacman vaut x@pacman
inity@pacman vaut y@pacman
ferme
sinon, si type est égale à c alors lis
x@fantome vaut x+largeur*taille
y@fantome vaut y+hauteur*taille
posx@fantome vaut largeur
posy@fantome vaut hauteur
posinitx@fantome vaut largeur
posinity@fantome vaut hauteur
initx@fantome vaut x@fantome
inity@fantome vaut y@fantome
ferme
sinon, si type est égale à d alors lis
x@fantome1 vaut x+largeur*taille
y@fantome1 vaut y+hauteur*taille
posx@fantome1 vaut largeur
posy@fantome1 vaut hauteur
posinitx@fantome1 vaut largeur
posinity@fantome1 vaut hauteur
initx@fantome1 vaut x@fantome1
inity@fantome1 vaut y@fantome1
ferme
sinon, si type est égale à e alors lis
x@fantome2 vaut x+largeur*taille
y@fantome2 vaut y+hauteur*taille
posx@fantome2 vaut largeur
posy@fantome2 vaut hauteur
posinitx@fantome2 vaut largeur
posinity@fantome2 vaut hauteur
initx@fantome2 vaut x@fantome2
inity@fantome2 vaut y@fantome2
ferme
sinon, si type est égale à f alors lis
x@fantome3 vaut x+largeur*taille
y@fantome3 vaut y+hauteur*taille
posx@fantome3 vaut largeur
posy@fantome3 vaut hauteur
posinitx@fantome3 vaut largeur
posinity@fantome3 vaut hauteur
initx@fantome3 vaut x@fantome3
inity@fantome3 vaut y@fantome3
ferme
ajoute #(pieces {type}) dans image
si type est égale à 3 alors lis
ajoute image{0} dans boules
ferme
x@(image{0}) vaut x+largeur*taille
y@(image{0}) vaut y+hauteur*taille
projette image{0}
retourne image{0}

Calculer X et Y :

Rôles :

*largeur est un nombre
*hauteur est un nombre
*delta l est un nombre
*delta h est un nombre
Actions :

x vaut ( largeur@image jeu - largeur ) / 2 - delta l / 2
y vaut ( hauteur@image jeu - hauteur) / 2 - delta h / 2
reviens

Gestion touches :

Rôles :

§t est un texte
§i est un nombre
Actions :

Vide les touches
Tant que 1 est différent de 2, lis
temporise
t vaut touche
cherche i, la position de t dans touches
si i est différent de 0 alors direction vaut t
Ferme

Moteur fantome :

Rôles :

*monstre est un personnage
§sens est un texte valant "haut"
§sens temporaire est un texte
§dé est un nombre
§positionx est un texte
§positiony est un texte
largeur & hauteur est un nombre
§temps est un nombre
Actions :

Tant que 1 est différent de 2, lis
si init@monstre est vrai alors lis
posx@monstre vaut posinitx@monstre
posy@monstre vaut posinity@monstre
x@monstre vaut initx@monstre
y@monstre vaut inity@monstre
init@monstre vaut faux
malade@monstre vaut faux
mangé@monstre vaut faux
sens vaut "haut"
ferme
("Gestion de la vitesse")
si malade@monstre est vrai alors temps vaut vitesse *2
sinon, temps vaut vitesse
Si sens est égale à "haut" alors lis
si vérifier position fantome(posx@monstre,posy@monstre-1) est vrai alors lis
pour chaque 15, lis
y@monstre vaut y@monstre - 1
("Est-ce que j'ai de quoi manger ?")
Parcours tester contacte avec monstre
attends temps milliseconde
ferme
posy@monstre vaut posy@monstre - 1
ferme
sinon, lis
sens temporaire vaut sens
vide sens
ferme
Ferme
Si sens est égale à "bas" alors lis
si vérifier position fantome(posx@monstre,posy@monstre+1) est vrai alors lis
("Il ne doit pas revenir dans la boite")
si (niveau courant{(posx@monstre) + largeur * (posy@monstre)}) diff g est vrai alors lis
pour chaque 15, lis
y@monstre vaut y@monstre + 1
("Est-ce que j'ai de quoi manger ?")
Parcours tester contacte avec monstre
attends temps milliseconde
ferme
posy@monstre vaut posy@monstre + 1
ferme
sinon, sens vaut "haut"
ferme
sinon, lis
sens temporaire vaut sens
vide sens
ferme
Ferme
Si sens est égale à "droite" alors lis
si vérifier position fantome(posx@monstre-1,posy@monstre) est vrai alors lis
pour chaque 15, lis
x@monstre vaut x@monstre - 1
("Est-ce que j'ai de quoi manger ?")
Parcours tester contacte avec monstre
attends temps milliseconde
ferme
posx@monstre vaut posx@monstre - 1
ferme
sinon, lis
sens temporaire vaut sens
vide sens
ferme
Ferme
Si sens est égale à "gauche" alors lis
si vérifier position fantome(posx@monstre+1,posy@monstre) est vrai alors lis
pour chaque 15, lis
x@monstre vaut x@monstre + 1
("Est-ce que j'ai de quoi manger ?")
Parcours tester contacte avec monstre
attends temps milliseconde
ferme
posx@monstre vaut posx@monstre + 1
ferme
sinon, lis
sens temporaire vaut sens
vide sens
ferme
Ferme
si sens est égal à "" alors lis
("Il est face à un mur")
sens vaut nouvelle direction fantome (sens temporaire)
ferme
sinon, lis
si niveau courant{(posx@monstre) + largeur * (posy@monstre)} est différent de g alors lis
("At-il un mur sur son côté ?")
("Dé vaut 2
mélange dé")
Dé vaut 1
si dé est égal à 1 alors lis
si malade@monstre est faux alors lis
("On ne tourne que si on va dans le sens de pacman.
.
.
.
miam, j'ai faim !")
si posx@monstre est plus petit que posx@pacman alors positionx vaut "gauche"
si posx@monstre est plus grand que posx@pacman alors positionx vaut "droite"
si posy@monstre est plus petit que posy@pacman alors positiony vaut "bas"
si posy@monstre est plus grand que posy@pacman alors positiony vaut "haut"
ferme
sinon, si mangé@monstre est vrai alors lis
("Chui malade, je rentre !")
si posx@monstre est plus petit que largeur / 2 alors positionx vaut "gauche"
si posx@monstre est plus grand que largeur / 2 alors positionx vaut "droite"
si posy@monstre est plus petit que hauteur / 2 alors positiony vaut "bas"
si posy@monstre est plus grand que hauteur / 2 alors positiony vaut "haut"
ferme
sinon, lis
("Sauve qui peut !")
si posx@monstre est plus petit que posx@pacman alors positionx vaut "droite"
si posx@monstre est plus grand que posx@pacman alors positionx vaut "gauche"
si posy@monstre est plus petit que posy@pacman alors positiony vaut "haut"
si posy@monstre est plus grand que posy@pacman alors positiony vaut "bas"
ferme
si sens est égale à "gauche" alors lis
("on regarde en haut")
si vérifier position fantome(posx@monstre,posy@monstre-1) est vrai alors lis
si positiony est égal à "haut" alors sens vaut "haut"
ferme
sinon, lis
("on regarde en bas")
si vérifier position fantome(posx@monstre,posy@monstre+1) est vrai alors lis
si positiony est égal à "bas" alors sens vaut "bas"
ferme
ferme
ferme
sinon, si sens est égale à "bas" alors lis
("on regarde à droite")
si vérifier position fantome(posx@monstre -1,posy@monstre) est vrai alors lis
si positionx est égal à "droite" alors sens vaut "droite"
ferme
sinon, lis
("on regarde à gauche")
si vérifier position fantome(posx@monstre +1,posy@monstre) est vrai alors lis
si positionx est égal à "gauche" alors sens vaut "gauche"
ferme
ferme
ferme
sinon, si sens est égale à "droite" alors lis
("on regarde en haut")
si vérifier position fantome(posx@monstre,posy@monstre-1) est vrai alors lis
si positiony est égal à "haut" alors sens vaut "haut"
ferme
sinon, lis
("on regarde en bas")
si vérifier position fantome(posx@monstre,posy@monstre+1) est vrai alors lis
si positiony est égal à "bas" alors sens vaut "bas"
ferme
ferme
ferme
sinon, si sens est égale à "haut" alors lis
("on regarde à droite")
si vérifier position fantome(posx@monstre -1,posy@monstre) est vrai alors lis
si positionx est égal à "droite" alors sens vaut "droite"
ferme
sinon, lis
("on regarde à gauche")
si vérifier position fantome(posx@monstre +1,posy@monstre) est vrai alors lis
si positionx est égal à "gauche" alors sens vaut "gauche"
ferme
ferme
ferme
ferme
ferme
ferme
attends vitesse milliseconde
parcours télétransportation avec posx@monstre,posy@monstre,monstre
Ferme

Nouvelle direction fantome :

Rôles :

*sens est un texte
§dé est un nombre valant 2
§t est un nombre
Actions :

mélange dé
cherche t, la position de sens dans sensv
si t est différent de 0 alors lis
sens vaut sensh {dé}
ferme
sinon, sens vaut sensv {dé}
Retourne sens

Moteur pacman :

Rôles :

§temp est un texte
Actions :

Tant que 1 est différent de 2, lis
si init@pacman est vrai alors lis
posx@pacman vaut posinitx@pacman
posy@pacman vaut posinity@pacman
x@pacman vaut initx@pacman
y@pacman vaut inity@pacman
init@pacman vaut faux
ferme
temp vaut direction
Si temp est égale à "gauche" alors lis
si vérifier position(posx@pacman-1,posy@pacman) est vrai alors lis
angle@pacman vaut 0
pour chaque 15, lis
x@pacman vaut x@pacman - 1
attends vitesse milliseconde
ferme
posx@pacman vaut posx@pacman - 1
ferme
Ferme
Sinon, si temp est égale à "droite" alors lis
si vérifier position(posx@pacman+1,posy@pacman) est vrai alors lis
angle@pacman vaut 180
pour chaque 15, lis
x@pacman vaut x@pacman + 1
attends vitesse milliseconde
ferme
posx@pacman vaut posx@pacman + 1
ferme
Ferme
Sinon, si temp est égale à "bas" alors lis
si vérifier position(posx@pacman,posy@pacman+1) est vrai alors lis
angle@pacman vaut 270
pour chaque 15, lis
y@pacman vaut y@pacman + 1
attends vitesse milliseconde
ferme
posy@pacman vaut posy@pacman + 1
Ferme
Ferme
Sinon, si temp est égale à "haut" alors lis
si vérifier position(posx@pacman,posy@pacman-1) est vrai alors lis
angle@pacman vaut 90
pour chaque 15, lis
y@pacman vaut y@pacman - 1
attends vitesse milliseconde
ferme
posy@pacman vaut posy@pacman - 1
Ferme
Ferme
attends vitesse milliseconde
parcours télétransportation avec posx@pacman,posy@pacman,pacman
Ferme

Animation pacman :

Actions :

Tant que 1 est différent de 2, lis
Pour chaque 2, lis
Attends vitesse * 3 * 10 millisecondes
trame@pacman vaut joker
Ferme
Ferme

Animation fantome :

Actions :

Tant que 1 est différent de 2, lis
Pour chaque 3, lis
Attends vitesse * 50 millisecondes
parcours change apparance avec fantome, joker
parcours change apparance avec fantome1, joker
parcours change apparance avec fantome2, joker
parcours change apparance avec fantome3, joker
Ferme
Ferme

Change apparance :

Rôles :

*monstre est un personnage
*trame est un nombre
Actions :

si mangé@monstre est vrai alors trame@monstre vaut 6
sinon, si malade@monstre est vrai alors trame@monstre vaut trame + 3
sinon, trame@monstre vaut trame
Reviens

Télétransportation :

Rôles :

*tx est un nombre
*ty est un nombre
*spock est un personnage
largeur est un nombre
§type est un nombre valant niveau courant{tx + largeur * ty}
Actions :

si type sup 20 est vrai alors lis
("Le type correspond au delta")
("angle@spock vaut 180")
télétransporté@spock vaut vrai
pour chaque type, lis
pour chaque 15, lis
x@spock vaut x@spock + 1
attends vitesse / 10 milliseconde
ferme
posx@spock vaut posx@spock + 1
ferme
télétransporté@spock vaut faux
ferme
si type inf 0 est vrai alors lis
("Le type correspond au delta")
("angle@spock vaut 0")
télétransporté@spock vaut vrai
pour chaque abs(type), lis
pour chaque 15, lis
x@spock vaut x@spock - 1
attends vitesse / 10 milliseconde
ferme
posx@spock vaut posx@spock - 1
ferme
télétransporté@spock vaut faux
ferme
Reviens

Vérifier position :

Rôles :

*tx est un nombre
*ty est un nombre
largeur est un nombre
§type est un nombre valant niveau courant{tx + largeur * ty}
Actions :

si type égal 1 est vrai alors lis
("BOGUE Linotte 1.
2.
4, la ligne suivante ne marche pas si on n'utilise
pas la variable bogue (cf plus haut).

Le codeur de Linotte programme comme ses pieds !")
niveau courant{tx + largeur * ty} vaut 0
si transparence@(niveau courant image{tx + largeur * ty}) est différent de 0 alors lis
appelle effacer image avec niveau courant image{tx + largeur * ty}
ferme
retourne vrai
ferme
sinon,si type égal 3 est vrai alors lis
niveau courant{tx + largeur * ty} vaut 0
Ôte niveau courant image{tx + largeur * ty} de boules
Efface niveau courant image{tx + largeur * ty}
appelle pac pac pac
retourne vrai
ferme
sinon, si ((type égal 2)) ou (type égal 0) est vrai alors lis
retourne vrai
ferme
sinon, si (type sup 20) ou (type inf 0) est vrai alors lis
retourne vrai
ferme
sinon, lis
direction vaut ""
retourne faux
ferme

Vérifier position fantome :

Rôles :

*tx est un nombre
*ty est un nombre
largeur est un nombre
§type est un nombre valant niveau courant{tx + largeur * ty}
Actions :

si type égal 3 est vrai alors lis
retourne vrai
ferme
sinon, si ((type égal 2)) ou (type égal 0) est vrai alors lis
retourne vrai
ferme
sinon, si (type sup 20) ou (type inf 0) est vrai alors lis
retourne vrai
ferme
sinon, si type égal 1 est vrai alors lis
retourne vrai
ferme
sinon, si type égal g est vrai alors lis
retourne vrai
ferme
sinon, lis
retourne faux
ferme

Effacer image :

Rôles :

*g est un graphique
§boucle est un nombre valant transparence@g
§i est un nombre
Actions :

Pour i de boucle à 0 , lis
attends vitesse milliseconde
transparence@g vaut i
Ferme
reviens

Tester contacte :

Rôles :

*monstre est un personnage
Actions :

si monstre est en collision avec pacman alors lis
si posy@monstre est égal à posy@pacman alors lis
si posx@monstre est égal à posx@pacman alors lis
si télétransporté@pacman est faux alors lis
si malade@monstre est faux alors lis
soustrais 1 dans vie
va vers vies
ferme
sinon, mangé@monstre vaut vrai
ferme
ferme
ferme
ferme
Reviens

Vies :

Actions :

si vie est égale à 0 alors parcours game over
si vie est égale à 2 alors lis
efface icônelifes2
va vers respawn
ferme
si vie est égale à 1 alors lis
efface icônelifes1
va vers respawn
ferme

Respawn :

Actions :

init@pacman vaut vrai
init@fantome vaut vrai
init@fantome1 vaut vrai
init@fantome2 vaut vrai
init@fantome3 vaut vrai
va vers moteur fantome

Game Over :

Actions :

Projette GameOver
Attends 3 secondes
Termine

Clignotement :

Rôles :

§boucle est un nombre vide
Actions :

Tant que 1 est égal à 1, lis
pour chaque boules, lis
boucle vaut boucle + 2
transparence de joker vaut abs (cos boucle) * 100
attends vitesse millisecondes
ferme
Ferme
Reviens

Pac pac pac :

Actions :

malade@fantome vaut vrai
malade@fantome1 vaut vrai
malade@fantome2 vaut vrai
malade@fantome3 vaut vrai
attends 20 secondes
parcours initialisation des personnages
Reviens

Initialisation des personnages :

Actions :

malade@fantome vaut faux
malade@fantome1 vaut faux
malade@fantome2 vaut faux
malade@fantome3 vaut faux
mangé@fantome vaut faux
mangé@fantome1 vaut faux
mangé@fantome2 vaut faux
mangé@fantome3 vaut faux
Reviens

Je crois que j'ai raté le copier-coller quelque part car chez moi ça passe pas quand je re copie-colli dans l'atelier Oo

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
C'est marrant quand je copi-colli entièrement le livre et que je le colle dans un nouveau livre ça foire Oo un nouveau bug Linotte ?

ça me le fait seulement avec le Pac-man, pas avec mon mmorpg :O


Edit : ça me le fait également avec la version Pac-man sans mes modifications, quand je lance j'ai un écran noir et avec mes modifications un écran noir + "Lifes"

Copier-coller ennemi de Pac-Man ?

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
J'ai eu la même chose... je ne sais pas de quoi ça vient !

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Voici encore une nouvelle version avec l'affichage du score et quelques boques corrigés.
J'ai inclus les modifications de zamirh.

800 lignes pour un pacman ! pas mal ? <img src=" title="Smile" />

bon jeu !

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Ouaip c'est top (j'ai fait 400 ouéééé) j'aurais aimé t'aider un peu plus mais tu nous as programmé ça à la vitesse de l'éclair xDDD

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
[quote=zamirh]j'aurais aimé t'aider un peu plus mais tu nous as programmé ça à la vitesse de l'éclair[/quote]
Désolé ! mais j'étais bien lancé ! ça fait 6 mois que je suis à fond dans le moteur de Linotte et j'avais besoin de souffler un peu <img src=" title="Smile" /> et ça fait du bien de programmer un jeu <img src=" title="Smile" /> et de programmer en Linotte !

De toute façon, pac-man est une bonne base pour travailler sur un projet... bomberman !
Le programme en lui même, va ressembler à pac-man mais sauf que là... c'est en réseau entre plusieurs joueurs :

http://fr.wikipedia.org/wiki/Bomberman

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Huhuhu j'ai hâte, je suppose qu'on fera ça avec la version 1.3 ? x)

(de mon coté j'ai des sprites et du mapping à faire sur mon jeu, faut que je m'y mette xD je me lance pas dans la programmation pure de mon jeu tant que la 1.3 n'est pas sortie (pour éviter d'avoir à tout retaper en intégrant le réseau) donc comme j'ai probablement quelques mois à attendre je dois en profiter pour faire du contenu graphique x))

En tout cas un grand merci pour tout le travail que tu fournis pour pas un centime !

Si t'as envie que je te programme un truc sympa pour t'amuser un peu n'hésite pas à me demander ça me fera une excuse pour ne pas faire mes sprites x)

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
Une petite copie d'écran sous linux....

descriptionpacman - [résolu] Création du jeu PACMAN EmptyCréation du jeu PACMAN

more_horiz
[quote=zamirh]En tout cas un grand merci pour tout le travail que tu fournis pour pas un centime ![/quote]
1, ça me fait plaisir de le faire, car quand on croit à un projet, il faut aller jusqu'au bout de son idée.
2, en plus, j'ai des utilisateurs !

Donc, ça me motive encore plus !

descriptionpacman - [résolu] Création du jeu PACMAN EmptyRe: [résolu] Création du jeu PACMAN

more_horiz
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
power_settings_newSe connecter pour répondre