欢迎光临散文网 会员登陆 & 注册

python写一个贪吃蛇(自带源码)

2023-03-03 15:48 作者:PYTHON小泽  | 我要投稿

大家都玩过游戏吧?看到像原神、王者荣耀等大型游戏,大家虽然会玩,可是不会做(做游戏可以赚钱),今天,我就给大家分享一下用python pygame模块写的简易贪吃蛇吧。

首先,如果你还没有安装pygame的话,在cmd里面输入以下代码:

pip install pygame

然后回车,直到出现安装成功为止。

创建一个空项目,命名为Snake

输入以下代码(要是不懂,抄就完了)

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 = 1900

H = 990

FPS = 30


ROW = 80

COL = 140


size=(W,H)

window=pygame.display.set_mode(size)

pygame.display.set_caption('Snake')


bg_clor=(0,0,0)

snake_color=(250,250,250)


head=Point(row=int(ROW/2),col=int(COL/2))

head_color=(250,250,250)

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 gen_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=gen_food()

food_color=(250,250,250)


direct='left'


def rect(point,color):

    cell_width=W/COL

    cell_height=H/ROW

    left=point.col*cell_width

    top=point.row*cell_height

    pygame.draw.rect(

        window,color,

        (left,top,cell_width,cell_height)

    )


QUIT = True

clock=pygame.time.Clock()

while quit:

    for event in pygame.event.get():

        if event.type == pygame.QUIT:      

            pygame.quit()

            QUIT = False

        elif event.type==pygame.KEYDOWN:

            if event.key==1073741906:

                if direct=='left' or direct=='right':

                    direct='up'

            elif event.key == 1073741905:

                if direct == 'left' or direct == 'right':

                    direct = 'down'

            elif event.key==1073741904:

                if direct == 'up' or direct == 'down':

                    direct='left'

            elif event.key==1073741903:

                if direct == 'up' or direct == 'down':

                    direct='right'

    eat=(head.row==food.row and head.col==food.col)


    if eat:

        food = gen_food()


    snakes.insert(0,head.copy())

    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 or head.row<0 or head.col>=COL or head.row>=ROW:

        dead=True


    for snake in snakes:

        if head.col==snake.col and head.row==snake.row:

            dead

            break


    if dead:

        print('Game Over!')

        quit=False


    pygame.draw.rect(window,bg_clor,(0,0,W,H))


    for snake in snakes:

        rect(snake,snake_color)

    rect(head,head_color)

    rect(food,food_color)


    pygame.display.flip()

    clock.tick(FPS)


游戏界面


python写一个贪吃蛇(自带源码)的评论 (共 条)

分享到微博请遵守国家法律