当前位置:   article > 正文

谷歌小恐龙源代码_谷歌小恐龙代码

谷歌小恐龙代码
  1. import pygame
  2. import sys
  3. from pygame.locals import *
  4. import random
  5. class DinosaurGame:
  6. def __init__(self):
  7. pygame.init() #初始化
  8. # 初始设置
  9. self.FPS = 30
  10. self.fpsclock=pygame.time.Clock()
  11. self.screen=pygame.display.set_mode((1000,800))
  12. pygame.display.set_caption("Google Dinosar Game")
  13. self.background=pygame.image.load('background.png')
  14. # 字体设置
  15. self.mfont = pygame.font.Font(None, 60)
  16. # 恐龙设置
  17. self.dinosar=pygame.image.load('milkdinosar.png').convert_alpha()
  18. self.speed=3 #障碍物移动速度
  19. self.dinosar_x=100
  20. self.dinosar_y=555
  21. self.jumpValue = 4 #跳跃增变量
  22. # 障碍物设置
  23. self.obstacle=pygame.image.load('pinkobstacle.png').convert_alpha()
  24. self.obstaclep_x=800
  25. self.obstaclee_x=1024
  26. self.obstaclez_x=1527
  27. self.pink=pygame.image.load('pinkobstacle.png').convert_alpha()
  28. self.zombie=pygame.image.load('zombieobstacle.png').convert_alpha()
  29. self.evil=pygame.image.load('evilobstacle.png').convert_alpha()
  30. # 分数设置
  31. self.recording=0
  32. # 窗口出现
  33. self.run = True
  34. def draw_screen(self): #背景颜色
  35. (self.screen).fill((0,0,0))
  36. #第一个界面
  37. def title(self):
  38. mfont=pygame.font.Font(None,80)
  39. welcome=mfont.render(" W E L C O M E ",
  40. False,(85,149,91))
  41. self.screen.blit(welcome,(290,150))
  42. to=mfont.render("t o",False,(100,149,91))
  43. self.screen.blit(to,(460,250))
  44. di=mfont.render("D I N O S A U R W O R L D !",False,(85,149,91))
  45. self.screen.blit(di,(150,350))
  46. #背景
  47. no=pygame.image.load("origin.jpg")
  48. transformed1=pygame.transform.scale(no,(81,80))
  49. self.screen.blit(transformed1,(545,240))
  50. sa=pygame.image.load("picture/choice3.jpg")
  51. transformed2=pygame.transform.scale(sa,(108,80))
  52. self.screen.blit(transformed2,(20,340))
  53. ur=pygame.image.load("picture/choice2.jpg")
  54. transformed3=pygame.transform.scale(ur,(149,80))
  55. self.screen.blit(transformed3,(750,650))
  56. def Start(self): # 开始文字
  57. start = self.mfont.render(" S T A R T ",
  58. True,(0, 0, 0), (128, 128, 128))
  59. #self.q=self.start.get_rect() print(self.q)
  60. # role=mfont.render("ROLE CHOICE",True,(0,0,0),(128,128,128))
  61. self.screen.blit(start, (400, 500))
  62. self.a=Rect(400,500,203,41)
  63. def Exit(self): #退出文字
  64. dropout = self.mfont.render(" E X I T ", True,
  65. (0, 0, 0), (128, 128, 128))
  66. self.screen.blit(dropout, (420, 600))
  67. #self.q=dropout.get_rect() print(self.q)
  68. self.b=Rect(420,600,167,41)
  69. def click(self): #开始界面点击
  70. for event in pygame.event.get():
  71. if event.type==pygame.QUIT:
  72. pygame.quit()
  73. sys.exit()
  74. if event.type==pygame.MOUSEBUTTONDOWN:
  75. if (self.a).collidepoint(pygame.mouse.get_pos()):
  76. return True
  77. elif (self.b).collidepoint(pygame.mouse.get_pos()):
  78. #print(False)
  79. pygame.quit()
  80. sys.exit()
  81. return False
  82. #第二个界面
  83. def gbg(self): #正式游戏背景
  84. self.transformed=pygame.transform.scale(self.background,(1000,305))
  85. self.screen.blit(self.transformed,(0,300))
  86. pygame.draw.polygon(self.screen,(22,45,6,0.5),
  87. ((0,605),(1000,605),(1000,800),(0,800)))
  88. def Dinosar(self): #恐龙
  89. #r=(self.dinosar).get_rect() print(r)
  90. transformed=pygame.transform.scale(self.dinosar,(59,50))
  91. self.screen.blit(transformed, (self.dinosar_x,self.dinosar_y))
  92. def Jump_init(self): #奶龙跳跃
  93. self.jumpState = False # 跳跃的状态
  94. self.jumpHeight = 300 # 跳跃的高度
  95. self.lowest_y = 555 # 最低坐标
  96. self.dinosar_y = self.lowest_y; # 绘制Y坐标
  97. def Jump_judge(self):
  98. self.jumpState = True
  99. def Jump(self):
  100. for event in pygame.event.get():
  101. if event.type==pygame.QUIT:
  102. pygame.quit()
  103. sys.exit()
  104. elif event.type==pygame.KEYDOWN:
  105. if event.key==pygame.K_SPACE:
  106. self.Jump_judge()
  107. # 变速
  108. if event.key==pygame.K_RETURN:
  109. self.speed=6
  110. self.jumpValue=10
  111. elif event.type==pygame.KEYUP:
  112. if event.key==pygame.K_RETURN:
  113. self.speed=3
  114. self.jumpValue=4
  115. if self.jumpState: # 当起跳的时候
  116. if self.dinosar_y >= self.lowest_y: # 如果站在地上
  117. self.jumpValue = 0-self.jumpValue # 以5个像素值向上移动
  118. if self.dinosar_y <= self.lowest_y - self.jumpHeight: # 到达顶部回落
  119. self.jumpValue = 0-self.jumpValue # 以5个像素值向下移动
  120. self.dinosar_y += self.jumpValue # 通过循环改变Y坐标
  121. if self.dinosar_y >= self.lowest_y: # 如果回到地面
  122. self.jumpState = False # 关闭跳跃状态
  123. self.screen.fill((0, 0, 0))
  124. self.draw_screen()
  125. self.gbg()
  126. self.draw_score()
  127. self.SCORE()
  128. self.Dinosar()
  129. self.Obstacle()
  130. pygame.display.update()
  131. # 计分
  132. if self.SCORE() == True:
  133. self.recording = self.recording + 1
  134. print(self.recording)
  135. elif self.SCORE() == False:
  136. return False
  137. def Obstacle(self): #障碍物
  138. pink=pygame.transform.scale(self.pink,(48,40))
  139. evil=pygame.transform.scale(self.evil,(48,40))
  140. zombie=pygame.transform.scale(self.zombie,(48,40))
  141. self.obstaclep=pink
  142. self.obstaclee=evil
  143. self.obstaclez=zombie
  144. self.screen.blit(self.obstaclep, (self.obstaclep_x, 565))
  145. self.screen.blit(self.obstaclee, (self.obstaclee_x, 565))
  146. self.screen.blit(self.obstaclez, (self.obstaclez_x, 565))
  147. def move(self): #障碍物移动
  148. while True:
  149. self.screen.fill((0,0,0))
  150. self.draw_screen()
  151. self.gbg()
  152. self.draw_score()
  153. self.Dinosar()
  154. self.Obstacle()
  155. pygame.display.update()
  156. # 障碍物移动
  157. self.obstaclep_x=self.obstaclep_x-self.speed
  158. self.obstaclee_x=self.obstaclee_x-self.speed
  159. self.obstaclez_x=self.obstaclez_x-self.speed
  160. # 恐龙应到达的位置
  161. self.p1=Rect(self.obstaclep_x,235,48,40)
  162. self.e1=Rect(self.obstaclee_x,235,48,40)
  163. self.z1=Rect(self.obstaclez_x,235,48,40)
  164. # 恐龙不能到达的位置
  165. self.p2=Rect(self.obstaclep_x,565,48,40)
  166. self.e2=Rect(self.obstaclee_x,565,48,40)
  167. self.z2=Rect(self.obstaclez_x,565,48,40)
  168. # 障碍物循环
  169. if self.obstaclep_x<-48:
  170. self.obstaclep_x=1000
  171. if self.obstaclee_x<-48:
  172. self.obstaclee_x=1000
  173. if self.obstaclez_x < -48:
  174. self.obstaclez_x=1000
  175. self.Jump()
  176. if self.Jump()==False:
  177. break
  178. def draw_score(self):
  179. score=self.mfont.render("SCORE:",True,(250,250,250))
  180. self.screen.blit(score,(0,0))
  181. recorded="%d"%self.recording
  182. real_score=self.mfont.render(recorded,True,(250,250,250))
  183. self.screen.blit(real_score,(200,0))
  184. def SCORE(self):
  185. self.di=Rect(self.dinosar_x,self.dinosar_y,59,50)
  186. if (((self.p1).colliderect((self.di)) or (self.e1).colliderect(self.di)
  187. or (self.z1).colliderect(self.di))
  188. and self.dinosar_y==255):
  189. return True
  190. elif ((self.p2).colliderect(self.di) or (self.e2).colliderect(self.di)
  191. or (self.z2).colliderect(self.di)):
  192. return False
  193. #第三个界面
  194. def draw_gameover(self):
  195. # 半透明背景
  196. surface=pygame.Surface((1000,800),pygame.SRCALPHA)
  197. pygame.draw.polygon(surface,(78,81,87,200),
  198. ((150,200),(150,650),(850,650),(850,200)))
  199. self.screen.blit(surface,(0,0))
  200. # gameover
  201. mfont=pygame.font.Font(None,90)
  202. gameover=mfont.render("G A M E O V E R !",False,(95,173,101))
  203. self.screen.blit(gameover,(220,270))
  204. # 得分
  205. mfont_=pygame.font.Font(None,75)
  206. LastScore="S C O R E:%d"%self.recording
  207. last=mfont_.render(LastScore,True,(110,173,101))
  208. self.screen.blit(last,(365,380))
  209. # 按键
  210. color=(61,50,40)
  211. pygame.draw.polygon(self.screen,color,
  212. ((200,540),(200,598),(410,598),(410,540)))
  213. pygame.draw.polygon(self.screen,color,
  214. ((580,540),(580,598),(790,598),(790,540)))
  215. mfont1=pygame.font.Font(None,60)
  216. restart=mfont1.render("RESTART",True,(180,92,28))
  217. Exit=mfont1.render("EXIT",True,(180,92,28))
  218. self.screen.blit(restart,(210,550))
  219. self.screen.blit(Exit,(640,550))
  220. pygame.display.flip()
  221. def OverClick(self):
  222. m=Rect(200,540,210,58)
  223. n=Rect(580,540,210,58)
  224. for event in pygame.event.get():
  225. if event.type==pygame.QUIT:
  226. pygame.quit()
  227. sys.exit()
  228. if event.type==pygame.MOUSEBUTTONDOWN:
  229. if m.collidepoint(pygame.mouse.get_pos()):
  230. print(True)
  231. self.obstaclep_x = 800
  232. self.obstaclee_x = 1024
  233. self.obstaclez_x = 1527
  234. self.recording=0
  235. self.second()
  236. return True
  237. elif n.collidepoint(pygame.mouse.get_pos()):
  238. print(False)
  239. pygame.quit()
  240. sys.exit()
  241. return False
  242. #所有界面
  243. def first(self): #开始界面
  244. while self.run:
  245. self.Listen()
  246. self.draw_screen()
  247. self.title()
  248. self.Start()
  249. self.Exit()
  250. pygame.display.update()
  251. if self.click() ==True:
  252. break
  253. def second(self): #游戏界面
  254. while self.run:
  255. self.Listen()
  256. self.draw_screen()
  257. self.gbg()
  258. self.draw_score()
  259. self.Dinosar()
  260. self.Jump_init()
  261. self.move()
  262. if self.Jump()==False:
  263. break
  264. pygame.display.update()
  265. self.fpsclock.tick(self.FPS)
  266. def third(self): #结束界面
  267. while self.run:
  268. self.OverClick()
  269. self.Listen()
  270. self.draw_screen()
  271. self.gbg()
  272. self.draw_score()
  273. self.draw_gameover()
  274. pygame.display.update()
  275. def Listen(self): #监听
  276. for event in pygame.event.get():
  277. if event.type==pygame.QUIT:
  278. pygame.quit()
  279. sys.exit()
  280. def main(self):
  281. self.first()
  282. self.second()
  283. self.third()
  284. pygame.display.update()
  285. pygame.quit()
  286. if __name__=="__main__":
  287. dinosaur=DinosaurGame()
  288. dinosaur.main()

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号