Accueil > > > PETIT JEU DE SERPENT DE BASE
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 de la même categorie
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
Réalisation d'un plus ou moins sur Tkinter [ par kuritsu ]
Bonsoir tout le monde, et je vous souhaite la bonne année à tous par la même occasion. Je viens de me mettre à la programmation sous Python, et j'avo
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE [WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE[WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE par FREMYCOMPANY
Je pense qu'ils ont besoin d'une piqure de rappel chez Microsoft : c'est bien gentil d'avoir une interface jolie, mais si c'est pour avoir un truc qui ne convainct pas dedans, c'est peine perdue.
---->
Système ouvert ----> Fermé ?
P...
Cliquez pour lire la suite de l'article par FREMYCOMPANY
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|