鱼C论坛

 找回密码
 立即注册
查看: 1787|回复: 0

[作品展示] 刚学pygame,编的一个简易贪吃蛇

[复制链接]
发表于 2017-12-28 23:16:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在作品展示区发了感觉没什么人看就发到这来了,比那边的再改进了一下。
  1. import pygame, random, sys
  2. from pygame.locals import *
  3. pygame.init()
  4. bg = (0,0,0)
  5. font = pygame.font.Font(None,40)
  6. end_font = pygame.font.Font(None,80)
  7. end_string = '''game over type s start again'''
  8. square_size = s_w, s_h = 40,40
  9. size = 32*s_w, 20*s_h
  10. screen = pygame.display.set_mode(size)


  11. def cal_degree(speed,surface):
  12.     if speed == (-1,0):
  13.         return surface
  14.     elif speed == (1,0):
  15.         return pygame.transform.flip(surface,True,False)
  16.     elif speed == (0,-1):
  17.         return pygame.transform.rotate(surface,90)
  18.     elif speed == (0,1):
  19.         return pygame.transform.rotate(surface,270)


  20. class Snake:
  21.     def __init__(self):
  22.         self.position = [(16,10),(17,10),(18,10),(19,10),(20,10)]
  23.         self.speed = (-1,0)
  24.         self.score = 0
  25.         self.color = 255,248,220
  26.         self.die = False
  27.     def move(self):
  28.         head = self.position[0][0] + self.speed[0], self.position[0][1] + self.speed[1]
  29.         self.position.insert(0,head)
  30.         self.position.pop()
  31.     def eat(self):
  32.         head = self.position[0][0] + self.speed[0], self.position[0][1] + self.speed[1]
  33.         self.position.insert(0, head)
  34.         self.score += 1
  35.     def panduan_die(self):
  36.         head = self.position[0]
  37.         if (head in self.position[1:]) or (not 1<= head[0] <= 32) or (not 1<= head[1] <= 20):
  38.             self.die = True
  39.     def turn(self,m):
  40.         old_speed = self.speed
  41.         if m == K_LEFT:
  42.             self.speed = (-1,0)
  43.         if m == K_RIGHT:
  44.             self.speed = (1, 0)
  45.         if m == K_UP:
  46.             self.speed = (0,-1)
  47.         if m == K_DOWN:
  48.             self.speed = (0,1)
  49.         if self.speed == (-old_speed[0],-old_speed[1]):
  50.             self.speed = old_speed
  51. class Food:
  52.     def __init__(self,position):
  53.         pp = [(i, j) for i in range(1, 33) for j in range(1, 21)]
  54.         for each in position:
  55.             pp.remove(each)
  56.         self.wei = random.choice(pp)


  57. while 1:
  58.     snake = Snake()
  59.     food = Food(snake.position)
  60.     while 1:
  61.         for event in pygame.event.get():
  62.             if event.type == QUIT:
  63.                 sys.exit()
  64.             if event.type == KEYDOWN:
  65.                 snake.turn(event.key)
  66.         if (snake.position[0][0]+snake.speed[0],snake.position[0][1]+snake.speed[1])\
  67.                 == food.wei:
  68.             snake.eat()
  69.             food = Food(snake.position)
  70.         else:
  71.             snake.move()
  72.             snake.panduan_die()
  73.             if snake.die:
  74.                 break
  75.         screen.fill(bg)
  76.         for each in snake.position:
  77.             position = (each[0]-1)*s_w , (each[1]-1)*s_h
  78.             rect = pygame.Rect(position[0],position[1],s_w,s_h)
  79.             screen.fill(snake.color,rect)
  80.         position = (food.wei[0]-1)*s_w, (food.wei[1]-1)*s_h
  81.         rect = pygame.Rect(position[0], position[1], s_w, s_h)
  82.         screen.fill((0,255,0),rect)
  83.         screen.blit(font.render('score:'+str(snake.score),True,(255,255,255)),(400,0))
  84.         pygame.display.flip()
  85.         pygame.time.delay(200)
  86.     screen.fill(bg)
  87.     screen.blit(font.render(end_string,True,(255,255,255)),(280,120))
  88.     pygame.display.flip()
  89.     chongqi = False
  90.     while not chongqi:
  91.         for event in pygame.event.get():
  92.             if event.type == QUIT:
  93.                 sys.exit()
  94.             if event.type == KEYDOWN:
  95.                 if event.key == K_s:
  96.                     chongqi = True
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 17:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表