Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.15 KB | None | 0 0
  1. # -*- coding: cp1252 -*-
  2. # coding:utf-8
  3.  
  4.  
  5. from tkinter import *
  6. from random import randrange
  7.  
  8.  
  9. def commencer():
  10. bienvenue.destroy()
  11.  
  12. bienvenue = Tk()
  13. bienvenue.config(background='green')
  14. bienvenue.resizable(width=False, height=False)
  15. bienvenue.title("Bienvenue")
  16. bienvenue.geometry("200x200")
  17. bienvenue_button = Button(text="Jouer", font=("Vert", 20), bg='green', fg='white', command=commencer)
  18. bienvenue_button.pack(expand=YES)
  19. bienvenue_button = Button(text="Quitter", font=("Vert", 20), bg='green', fg='white', command=quit)
  20. bienvenue_button.pack()
  21. text = Label(bienvenue, text="Snake fait par siwan", font=("Verdana", 10), bg='green', fg='white')
  22. text.pack()
  23. bienvenue.mainloop()
  24.  
  25. import tkinter
  26.  
  27.  
  28. # Fonction la plus compliquée permettant le déplacement du serpent
  29. def deplacement():
  30. global a, b, z, y, lu, lv, score, snake, j, m
  31. c = len(snake)
  32. c = c - 1
  33. # Chaque carré reprend la coordonnée du précédent dans la liste (serpent)
  34. while c != 0:
  35. lu[c] = lu[c - 1]
  36. lv[c] = lv[c - 1]
  37. c += -1
  38. # On change les coordonées du premier carré
  39. lu[0] += a
  40. lv[0] += b
  41. c = 0
  42. # On applique les nouvelles coordonnées aux carrés correspondant
  43. while c != len(snake):
  44. can.coords(snake[c], lu[c], lv[c], lu[c] + 10, lv[c] + 10)
  45. c += 1
  46. c = 1
  47. # Si les coordonnées du premier carré sont égales à celle d'un autre le jeu s'arrêtera
  48. while c != len(snake):
  49. if lu[c] == lu[0] and lv[c] == lv[0]:
  50. j = 1
  51. score = 'Perdu avec ' + str(score * 1)
  52. can.create_rectangle(0, 0, 200, 200 , fill='black')
  53. tex = Label(text=(score*1))
  54. tex.grid()
  55. break
  56. c += 1
  57. # Si le serpent est mord un coté il ressort de l'autre
  58. # La valeur 'd' sert à empecher un bug empechant la transfert du serpent de l'autre coté du canvevas
  59. d = 1
  60. if lu[0] == 200:
  61. lu[0], d = 10, 0
  62. if lu[0] == 0 and d == 1:
  63. lu[0] = 200
  64. if lv[0] == 200:
  65. lv[0], d = 10, 0
  66. if lv[0] == 0 and d == 1:
  67. lv[0] = 200
  68. d = 0
  69. # Si le carré de tête recoupe le cercle, le score augmente et un nouveau cercle apparait aléatoirement
  70. if z - 7 <= lu[0] <= z + 7 and y - 7 <= lv[0] <= y + 7:
  71. score += 1
  72. scores.set(str(score * 1))
  73. bestiole()
  74. if j != 1 and m != 1:
  75. window.after(100, deplacement)
  76.  
  77.  
  78. # Cette fonction crée un cercle de coordonée multiple de 10 pour éviter que le cercle soit partiellement coupé par le serpent
  79. def bestiole():
  80. global z, y, n, lu, lv, snake, a, b
  81. z = randrange(2, 18)
  82. y = randrange(2, 18)
  83. z = z * 10
  84. y = y * 10
  85. can.coords(cercle, z, y, z + 5, y + 5)
  86. # On ajoute un carré hors du canevas (pour allèger le code) qui se rajoutera à la suite
  87. snakes = can.create_rectangle(300, 300, 310, 310, fill='green')
  88. snake.append(snakes)
  89. lu.append(lu[n] + 12 + a)
  90. lv.append(lv[n] + 12 + b)
  91. n += 1
  92.  
  93.  
  94. # Ces quatres fonctions permettent le déplacement dans quatres directions du serpent
  95. # Grace aux modifications successives des coordonées du premier carrée grave au valeur a et b
  96. # La valeur s permet de ne pas accelerer la vitesse du serpent ou à modifier ca direction
  97. # en appuyant successivement sur Haut/Bas/Gauche/Droite
  98. def gauche(event):
  99. global a, b, s
  100. a = -10
  101. b = 0
  102. if s == 0:
  103. s = 1
  104. deplacement()
  105.  
  106.  
  107. def droite(event):
  108. global a, b, s
  109. a = 10
  110. b = 0
  111. if s == 0:
  112. s = 1
  113. deplacement()
  114.  
  115.  
  116. def haut(event):
  117. global a, b, s
  118. a = 0
  119. b = -10
  120. if s == 0:
  121. s = 1
  122. deplacement()
  123.  
  124.  
  125. def bas(event):
  126. global a, b, s
  127. a = 0
  128. b = 10
  129. if s == 0:
  130. s = 1
  131. deplacement()
  132.  
  133.  
  134. # Cette fonction permet d'arrêter le serpent
  135. def pause(event):
  136. global j, a, b, m, enpause
  137. t = 0
  138. if a == b:
  139. t = 1
  140. if j != 1:
  141. # Affichage ou Effacage du texte 'PAUSE'
  142. # Et arrêt du serpent
  143. if m != 1:
  144. m = 1
  145. can.coords(enpause, 100, 100)
  146. else:
  147. m = 0
  148. can.coords(enpause, 300, 300)
  149. if t != 1:
  150. deplacement()
  151.  
  152.  
  153. # Cette fonction réinitialise toutes les valeurs et recréée le serpent de base ainsi que le premier repas
  154. def recommencer(event):
  155. global z, y, lu, lv, score, snake, j, m, s, n, a, b, cercle
  156. if j != 1:
  157. print
  158. 'Le suicide est puni'
  159. can.delete(ALL)
  160. s = score = j = m = a = b = 0
  161. z = y = 50
  162. lu, lv, snake = [100, 112], [100, 112], []
  163. n = 1
  164. tete = can.create_rectangle(100, 100, 110, 110, fill='dark green')
  165. carre = can.create_rectangle(112, 100, 122, 110, fill='green')
  166. cercle = can.create_oval(z, y, z + 5, y + 5, fill='red')
  167. snake.append(tete)
  168. snake.append(carre)
  169. scores.set('0')
  170. tex.grid_forget()
  171.  
  172.  
  173. # On définit les valeurs initiales
  174. s = score = j = m = t = a = b = 0
  175. z = y = 50
  176. lu, lv, snake = [100, 112], [100, 112], []
  177. n = 1
  178.  
  179. # On crée un canevas tout gris
  180. window = Tk()
  181. can = Canvas(window, width=200, height=200, bg='gray')
  182. can.grid(row=1, column=0, columnspan=3)
  183.  
  184. window.title("snake")
  185. button_retry = Button(window, text='Recommencer \Return/', command=recommencer)
  186. button_retry.grid(column=0, row=2)
  187. bouton_fermer = Button(window, text="Quitter \Esc/", command=window.quit)
  188. bouton_fermer.grid(column=1, row=2)
  189. enpause = can.create_text(300, 300, text="PAUSE")
  190. # On crée la base du serpent ainsi que le premier repas
  191. tete = can.create_rectangle(100, 100, 110, 110, fill='dark green')
  192. carre = can.create_rectangle(112, 100, 122, 110, fill='green')
  193. cercle = can.create_oval(z, y, z + 5, y + 5, fill='red')
  194. snake.append(tete)
  195. snake.append(carre)
  196. # On crée les commandes au clavier
  197. can.bind_all('<Up>', haut)
  198. can.bind_all('<Down>', bas)
  199. can.bind_all('<Left>', gauche)
  200. can.bind_all('<Right>', droite)
  201. can.bind_all('<Return>', recommencer)
  202. can.bind_all('p', pause)
  203. can.bind_all('<Escape>', quit)
  204. # L'affichage du score
  205. Label(window, text='Score : ').grid(row=0, column=0)
  206. scores = StringVar()
  207. Score = Entry(window, textvariable=scores)
  208. Score.grid(row=0, column=1)
  209. Score.config(state=DISABLED)
  210. scores.set('0')
  211. window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement