pygame实现贪吃蛇小游戏

本文实例为大家分享了pygame实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下

由于这段时间实在是太聊了,没什么事做,游戏也玩腻了,所以玩起来pygame。pygame是真的容易上手,但用来做游戏也有很大的局限性,做一些小游戏还是没什么问题的。

首先,制作游戏最大的问题我认为是确定要制作的游戏的玩法,具体的细节都确定清楚之后再去实现还是很容易的。所以开发游戏最大的问题可能是需要一个好的创意,没有好的创意都没法开始。贪吃蛇相信没有人没玩过了,玩法也很简单,没吃一个方块可以使蛇的身体变长,头部碰到墙壁或者头部碰到自己身体就game over了。然后也需要一个计分板记录分数。由于只是一个简单的小游戏,不用一个具体的步骤了,就自己码代码的时候不断完善代码还是很容易完成的。

初步的版本,实现了蛇的移动和吃方块身体变长,但还没有检测导致game over 的时间。自己想到了不少事情,如可以记录游戏分数并保存到本地文件,记录最高分,但毕竟只是个小游戏,只要保证游戏的完整性就算过关了,再怎么追求完美也不过是用pygame开发的,其价值始终只在于自娱自乐。之后将这个版本完善一下就算完成了。

import pygame,sys,numpy as nu,random as ra
from pygame.sprite import Sprite,Group
class setting():
    def __init__(self,w,h):
        self.w1=0.1*w
        self.w2=0.7*w
        self.w3=0.75*w
        self.w4=0.95*w
        self.h1=0.1*h
        self.h2=0.7*h
        self.length=0.05*self.w1
        self.speed=self.length
        self.wall_length=0.1*self.length
        self.wall_color=(0,0,0)
        self.snake_color=(0,0,230)
        self.head_color=(230,0,0)
class block(Sprite):
    def __init__(self,screen,rect,test,color):
        super().__init__()
        self.screen=screen
        self.rect=rect      #pygame.Rect(0,0,10,10)
        self.test=test
        self.color=color
    def update(self):
        self.rect=self.test(self.rect)
    def draw_bullet(self):
        pygame.draw.rect(self.screen,self.color,self.rect)
class textBlock(Sprite):
    def __init__(self,screen,rect,color,text,text_color):
        super().__init__()
        self.screen=screen
        self.rect=rect      #pygame.Rect(0,0,10,10)
        self.color=color
        self.text_color=text_color
        self.font=pygame.font.SysFont(None,68)
        self.image=self.font.render(text,True,self.text_color,self.color)
        self.image_rect=self.image.get_rect()
        self.image_rect.left=rect.left-200
        self.image_rect.top=rect.top-200
    def update(self):
        pass
    def changeText(self,text):
        self.image=self.font.render(text,True,self.text_color,self.color)
    def draw_bullet(self):
        self.screen.blit(self.image,self.image_rect)
        #pygame.draw.rect(self.screen, self.color, self.rect)
def run_game():
    pygame.init()
    w,h=1200,800
    screen=pygame.display.set_mode((w,h))
    pygame.display.set_caption("pygame1")
    bg_color=(230,230,230)
    settings=setting(w,h)

    g,gg=Group(),Group()

    a = block(screen, pygame.Rect((settings.w1+settings.w2)/2, (settings.h1+settings.h2)/2,
                                  settings.length, settings.length),lambda r:r,settings.head_color)
    aa = block(screen, pygame.Rect((settings.w1 + settings.w2) / 2, (settings.h1 + settings.h2) / 2,
                                  settings.length, settings.length), lambda r: r, settings.snake_color)
    g.add(a)
    #墙壁
    wall=Group()
    w1=block(screen, pygame.Rect(settings.w1, settings.h1, settings.wall_length, settings.h2-settings.h1),
              lambda r:r,settings.wall_color)
    w2 = block(screen, pygame.Rect(settings.w1, settings.h1, settings.w2-settings.w1, settings.wall_length),
               lambda r: r,settings.wall_color)
    w3 = block(screen, pygame.Rect(settings.w2, settings.h1, settings.wall_length, settings.h2-settings.h1),
               lambda r: r,settings.wall_color)
    w4 = block(screen, pygame.Rect(settings.w1, settings.h2, settings.w2-settings.w1, settings.wall_length),
               lambda r: r,settings.wall_color)
    wall.add(w1);wall.add(w2);wall.add(w3);wall.add(w4)

    w5 = block(screen, pygame.Rect(settings.w3, settings.h1, settings.wall_length, settings.h2 - settings.h1),
               lambda r: r, settings.wall_color)
    w6 = block(screen, pygame.Rect(settings.w3, settings.h1, settings.w4 - settings.w3, settings.wall_length),
               lambda r: r, settings.wall_color)
    w7 = block(screen, pygame.Rect(settings.w4, settings.h1, settings.wall_length, settings.h2 - settings.h1),
               lambda r: r, settings.wall_color)
    w8 = block(screen, pygame.Rect(settings.w3, settings.h2, settings.w4 - settings.w3, settings.wall_length),
               lambda r: r, settings.wall_color)
    wall.add(w5)
    wall.add(w6)
    wall.add(w7)
    wall.add(w8)
    timesec = textBlock(screen, pygame.Rect(settings.w3+200, settings.h1+200, 50,50), (230, 230, 230),
                        "time:"+str(pygame.time.get_ticks()), (200, 0, 20))
    leng=1
    snakeLength = textBlock(screen, pygame.Rect(settings.w3 + 200, settings.h1 + 400, 50, 50), (230, 230, 230),
                        "length:" + str(leng), (200, 0, 20))
    start=textBlock(screen,pygame.Rect(w/2,h/2,50,50),(230,230,230),"Gluttonous Snake",(0,200,200))
    start_1 = textBlock(screen, pygame.Rect(w / 2+50, h / 2+100, 50, 50), (230, 230, 230),
                        "Start game",(200,20,20))
    start_2 = textBlock(screen, pygame.Rect(w / 2 + 50, h / 2 + 200, 50, 50), (230, 230, 230),
                        "exit", (200, 20, 20))
    block_=block(screen, pygame.Rect(w / 2-170, h / 2-85, 10, 10),
              lambda r:r,settings.wall_color)
    kw,ks,ka,kd=False,False,False,False
    start_game,exit_game,generator=False,False,False
    timeStart=0
    ls=[start_game,kw,ks,ka,kd,exit_game,timeStart,generator,leng]
    lx,ly,la=[],[],[]
    def check_event(ls,lx,ly,la):
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                sys.exit()
            elif event.type==pygame.KEYDOWN and ls[0]:
                if event.key==pygame.K_w:
                    ls[1:5]=[True,False,False,False]
                elif event.key==pygame.K_a:
                    ls[1:5]=[False,False,True,False]
                elif event.key==pygame.K_s:
                    ls[1:5]=[False,True,False,False]
                elif event.key==pygame.K_d:
                    ls[1:5]=[False,False,False,True]
            elif event.type==pygame.KEYDOWN:
                if event.key==pygame.K_SPACE :
                    if(ls[5]):
                        sys.exit()
                    else:
                        ls[0],ls[2],ls[7]=True,True,True
                        ls[6]=pygame.time.get_ticks()
                elif event.key==pygame.K_w or event.key==pygame.K_s:
                    if(ls[5]):
                        block_.rect.y-=100
                    else:
                        block_.rect.y+=100
                    ls[5]=not ls[5]
        if(ls[0]):#start game
            if(ls[7]):
                aa.rect.x,aa.rect.y=ra.randint(settings.w1+20,settings.w2-20),\
                                    ra.randint(settings.h1+20,settings.h2-20)
                ls[7]=False
            if(pygame.time.get_ticks()%30==1):
                if(ls[1] and a.rect.y>settings.h1):
                    a.rect.y-=settings.speed
                    lx.append(0)
                    ly.append(-settings.speed)
                elif(ls[2] and a.rect.y<settings.h2-settings.length):
                    a.rect.y+=settings.speed
                    lx.append(0)
                    ly.append(settings.speed)
                elif(ls[3] and a.rect.x>settings.w1):
                    a.rect.x-=settings.speed
                    lx.append(-settings.speed)
                    ly.append(0)
                elif(ls[4] and a.rect.x<settings.w2-settings.length):
                    a.rect.x+=settings.speed
                    lx.append(settings.speed)
                    ly.append(0)
                dir=-2
                for als in la:
                    als.rect.x+=lx[dir]
                    als.rect.y+=ly[dir]
                    dir-=1
            a.draw_bullet()
            g.update()
            aa.draw_bullet()
            for all in gg:
                all.draw_bullet()
            for walls in wall:
                walls.draw_bullet()
            timesec.changeText("time:"+str((pygame.time.get_ticks()-ls[6])//1000))
            timesec.draw_bullet()
            snakeLength.draw_bullet()
            if (pygame.sprite.spritecollideany(aa, g)):
                print("collide")
                ls[7]=True
                ls[8]+=1
                snakeLength.changeText("length:" + str(ls[8]))
                if(len(la)==0):
                    aaa = block(screen, pygame.Rect(a.rect.x,a.rect.y,
                                              settings.length, settings.length), lambda r: r, settings.snake_color)
                else:
                    aaa = block(screen, pygame.Rect(a.rect.x, a.rect.y,
                                                    settings.length, settings.length), lambda r: r,
                                settings.snake_color)
                for x in range(len(la)+1):
                    aaa.rect.x-=lx[-x-1]
                    aaa.rect.y-=ly[-x-1]
                gg.add(aaa)
                la.append(aaa)
        else:
            start.draw_bullet()
            start_1.draw_bullet()
            start_2.draw_bullet()
            block_.draw_bullet()
    while True:
        screen.fill(bg_color)
        check_event(ls,lx,ly,la)
        pygame.display.flip()
run_game()

最终完成版本:

import pygame,sys,numpy as nu,random as ra
from pygame.sprite import Sprite,Group
class setting():
    def __init__(self,w,h):
        self.w1=0.1*w
        self.w2=0.7*w
        self.w3=0.75*w
        self.w4=0.95*w
        self.h1=0.1*h
        self.h2=0.7*h
        self.length=0.05*self.w1
        self.speed=self.length
        self.wall_length=0.1*self.length
        self.wall_color=(0,0,0)
        self.snake_color=(0,0,230)
        self.head_color=(230,0,0)
class block(Sprite):
    def __init__(self,screen,rect,test,color):
        super().__init__()
        self.screen=screen
        self.rect=rect      #pygame.Rect(0,0,10,10)
        self.test=test
        self.color=color
    def update(self):
        self.rect=self.test(self.rect)
    def draw_bullet(self):
        pygame.draw.rect(self.screen,self.color,self.rect)
class textBlock(Sprite):
    def __init__(self,screen,rect,color,text,text_color):
        super().__init__()
        self.screen=screen
        self.rect=rect      #pygame.Rect(0,0,10,10)
        self.color=color
        self.text_color=text_color
        self.font=pygame.font.SysFont(None,68)
        self.image=self.font.render(text,True,self.text_color,self.color)
        self.image_rect=self.image.get_rect()
        self.image_rect.left=rect.left-200
        self.image_rect.top=rect.top-200
    def update(self):
        pass
    def changeText(self,text):
        self.image=self.font.render(text,True,self.text_color,self.color)
    def draw_bullet(self):
        self.screen.blit(self.image,self.image_rect)
        #pygame.draw.rect(self.screen, self.color, self.rect)
def run_game():
    pygame.init()
    w,h=1200,800
    screen=pygame.display.set_mode((w,h))
    pygame.display.set_caption("pygame1")
    bg_color=(230,230,230)
    settings=setting(w,h)

    g,gg=Group(),Group()

    a = block(screen, pygame.Rect((settings.w1+settings.w2)/2, (settings.h1+settings.h2)/2,
                                  settings.length, settings.length),lambda r:r,settings.head_color)
    aa = block(screen, pygame.Rect((settings.w1 + settings.w2) / 2, (settings.h1 + settings.h2) / 2,
                                  settings.length, settings.length), lambda r: r, settings.snake_color)
    g.add(a)
    #墙壁
    wall=Group()
    w1=block(screen, pygame.Rect(settings.w1, settings.h1, settings.wall_length, settings.h2-settings.h1),
              lambda r:r,settings.wall_color)
    w2 = block(screen, pygame.Rect(settings.w1, settings.h1, settings.w2-settings.w1, settings.wall_length),
               lambda r: r,settings.wall_color)
    w3 = block(screen, pygame.Rect(settings.w2, settings.h1, settings.wall_length, settings.h2-settings.h1),
               lambda r: r,settings.wall_color)
    w4 = block(screen, pygame.Rect(settings.w1, settings.h2, settings.w2-settings.w1, settings.wall_length),
               lambda r: r,settings.wall_color)
    wall.add(w1);wall.add(w2);wall.add(w3);wall.add(w4)

    w5 = block(screen, pygame.Rect(settings.w3, settings.h1, settings.wall_length, settings.h2 - settings.h1),
               lambda r: r, settings.wall_color)
    w6 = block(screen, pygame.Rect(settings.w3, settings.h1, settings.w4 - settings.w3, settings.wall_length),
               lambda r: r, settings.wall_color)
    w7 = block(screen, pygame.Rect(settings.w4, settings.h1, settings.wall_length, settings.h2 - settings.h1),
               lambda r: r, settings.wall_color)
    w8 = block(screen, pygame.Rect(settings.w3, settings.h2, settings.w4 - settings.w3, settings.wall_length),
               lambda r: r, settings.wall_color)
    wall.add(w5)
    wall.add(w6)
    wall.add(w7)
    wall.add(w8)
    timesec = textBlock(screen, pygame.Rect(settings.w3+200, settings.h1+200, 50,50), (230, 230, 230),
                        "time:"+str(pygame.time.get_ticks()), (200, 0, 20))
    leng=1
    snakeLength = textBlock(screen, pygame.Rect(settings.w3 + 200, settings.h1 + 400, 50, 50), (230, 230, 230),
                        "length:" + str(leng), (200, 0, 20))
    start=textBlock(screen,pygame.Rect(w/2,h/2,50,50),(230,230,230),"Gluttonous Snake",(0,200,200))
    start_1 = textBlock(screen, pygame.Rect(w / 2+50, h / 2+100, 50, 50), (230, 230, 230),
                        "Start game",(200,20,20))
    start_2 = textBlock(screen, pygame.Rect(w / 2 + 50, h / 2 + 200, 50, 50), (230, 230, 230),
                        "exit", (200, 20, 20))
    block_=block(screen, pygame.Rect(w / 2-170, h / 2-85, 10, 10),
              lambda r:r,settings.wall_color)
    kw,ks,ka,kd=False,False,False,False
    start_game,exit_game,generator,gameOver=False,False,False,False
    timeStart=0
    ls=[start_game,kw,ks,ka,kd,exit_game,timeStart,generator,leng,gameOver]
    lx,ly=[],[]
    def check_event(ls,lx,ly,gg):
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                sys.exit()
            elif event.type==pygame.KEYDOWN and ls[0] and not ls[9]:
                if event.key==pygame.K_w:
                    ls[1:5]=[True,False,False,False]
                elif event.key==pygame.K_a:
                    ls[1:5]=[False,False,True,False]
                elif event.key==pygame.K_s:
                    ls[1:5]=[False,True,False,False]
                elif event.key==pygame.K_d:
                    ls[1:5]=[False,False,False,True]
            elif event.type==pygame.KEYDOWN and not ls[9]:
                if event.key==pygame.K_SPACE :
                    if(ls[5]):
                        sys.exit()
                    else:
                        ls[0],ls[2],ls[7]=True,True,True
                        ls[6]=pygame.time.get_ticks()
                elif event.key==pygame.K_w or event.key==pygame.K_s:
                    if(ls[5]):
                        block_.rect.y-=100
                    else:
                        block_.rect.y+=100
                    ls[5]=not ls[5]
            elif event.type==pygame.KEYDOWN:
                if event.key==pygame.K_SPACE :
                    if(ls[5]):
                        sys.exit()
                    else:
                        ls[0],ls[2],ls[7],ls[9],ls[8]=True,True,True,False,1
                        la ,lx,ly= [],[],[]
                        snakeLength.changeText("length:" + str(ls[8]))
                        gg.empty()
                        ls[6]=pygame.time.get_ticks()
                        a.rect.x,a.rect.y=(settings.w1+settings.w2)/2, (settings.h1+settings.h2)/2
                elif event.key==pygame.K_w or event.key==pygame.K_s:
                    if(ls[5]):
                        block_.rect.y-=100
                    else:
                        block_.rect.y+=100
                    ls[5]=not ls[5]
        if(ls[0] and not ls[9]):#start game
            if(ls[7]):
                aa.rect.x,aa.rect.y=ra.randint(settings.w1+20,settings.w2-20),\
                                    ra.randint(settings.h1+20,settings.h2-20)
                ls[7]=False
            if(pygame.time.get_ticks()%30==1):
                if(ls[1] and a.rect.y>=settings.h1):
                    a.rect.y-=settings.speed
                    lx.append(0)
                    ly.append(-settings.speed)
                elif(ls[2] and a.rect.y<=settings.h2-settings.length):
                    a.rect.y+=settings.speed
                    lx.append(0)
                    ly.append(settings.speed)
                elif(ls[3] and a.rect.x>=settings.w1):
                    a.rect.x-=settings.speed
                    lx.append(-settings.speed)
                    ly.append(0)
                elif(ls[4] and a.rect.x<=settings.w2-settings.length):
                    a.rect.x+=settings.speed
                    lx.append(settings.speed)
                    ly.append(0)
                dir=-2
                for als in gg:
                    als.rect.x+=lx[dir]
                    als.rect.y+=ly[dir]
                    dir-=1
            a.draw_bullet()
            g.update()
            aa.draw_bullet()
            for all in gg:
                all.draw_bullet()
            for walls in wall:
                walls.draw_bullet()
            timesec.changeText("time:"+str((pygame.time.get_ticks()-ls[6])//1000))
            timesec.draw_bullet()
            snakeLength.draw_bullet()
            if (pygame.sprite.spritecollideany(aa, g)):
                print("collide")
                ls[7]=True
                ls[8]+=1
                snakeLength.changeText("length:" + str(ls[8]))
                aaa = block(screen, pygame.Rect(a.rect.x, a.rect.y,
                                                    settings.length, settings.length), lambda r: r,
                                settings.snake_color)
                for x in range(len(gg)+1):
                    aaa.rect.x-=lx[-x-1]
                    aaa.rect.y-=ly[-x-1]
                gg.add(aaa)
            if pygame.sprite.spritecollideany(a,wall) or pygame.sprite.spritecollideany(a,gg):
                ls[9],ls[1],ls[2],ls[3],ls[4]=True,False,False,False,False
                print("game over")
            if a.rect.x==settings.w1-settings.length or a.rect.x==settings.w2 \
                or a.rect.y==settings.h1-settings.length or a.rect.y==settings.h2:
                ls[9], ls[1], ls[2], ls[3], ls[4] = True, False, False, False, False
                print("game over")
        else:
            if ls[9]:
                start.changeText("again or exit")
                start_1.changeText("again")
            start.draw_bullet()
            start_1.draw_bullet()
            start_2.draw_bullet()
            block_.draw_bullet()
    while True:
        screen.fill(bg_color)
        check_event(ls,lx,ly,gg)
        pygame.display.flip()
run_game()

虽然可能还有不足之处,但玩起来感觉还不错。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python实战之利用pygame实现贪吃蛇游戏(二)

    一.前言 在上一篇博客中,我们实现了基本的界面搭建,这次实现一下逻辑部分. 二.创建蛇 首先,先分析一下蛇的移动,不然我们一定会吃亏的(别问,问就是自己写了一堆无效代码). 蛇的移动其实并没有想象中那样复杂,每一个模块都需要有一个方向,按照方向进行移动. 其实实际上就是一个出队的感觉,即每一个元素都取代上一个元素的位置,然后再按照贪吃蛇当前的方向,移动一下头节点即可. snake.py: """"

  • python实战之利用pygame实现贪吃蛇游戏(一)

    一.前言 之前尝试了自己用pygame写井字棋,这次玩的是贪吃蛇系列. 个人感觉模块可能会比较大,所以选择将函数和主要逻辑代码分在了两个文件中. fuc为函数模块,存储了事件感应和刷新界面等部分. main模块则是游戏的核心. 二.搭建界面 这里我就不重复了,可以先看一下这篇博客 其中界面的基本要素都有. main.py import pygame from fuc import * # 基本属性 lattice_wh = 20 #长宽 snake_color = (84, 255, 159)

  • 五分钟学会怎么用Pygame做一个简单的贪吃蛇

    Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发.我们今天将利用它来制作一款大家基本都玩过的小游戏--贪吃蛇. 一.需要导入的包 import pygame import time import random pygame:获取图形组件构建游戏 time:主要用来设置帧率 random:主要用来设置食物的刷新位置 二.窗口界面设置 首先我们初始化游戏,建立一个窗口 pygame.init() 然后我们定义游戏中需要使用的颜色,在这个示例中,我们定义了六

  • 使用pygame模块编写贪吃蛇的实例讲解

    python ### 刚学了python不久,发现了一个好玩的库pygame 使用pygame模块 利用面向对象的思想编写贪吃蛇,主要用到pygame.sprite: 游戏主类 import pygame,sys from snake_sprite import Game_sprite,Snake,Food SCREEN_RECT=pygame.Rect(0,0,828,600) IMG_URL="./image/bg.jpg" #主类 class Snakegame(object):

  • PyGame贪吃蛇的实现代码示例

    最近帮人做了个贪吃蛇的游戏(交作业用),很简单,界面如下: 开始界面: 游戏中界面: 是不是很简单.朴素.(欢迎大家访问GitHub) 游戏是基于PyGame框架制作的,程序核心逻辑如下: 游戏界面分辨率是640*480,蛇和食物都是由1个或多个20*20像素的正方形块儿(为了方便,下文用点表示20*20像素的正方形块儿)组成,这样共有32*24个点,使用pygame.draw.rect来绘制每一个点: 初始化时蛇的长度是3,食物是1个点,蛇初始的移动的方向是右,用一个数组代表蛇,数组的每个元素

  • pygame实现贪吃蛇游戏(上)

    本文实例为大家分享了pygame贪吃蛇游戏的具体代码,供大家参考,具体内容如下 1.准备工作 我们已经初始化了一个400*400的界面,为方便看我们的游戏,我们先在界面上画40*40的格子,即纵向切10份,横向切10份,这样我们就需要画20个线段,下面是20个线段的画法 for x in range(0,400,40): pygame.draw.line(screen,(255,255,255),(x,0),(x,400),1) for y in range(0,400,40): pygame.

  • 使用Python第三方库pygame写个贪吃蛇小游戏

    今天看到几个关于pygame模块的博客和视频,感觉非常有趣,这里照猫画虎写了一个贪吃蛇小游戏,目前还有待完善,但是基本游戏功能已经实现,下面是代码: # 导入模块 import pygame import random # 初始化 pygame.init() w = 720 #窗口宽度 h = 600 #窗口高度 ROW = 30 #行数 COL = 36 #列数 #将所有的坐标看作是一个个点,定义点类 class Point: row = 0 col = 0 def __init__(self

  • pygame实现贪吃蛇游戏

    本文实例为大家分享了pygame实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 为了简化起见,游戏素材暂定为两张简单的图片(文中用的是30*30).大家很方便就能制作. 背景也是纯黑填充.各种音乐字体特效玩法场景等大家可以自由发挥 import pygame import sys import random fps=6    #设置帧率 move={'up':[-30,0],'down':[30,0],'left':[0,-30],'right':[0,30]}  #上下左右映射为值    

  • python 使用pygame工具包实现贪吃蛇游戏(多彩版)

    今天我们用python和python的工具包pygame来编写一个贪吃蛇的小游戏 贪吃蛇游戏功能介绍 贪吃蛇的游戏规则如下: 通过上下左右键或者WASD键来移动蛇来,让它吃到食物,每吃到食物,蛇的长度变长,并获得分数.若蛇碰到游戏边际 或者自身,则蛇死亡,游戏结束. 游戏设计思路 根据游戏规则,我们需要: 1.初始化游戏环境. 2.初始化蛇.食物 3.监听键盘动作 4.蛇的运动,吃食物,是否死亡 5.该局游戏结束,是否还有再玩. 其中的难点在于如何在屏幕上展示蛇的运动,其实我们肉眼所见的蛇的运动

  • pygame实现贪吃蛇游戏(下)

    接着上篇pygame实现贪吃蛇游戏(上)继续介绍 1.豆子的吃掉效果 只需在代码最后移动蛇头的代码后增加一个蛇头和豆子坐标的判断即可 if snake_x == bean_x and snake_y == bean_y: bean_x,bean_y = get_bean_pos() 体验一下,现在蛇头碰到豆子后,豆子已经会消失了 2.蛇身的加长 前面我们给蛇身只设置了一个坐标,既然蛇身会越加越长,当然我们用一个数组去存这个身体是更合适的,于是我们把蛇身的变量做一些修改. 在初始化body_x和b

随机推荐