Advertisement
Guest User

Untitled

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