|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在作品展示区发了感觉没什么人看就发到这来了,比那边的再改进了一下。- import pygame, random, sys
- from pygame.locals import *
- pygame.init()
- bg = (0,0,0)
- font = pygame.font.Font(None,40)
- end_font = pygame.font.Font(None,80)
- end_string = '''game over type s start again'''
- square_size = s_w, s_h = 40,40
- size = 32*s_w, 20*s_h
- screen = pygame.display.set_mode(size)
- def cal_degree(speed,surface):
- if speed == (-1,0):
- return surface
- elif speed == (1,0):
- return pygame.transform.flip(surface,True,False)
- elif speed == (0,-1):
- return pygame.transform.rotate(surface,90)
- elif speed == (0,1):
- return pygame.transform.rotate(surface,270)
- class Snake:
- def __init__(self):
- self.position = [(16,10),(17,10),(18,10),(19,10),(20,10)]
- self.speed = (-1,0)
- self.score = 0
- self.color = 255,248,220
- self.die = False
- def move(self):
- head = self.position[0][0] + self.speed[0], self.position[0][1] + self.speed[1]
- self.position.insert(0,head)
- self.position.pop()
- def eat(self):
- head = self.position[0][0] + self.speed[0], self.position[0][1] + self.speed[1]
- self.position.insert(0, head)
- self.score += 1
- def panduan_die(self):
- head = self.position[0]
- if (head in self.position[1:]) or (not 1<= head[0] <= 32) or (not 1<= head[1] <= 20):
- self.die = True
- def turn(self,m):
- old_speed = self.speed
- if m == K_LEFT:
- self.speed = (-1,0)
- if m == K_RIGHT:
- self.speed = (1, 0)
- if m == K_UP:
- self.speed = (0,-1)
- if m == K_DOWN:
- self.speed = (0,1)
- if self.speed == (-old_speed[0],-old_speed[1]):
- self.speed = old_speed
- class Food:
- def __init__(self,position):
- pp = [(i, j) for i in range(1, 33) for j in range(1, 21)]
- for each in position:
- pp.remove(each)
- self.wei = random.choice(pp)
- while 1:
- snake = Snake()
- food = Food(snake.position)
- while 1:
- for event in pygame.event.get():
- if event.type == QUIT:
- sys.exit()
- if event.type == KEYDOWN:
- snake.turn(event.key)
- if (snake.position[0][0]+snake.speed[0],snake.position[0][1]+snake.speed[1])\
- == food.wei:
- snake.eat()
- food = Food(snake.position)
- else:
- snake.move()
- snake.panduan_die()
- if snake.die:
- break
- screen.fill(bg)
- for each in snake.position:
- position = (each[0]-1)*s_w , (each[1]-1)*s_h
- rect = pygame.Rect(position[0],position[1],s_w,s_h)
- screen.fill(snake.color,rect)
- position = (food.wei[0]-1)*s_w, (food.wei[1]-1)*s_h
- rect = pygame.Rect(position[0], position[1], s_w, s_h)
- screen.fill((0,255,0),rect)
- screen.blit(font.render('score:'+str(snake.score),True,(255,255,255)),(400,0))
- pygame.display.flip()
- pygame.time.delay(200)
- screen.fill(bg)
- screen.blit(font.render(end_string,True,(255,255,255)),(280,120))
- pygame.display.flip()
- chongqi = False
- while not chongqi:
- for event in pygame.event.get():
- if event.type == QUIT:
- sys.exit()
- if event.type == KEYDOWN:
- if event.key == K_s:
- chongqi = True
复制代码 |
|