Advertisement
Guest User

Untitled

a guest
Apr 14th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.07 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter import messagebox
  3. from tkinter import PhotoImage
  4. import random
  5. import re
  6.  
  7.  
  8. class vars (object): # משתנים שקיימים בקוד
  9. mypick = "bla"
  10. mygames = 0
  11. wincount = 0
  12. mywins = 0
  13. myloses = 0
  14. myties = 0
  15. usernameall = "hhh"
  16. count = 3
  17.  
  18.  
  19. def decrement(): # מספר הניסיונות התחברות יורד ב1 כל ניסיון כושל
  20. vars.count = vars.count-1
  21.  
  22.  
  23. def checkusername(user_name): # בדיקה אם שם משתמש קיים כבר
  24. for line in open("accountfile.txt", "r").readlines():
  25. login_info = line.split()
  26. if user_name == login_info[0]:
  27. return False
  28.  
  29.  
  30. def register(): # תהליך ההרשמה
  31. file = open("accountfile.txt", "a")
  32. username = reg_username.get()
  33. password = reg_password.get()
  34. if checkusername(username) == False:
  35. messagebox.showinfo("Error", "User name already exists, Please enter another username {}".format(username))
  36. reg_screen.winfo_children
  37. elif len(password) < 5:
  38. messagebox.showinfo("Error", "Password must at least 6 characters.")
  39.  
  40. elif re.search('[0-9]', password) is None:
  41. messagebox.showinfo("Error", "Password must contains numbers in it.")
  42.  
  43. elif re.search('[A-Z]', password) is None:
  44. messagebox.showinfo("Error", "Password must contains capital letter in it.")
  45.  
  46. else:
  47. file.write(username)
  48. file.write(" ")
  49. file.write(password)
  50. file.write("\n")
  51. file.close()
  52. messagebox.showinfo("Great!", "Register Successful,Please login")
  53. reg_screen.destroy()
  54. log_form()
  55.  
  56.  
  57. def login(): # תהליך ההתחברות
  58. username = log_username.get()
  59. password = log_password.get()
  60. for line in open("accountfile.txt", "r").readlines():
  61. login_info = line.split()
  62. if username == login_info[0] and password == login_info[1]:
  63. messagebox.showinfo("Login Successful", "Wellcome {}".format(username))
  64. vars.usernameall = username
  65. log_screen.destroy()
  66. rockmain()
  67. return True
  68. decrement()
  69. if vars.count == 0:
  70. messagebox.showinfo("Error", "You tried to login 3 times with wrong credentials")
  71. main_screen.quit()
  72. else:
  73. messagebox.showinfo("Error", "Incorrect credentials.{} more time before lock.".format(vars.count))
  74. return False
  75.  
  76.  
  77. def log_form(): # ה gui של ההתחברות
  78. global log_screen
  79. log_screen = Toplevel(main_screen)
  80. log_screen.title("Login")
  81. log_screen.geometry("300x200")
  82. global log_username
  83. global log_password
  84. log_username = StringVar()
  85. log_password = StringVar()
  86. Label(log_screen, text="Username: ").pack()
  87. username_entry1 = Entry(log_screen, textvariable=log_username)
  88. username_entry1.pack()
  89. Label(log_screen, text="").pack()
  90. Label(log_screen, text="Password: ").pack()
  91. password_entry1 = Entry(log_screen, show='*', textvariable=log_password)
  92. password_entry1.pack()
  93. Label(log_screen, text="").pack()
  94. Button(log_screen, text="Login", width=10, height=1, command=login).pack()
  95.  
  96.  
  97. def reg_form(): # ה gui של ההרשמה
  98. global reg_screen
  99. reg_screen = Toplevel(main_screen)
  100. reg_screen.title("Register")
  101. reg_screen.geometry("300x150")
  102. global reg_username
  103. global reg_password
  104. global reg_username_en
  105. global reg_password_en
  106. reg_username = StringVar()
  107. reg_password = StringVar()
  108. Label(reg_screen, text="Username: ").pack()
  109. reg_username_en = Entry(reg_screen, textvariable=reg_username)
  110. reg_username_en.pack()
  111. Label(reg_screen, text="Password: ").pack()
  112. reg_password_en = Entry(reg_screen, show='*', textvariable=reg_password)
  113. reg_password_en.pack()
  114. Label(reg_screen, text="").pack()
  115. Button(reg_screen, text="Register", width=10, height=1, command=register).pack()
  116.  
  117.  
  118. def rock(): # בחירה אבן
  119. vars.mypick = "Rock"
  120. rockpaper()
  121.  
  122.  
  123. def paper(): # בחירה נייר
  124. vars.mypick = "Paper"
  125. rockpaper()
  126.  
  127.  
  128. def scissors(): # בחירה מספריים
  129. vars.mypick = "Scissors"
  130. rockpaper()
  131.  
  132.  
  133. def increment(): # מעלה את מספר הניצחונות הרצופים
  134. vars.wincount = vars.wincount+1
  135.  
  136.  
  137. def zerowin(): # מאפס את מספר הניצחונות הרצופים
  138. vars.wincount = 0
  139.  
  140.  
  141. def wins(): # מעלה את מספר הניצחונות
  142. vars.mywins = vars.mywins + 1
  143.  
  144.  
  145. def loses(): # מעלה את מספר ההפסדים
  146. vars.myloses = vars.myloses + 1
  147.  
  148.  
  149. def ties(): # מעלה את מספר התיקויים
  150. vars.myties= vars.myties + 1
  151.  
  152.  
  153. def games(): # מעלה את מספר המחשקים
  154. vars.mygames = vars.mygames + 1
  155.  
  156.  
  157. def rockpaper(): # אבן נייר או מספריים המשחק עצמו
  158. words = ("Rock", "Paper", "Scissors")
  159. word = random.choice(words)
  160. yourpick = vars.mypick
  161. if vars.mygames != 5 and vars.wincount != 3:
  162. if yourpick == "Rock" and word == "Scissors":
  163. wins()
  164. increment()
  165. messagebox.showinfo("You Won!", "Your pick: {} \nHis pick: {}".format(yourpick, word))
  166. elif yourpick == "Rock" and word == "Paper":
  167. loses()
  168. zerowin()
  169. messagebox.showinfo("You Lost!", "Your pick: {} \nHis pick: {}".format(yourpick, word))
  170. elif yourpick == word:
  171. ties()
  172. zerowin()
  173. messagebox.showinfo("Tie:", "Your pick: {} \nHis pick: {}".format(yourpick, word))
  174. elif yourpick == "Scissors" and word == "Rock":
  175. loses()
  176. zerowin()
  177. messagebox.showinfo("You Lost!", "Your pick: {} \nHis pick: {}".format(yourpick, word))
  178. elif yourpick == "Scissors" and word == "Paper":
  179. wins()
  180. increment()
  181. messagebox.showinfo("You Won!", "Your pick: {} \nHis pick: {}".format(yourpick, word))
  182. elif yourpick == "Paper" and word == "Scissors":
  183. loses()
  184. zerowin()
  185. messagebox.showinfo("You Lost!", "Your pick: {} \nHis pick: {}".format(yourpick, word))
  186. elif yourpick == "Paper" and word == "Rock":
  187. wins()
  188. increment()
  189. messagebox.showinfo("You Won!", "Your pick: {} \nHis pick: {}".format(yourpick, word))
  190. games()
  191. if vars.mygames == 5 or vars.wincount == 3:
  192. messagebox.showinfo("Details",
  193. "Wins: {} \nLoses: {} \nTies: {} \nGames: {}".format(vars.mywins, vars.myloses,
  194. vars.myties, vars.mygames))
  195. main_screen.withdraw()
  196. rock_screen.destroy()
  197. afterplay()
  198.  
  199.  
  200. def playagain(): # אם השחקן בוחר לשחק שוב
  201. vars.mygames = 0
  202. vars.mywins = 0
  203. vars.myties = 0
  204. vars.myloses = 0
  205. after_play.destroy()
  206. rockmain()
  207.  
  208.  
  209. def afterplay(): # ה gui לנתונים אחרי משחק
  210. global after_play
  211. after_play = Toplevel(main_screen)
  212. after_play.geometry("300x200")
  213. after_play.title("Details")
  214. Label(after_play, text="Hi {} watch your details: ".format(vars.usernameall)).pack()
  215. Label(after_play, text="Wins: %d\nLoses: %d\nTies: %d\nGames: %d" % (
  216. vars.mywins, vars.myloses, vars.myties, vars.mygames)).pack()
  217. Button(after_play, text="Play Again", height="2", width="15", command=playagain).pack()
  218.  
  219.  
  220. def rockmain(): # ה gui של המשחק אבן נייר או מספריים
  221. main_screen.withdraw()
  222. global rock_screen
  223. rock_screen = Toplevel(main_screen)
  224. rock_screen.geometry("300x250")
  225. rock_screen.title("Rock / Paper / Scissors")
  226. Label(rock_screen, text="Hello {},\nWellcome to Rock / Paper / Scissors".format(vars.usernameall), width="300",
  227. height="2").pack()
  228. Label(text="").pack()
  229. Button(rock_screen,text="Rock",image=imgrock, height="60", width="60", command=rock).pack()
  230. Label(text="").pack()
  231. Button(rock_screen,text="Paper",image=imgpaper,height="60", width="60", command=paper).pack()
  232. Label(text="").pack()
  233. Button(rock_screen,text="Scissors", image=imgs,height="60", width="60", command=scissors).pack()
  234.  
  235.  
  236. def main(): # ה gui של בחירת המשתמש
  237. global main_screen
  238. vars.usernameall = "guest"
  239. main_screen = Tk()
  240. global imgpaper
  241. imgpaper = PhotoImage(file='paper.png')
  242. global imgrock
  243. imgrock = PhotoImage(file='rock.png')
  244. global imgs
  245. imgs = PhotoImage(file='scissors.png')
  246. main_screen.geometry("300x250")
  247. main_screen.title("Play Time!")
  248. Label(text="Hi guest choose:", width="300", height="2").pack()
  249. Label(text="").pack()
  250. Button(text="Login", height="2", width="15", command=log_form).pack()
  251. Label(text="").pack()
  252. Button(text="Register", height="2", width="15", command=reg_form).pack()
  253. Label(text="").pack()
  254. Button(text="Play as a guest", height="2", width="15", command=rockmain).pack()
  255. main_screen.mainloop()
  256.  
  257.  
  258. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement