|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
PETIT JEU DE SERPENT DE BASE
Information sur la source
Description
Ba c'est un simple petit jeu de serpent de base (je débute ;-) avec gestion des points, de collisions,.... ENfin même si il est simple il reste tout de même complet.
Source
- # -*- coding: cp1252 -*-
- # Ce programme est un simple petit jeu de serpent
-
- # Les imports :
- from Tkinter import *
- from random import randrange
-
- # Définition de fonctions :
- # Fonction principale (déplacement) :
- def avancer ():
- global car_coord, step, arret_bcl, car, pts, temp
- pomme() # Création de la pomme
-
- # Déplacement du serpent proprement dit :
- i = 0
- while (i <= (len(car)-1)):
- car_coord[i][0] = car_coord[i][0] + car_coord[i][2]
- car_coord[i][1] = car_coord[i][1] + car_coord[i][3]
- canv.coords(car[i], car_coord[i][0], car_coord[i][1], car_coord[i][0] + 10, car_coord[i][1] + 10)
-
- if (i == 0):
- temp[0] = [car_coord[i][2], car_coord[i][3]]
- else :
- temp[1] = [car_coord[i][2], car_coord[i][3]]
- car_coord[i][2] = temp[0][0]
- car_coord[i][3] = temp[0][1]
- temp[0] = temp[1]
-
- # Si le serpent se coupe la partie s'arrête :
- if ((car_coord[0][0] == car_coord[i][0]) and (car_coord[0][1] == car_coord[i][1])):
- arret_bcl = 1
- i = i + 1
- # Si le serpent touche les bords il s'arrête (partie finie):
- if ((car_coord[0][0] == 0) or (car_coord[0][0] == 590)):
- arret_bcl = 1
- elif ((car_coord[0][1] == 0) or (car_coord[0][1] == 390)):
- arret_bcl = 1
-
- if (arret_bcl == 0):
- fen.after(50, avancer)
-
- #Fonction commencer :
- def commencer():
- global car_coord, car, pts, arret_bcl, temp, pom_la, pom_ov, pomx, pomy
-
- i = 0
- while (i <= (len(car)-1)): # On supprime les carrés de l'anciens serpent
- canv.delete(car[i])
- i = i + 1
- canv.delete(pom_ov) # On supprime le carré de la pomme restante à l'écran
-
- # On réinitialise les variables propres au jeu :
- pts = 0
- car = [0] *4
- car_coord = [[0, 0, 0, 0]] *4
- arret_bcl = 0
- temp = [[0,0]]*2
- pom_la, pom_ov, pomx, pomy = -1, 0, 0, 0
-
- # Création du serpent de début :
- i = 0
- while (i <= (len(car)-1)): # On enregistre les coords de chaque carrés ds car_coord
- if (i == 0):
- car_coord[i] = [300, 200, -10, 0]
- else :
- car_coord[i] = [car_coord[i-1][0] + 10, 200, -10, 0]
- # On dessine les carrés :
- car[i] = canv.create_rectangle(car_coord[i][0], car_coord[i][1], car_coord[i][0] + 10, car_coord[i][1] + 10, fill='black')
-
- i = i + 1
- avancer() # On commence la partie en invoquant la fonction avancer()
-
- #Fonction "ptites pommes vertes" :
- def pomme ():
- global pom_la, pom_ov, pomx, pomy, car, car_coord, pts
- if (pom_la == 1):
- if ((car_coord[0][0] == pomx) and (car_coord[0][1] == pomy)):
- car.append(0) # On ajoute une entrée ds la liste d'identificateur des carrés
- # On ajoute les infos propres au nvo carré :
- x, y = car_coord[len(car_coord)-1][0] - car_coord[len(car_coord)-1][2] , car_coord[len(car_coord)-1][1] - car_coord[len(car_coord)-1][3]
- stepx, stepy = car_coord[len(car_coord)-1][2], car_coord[len(car_coord)-1][3]
- car_coord.append([x, y, stepx, stepy])
- # On affiche le nvo carré :
- car[len(car)-1] = canv.create_rectangle(x, y, x+10, y+10, fill='black')
-
- pts = pts + 10 # On incrémente les points de 10
- lb_pts.configure(text="Points = " + str(pts)) # On met à jour le label "points"
- pom_la = 0
- else:
- pomx, pomy = (randrange(57) + 1)*10, (randrange(38) + 1)*10
- if (pom_la != 0):
- pom_ov = canv.create_rectangle(pomx, pomy, pomx+10, pomy+10, fill='green')
- else :
- canv.coords(pom_ov, pomx, pomy, pomx+10, pomy+10)
- pom_la = 1
-
- # Fonction de déplcament spécifique à chaque touche :
- def left(event):
- global car_coord
- if (car_coord[0][2] != 10):
- car_coord[0][2] = -10
- car_coord[0][3] = 0
-
- def right(event):
- global car_coord
- if (car_coord[0][2] != -10):
- car_coord[0][2] = 10
- car_coord[0][3] = 0
-
- def up(event):
- global car_coord
- if (car_coord[0][3] != 10):
- car_coord[0][2] = 0
- car_coord[0][3] = -10
-
- def down(event):
- global car_coord
- if (car_coord[0][3] != -10):
- car_coord[0][2] = 0
- car_coord[0][3] = 10
-
- # Définition des vrariables (utilisées en global pour certaines) :
- pts = 0 # Nbr de points
- car = [0] *4 # Identifiants de chaque carré (5 au début)
- car_coord = [[0, 0, 0, 0]] *4 # Coords de chaque carré + pas en x et y pour chaque carré
- arret_bcl = 0 # Variable de "condition" pour quitter la fonction "avancer"
- temp = [[0,0]]*2 # Var temporaire utilisée pour un échange de valeurs ds la fonction "avancer"
- pom_la, pom_ov, pomx, pomy = -1, 0, 0, 0 # Var pour gérer la pomme
-
- # Création du widget maitre :
- fen = Tk()
- fen.title('Jeu de serpent by Gulius')
- fen.bind("<Left>", left)
- fen.bind("<Right>", right)
- fen.bind("<Up>", up)
- fen.bind("<Down>", down)
-
- # Création des widgets esclaves :
- Label(fen, text='Serpent by Gulius', font="weight=BOLD").grid(row=0, sticky=W, padx=10)
- lb_pts = Label(fen, text='Points = aucun')
- lb_pts.grid(row=0, column=1, sticky=E, padx=20)
- canv = Canvas(fen, width=600, height=400, bg='blue')
- canv.grid(row=1, column=0, columnspan=2)
- Button(fen, text='New game', command=commencer).grid(row=2, column=0, padx=30, pady=30)
- Button(fen, text='Quiter', command=fen.quit).grid(row=2, column=1, padx=30, pady=30)
-
- # Main :
- fen.mainloop()
-
- # After main :
- fen.destroy()
# -*- coding: cp1252 -*-
# Ce programme est un simple petit jeu de serpent
# Les imports :
from Tkinter import *
from random import randrange
# Définition de fonctions :
# Fonction principale (déplacement) :
def avancer ():
global car_coord, step, arret_bcl, car, pts, temp
pomme() # Création de la pomme
# Déplacement du serpent proprement dit :
i = 0
while (i <= (len(car)-1)):
car_coord[i][0] = car_coord[i][0] + car_coord[i][2]
car_coord[i][1] = car_coord[i][1] + car_coord[i][3]
canv.coords(car[i], car_coord[i][0], car_coord[i][1], car_coord[i][0] + 10, car_coord[i][1] + 10)
if (i == 0):
temp[0] = [car_coord[i][2], car_coord[i][3]]
else :
temp[1] = [car_coord[i][2], car_coord[i][3]]
car_coord[i][2] = temp[0][0]
car_coord[i][3] = temp[0][1]
temp[0] = temp[1]
# Si le serpent se coupe la partie s'arrête :
if ((car_coord[0][0] == car_coord[i][0]) and (car_coord[0][1] == car_coord[i][1])):
arret_bcl = 1
i = i + 1
# Si le serpent touche les bords il s'arrête (partie finie):
if ((car_coord[0][0] == 0) or (car_coord[0][0] == 590)):
arret_bcl = 1
elif ((car_coord[0][1] == 0) or (car_coord[0][1] == 390)):
arret_bcl = 1
if (arret_bcl == 0):
fen.after(50, avancer)
#Fonction commencer :
def commencer():
global car_coord, car, pts, arret_bcl, temp, pom_la, pom_ov, pomx, pomy
i = 0
while (i <= (len(car)-1)): # On supprime les carrés de l'anciens serpent
canv.delete(car[i])
i = i + 1
canv.delete(pom_ov) # On supprime le carré de la pomme restante à l'écran
# On réinitialise les variables propres au jeu :
pts = 0
car = [0] *4
car_coord = [[0, 0, 0, 0]] *4
arret_bcl = 0
temp = [[0,0]]*2
pom_la, pom_ov, pomx, pomy = -1, 0, 0, 0
# Création du serpent de début :
i = 0
while (i <= (len(car)-1)): # On enregistre les coords de chaque carrés ds car_coord
if (i == 0):
car_coord[i] = [300, 200, -10, 0]
else :
car_coord[i] = [car_coord[i-1][0] + 10, 200, -10, 0]
# On dessine les carrés :
car[i] = canv.create_rectangle(car_coord[i][0], car_coord[i][1], car_coord[i][0] + 10, car_coord[i][1] + 10, fill='black')
i = i + 1
avancer() # On commence la partie en invoquant la fonction avancer()
#Fonction "ptites pommes vertes" :
def pomme ():
global pom_la, pom_ov, pomx, pomy, car, car_coord, pts
if (pom_la == 1):
if ((car_coord[0][0] == pomx) and (car_coord[0][1] == pomy)):
car.append(0) # On ajoute une entrée ds la liste d'identificateur des carrés
# On ajoute les infos propres au nvo carré :
x, y = car_coord[len(car_coord)-1][0] - car_coord[len(car_coord)-1][2] , car_coord[len(car_coord)-1][1] - car_coord[len(car_coord)-1][3]
stepx, stepy = car_coord[len(car_coord)-1][2], car_coord[len(car_coord)-1][3]
car_coord.append([x, y, stepx, stepy])
# On affiche le nvo carré :
car[len(car)-1] = canv.create_rectangle(x, y, x+10, y+10, fill='black')
pts = pts + 10 # On incrémente les points de 10
lb_pts.configure(text="Points = " + str(pts)) # On met à jour le label "points"
pom_la = 0
else:
pomx, pomy = (randrange(57) + 1)*10, (randrange(38) + 1)*10
if (pom_la != 0):
pom_ov = canv.create_rectangle(pomx, pomy, pomx+10, pomy+10, fill='green')
else :
canv.coords(pom_ov, pomx, pomy, pomx+10, pomy+10)
pom_la = 1
# Fonction de déplcament spécifique à chaque touche :
def left(event):
global car_coord
if (car_coord[0][2] != 10):
car_coord[0][2] = -10
car_coord[0][3] = 0
def right(event):
global car_coord
if (car_coord[0][2] != -10):
car_coord[0][2] = 10
car_coord[0][3] = 0
def up(event):
global car_coord
if (car_coord[0][3] != 10):
car_coord[0][2] = 0
car_coord[0][3] = -10
def down(event):
global car_coord
if (car_coord[0][3] != -10):
car_coord[0][2] = 0
car_coord[0][3] = 10
# Définition des vrariables (utilisées en global pour certaines) :
pts = 0 # Nbr de points
car = [0] *4 # Identifiants de chaque carré (5 au début)
car_coord = [[0, 0, 0, 0]] *4 # Coords de chaque carré + pas en x et y pour chaque carré
arret_bcl = 0 # Variable de "condition" pour quitter la fonction "avancer"
temp = [[0,0]]*2 # Var temporaire utilisée pour un échange de valeurs ds la fonction "avancer"
pom_la, pom_ov, pomx, pomy = -1, 0, 0, 0 # Var pour gérer la pomme
# Création du widget maitre :
fen = Tk()
fen.title('Jeu de serpent by Gulius')
fen.bind("<Left>", left)
fen.bind("<Right>", right)
fen.bind("<Up>", up)
fen.bind("<Down>", down)
# Création des widgets esclaves :
Label(fen, text='Serpent by Gulius', font="weight=BOLD").grid(row=0, sticky=W, padx=10)
lb_pts = Label(fen, text='Points = aucun')
lb_pts.grid(row=0, column=1, sticky=E, padx=20)
canv = Canvas(fen, width=600, height=400, bg='blue')
canv.grid(row=1, column=0, columnspan=2)
Button(fen, text='New game', command=commencer).grid(row=2, column=0, padx=30, pady=30)
Button(fen, text='Quiter', command=fen.quit).grid(row=2, column=1, padx=30, pady=30)
# Main :
fen.mainloop()
# After main :
fen.destroy()
Conclusion
Voilà je début donc soyez indulgents. Menfin j'ai my cette source plus pour aider ceux qui comme moi débute ds ce language (fort passionant en passant).
Historique
- 24 novembre 2004 19:43:26 :
- Ajout d'une image d'une capture d'écran (pti oubli dslé ;-)
- 24 novembre 2004 19:45:07 :
- 19 janvier 2005 13:51:13 :
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
modification de jeu morpion en python [ par apprenti2008 ]
salut a tous ! SVP j'ai vraiment besoin d'aide , je suis en première année MASS , le prof nous a demander de créer un jeu morpion en python , le princ
[Jeu par navigateur] Miraemos - Projet sérieux [ par jesslaly ]
Bonjour,Je suis Jessica, étudiante qui a monté un projet depuis une année maintenant.Je me suis lancée dans un projet assez intéressant de jeu en lign
jeu de la vie [ par dia100daly ]
je veux poster un code. Mais j'aimerai savoir si c'etait vraiment la peine car c'est la première fois. Pour plus de détail voir sur Wikipédia ( jeu de
codage Windows jeu de caractères [ par creaduff ]
Bonjour,Avant tout, précisons que je ne suis pas un aigle en Python ! Voici mon problème:J'ai écrit une petit programme permettant d'accéder à ma boit
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|