鱼C论坛

 找回密码
 立即注册
查看: 2327|回复: 2

[原创] 刚学了pygame用它编了一个简易的贪吃蛇。

[复制链接]
发表于 2017-12-21 22:57:31 | 显示全部楼层 |阅读模式

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

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

x
  1. import pygame, random, sys
  2. from pygame.locals import *
  3. pygame.init()
  4. size = 640, 400
  5. screen = pygame.display.set_mode(size)
  6. bg = (0,0,0)
  7. font = pygame.font.Font(None,20)

  8. class Snake:
  9.     position = [(16,10),(17,10),(18,10),(19,10),(20,10)]
  10.     speed = (-1,0)
  11.     score = 0
  12.     color = 255,248,220
  13.     def move(self):
  14.         head = self.position[0][0] + self.speed[0], self.position[0][1] + self.speed[1]
  15.         self.position.insert(0,head)
  16.         self.position.pop()
  17.     def eat(self):
  18.         head = self.position[0][0] + self.speed[0], self.position[0][1] + self.speed[1]
  19.         self.position.insert(0, head)
  20.         self.score += 1
  21.     def panduan_die(self):
  22.         head = self.position[0]
  23.         if (head in self.position[1:]) or (not 1<= head[0] <= 32) or (not 1<= head[1] <= 20):
  24.             sys.exit()
  25.     def turn(self,m):
  26.         if m == K_LEFT:
  27.             self.speed = (-1,0)
  28.         if m == K_RIGHT:
  29.             self.speed = (1, 0)
  30.         if m == K_UP:
  31.             self.speed = (0,-1)
  32.         if m == K_DOWN:
  33.             self.speed = (0,1)

  34. class Food:
  35.     pp = [(i,j) for i in range(1,33) for j in range(1,21)]
  36.     def __init__(self,position):
  37.         pp = self.pp[:]
  38.         for each in position:
  39.             pp.remove(each)
  40.         self.wei = random.choice(pp)


  41. snake = Snake()
  42. food = Food(snake.position)
  43. while 1:
  44.     for event in pygame.event.get():
  45.         if event.type == QUIT:
  46.             sys.exit()
  47.         if event.type == KEYDOWN:
  48.             snake.turn(event.key)
  49.     if (snake.position[0][0]+snake.speed[0],snake.position[0][1]+snake.speed[1])\
  50.             == food.wei:
  51.         snake.eat()
  52.         food = Food(snake.position)
  53.     else:
  54.         snake.move()
  55.         snake.panduan_die()
  56.     screen.fill(bg)
  57.     for each in snake.position:
  58.         position = (each[0]-1)*20 , (each[1]-1)*20
  59.         rect = pygame.Rect(position[0],position[1],20,20)
  60.         screen.fill(snake.color,rect)
  61.     position = (food.wei[0]-1)*20, (food.wei[1]-1)*20
  62.     rect  = pygame.Rect(position[0],position[1],20,20)
  63.     screen.fill((0,255,0),rect)
  64.     screen.blit(font.render('score:'+str(snake.score),True,(255,255,255)),(400,0))
  65.     pygame.display.flip()
  66.     pygame.time.delay(200)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-22 10:06:46 From FishC Mobile | 显示全部楼层
厉害了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-27 23:31:35 | 显示全部楼层
6666666666666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 04:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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