如何用python玩贪吃蛇

#!/usr/bin/env python}
#coding=utf-8

class Point:
    row = 0
    col = 0
    def __init__(self ,row ,col):
        self.row = row
        self.col = col
    def copy(self):
        return Point(row=self.row, col=self.col)

import pygame
import random

pygame.init()
W = 800
H = 600

ROW = 30
COL = 40

size=(W,H)
window = pygame.display.set_mode(size)
pygame.display.set_caption('ff')

bg_color = (255,255,225)
head_color = (0,158,128)
food_color = (255,255,0)
snake_color = (200,147,158)

head = Point(row=int(ROW/2),col=int(COL/2))
snakes = [
    Point(row=head.row, col=head.col+1),
    Point(row=head.row, col=head.col+2),
    Point(row=head.row, col=head.col+3)]
def get_food():
    while 1:
        pos = (Point(row = random.randint(0, ROW-1), col=random.randint(0, COL - 1)))
        is_coll = False
        if head.row == pos.row and head.col == pos.col:
            is_coll = True
        for snake in snakes:
            if snake.row == pos.row and snake.col == pos.col:
                is_coll = True
                break
        if not is_coll:
            break
    return pos
food = get_food()
def rect(point,color):
    left = point.col * W/COL
    top = point.row * H/ROW
    pygame.draw.rect(window,color,(left,top,15,15))

direct = 'left'
quit = True
clock = pygame.time.Clock()
while quit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT :
            quit = False
        elif event.type == pygame.KEYDOWN:
            #print(event)
            if event.key == pygame.K_LEFT or event.key ==pygame.K_a :
                direct = 'left'
            elif event.key == pygame.K_DOWN or event.key == pygame.K_s:
                direct = 'down'
            elif event.key == pygame.K_UP or event.key == pygame.K_w:
                direct = 'up'

            elif event.key == pygame.K_d or event.key == pygame.K_RIGHT:

                direct = 'right'
    eat = (head.row == food.row and head.col == food.col)
    snakes.insert(0, head.copy())
    if head.row == food.row and head.col == food.col:
        food = get_food()
    if not eat:
        snakes.pop()
    if direct == 'left':
        head.col -= 1
    elif direct == 'right':
        head.col += 1
    elif direct == 'up':
        head.row -= 1
    elif direct == 'down':
        head.row += 1

    dead = False
    if head.col < 0:
        head.col=COL-1
    elif head.col>COL-1:
        head.col=0
    if head.row < 0:
        head.row=ROW-1
    elif head.row>ROW-1:
        head.row=0
    for snake in snakes:
        if head.col == snake.col and head.row == snake.row:
            dead = True
            break
    if dead:
        print('死了')
        quit = False
    pygame.draw.rect(window,bg_color,(0,0,W,H ))
    rect(head,head_color)
    rect(food, food_color)
    for snake in snakes:
        rect(snake, snake_color)
    pygame.display.flip()
    #FPS=len(snakes) - 4 /10+5
    clock.tick(10)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值