Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
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 de la même categorie
Commentaires
Discussions en rapport avec ce code source
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | | | | 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 | 31 |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|