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
créer une simulation d'un jeu de cartes [ par jimux06 ]
# simulation d'un tirage de cartes # dans la version 3.1.x # afficher la date du jour (jj-mm-aaaa) et l'heure (hh:mm:ss), avant chaque jeu # utiliser
Création d'un jeu 2D ! [ par Gatax ]
Salut [^^clinoeil1] Je suis nouveau ici, et depuis qu'elle que temps j'aimerais crée un jeu 2D avec qu'elle que personne 2 ou 3, Mais c'est un peu dif
Créer un petit jeu de simulation politique [ par redstar1504 ]
Bonsoir à tous ! Ayant décidé il y a quelque jour d'apprendre à programmer (et cette fois-ci, avec documentation et donc un langage qu'on me recomman
|
Derniers Blogs
TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0 par odewit
Je viens de publier la version 3.0 de Perspective pour Silverlight, qui regroupe un portage sous Silverlight 5.0 des fonctionnalités de Perspective 2.0, le framework 3D de haut-niveau introduit récemment et de nouveaux exemples de code. En voici la li...
Cliquez pour lire la suite de l'article par odewit TECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVERTECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVER par ROMELARD Fabrice
Speaker : Nadia Ben El Kadi Configuration machine La session commence par la toute première question à se poser lors de la mise en place d'environnement SQL Server, la configuration des machines : Type de mac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SITECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SI par ROMELARD Fabrice
Speakers : Fabrice Barbin, Samuel Blanchard, Julien Lo Presti Titre Prometteur et attractif invitant à voir comment lier le composant ludique Kinect dans le cadre d'une structure IT classique, notamment au travers de la plat...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOURTECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOUR par ROMELARD Fabrice
KeyNotes du premier jour pour les développeurs. La session est principalement axée sur une des principales directions prise par Microsoft à travers tous ses nouveaux produits : Cloud privé ou public (Solution Azure) ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
PYVISA PROBLèMEPYVISA PROBLèME par sandrine44
Cliquez pour lire la suite par sandrine44
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|