美文网首页
pygame 简易贪吃蛇实现

pygame 简易贪吃蛇实现

作者: 呆呆的院长 | 来源:发表于2019-12-20 14:09 被阅读0次

最近想用动手51单片机做个贪吃🐍的游戏机,发现没有思路索用python实现了一把(日常摸鱼),关于51贪吃蛇游戏机的事日后在更新

代码

import pygame,random

from pygame.locals import *
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,random
#初始化
pygame.init()
W=800
H=600
ROW=30
COL=40
size=(W,H)
window = pygame.display.set_mode(size)
pygame.display.set_caption('贪吃蛇')

head = Point(row=int(ROW/2),col=int(COL/2))
snacks=[
    Point(row=head.row,col=head.col+1),
    Point(row=head.row,col=head.col+2),
    Point(row=head.row,col=head.col+3)
]
#生成food
def gen_food():
    while 1:
        pos =Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1))
        is_coll=False
        #是否碰上🐍
        if head.col==pos.col and head.row==pos.row:
            is_coll=True
        for snack in snacks:
            if snack.col==pos.col and snack.row == pos.row:
                is_coll=True
                break
        if not  is_coll:
            break
    return pos


#定义坐标

food = gen_food()
head_color=(228,0,0)
food_color= (255,225,0)
snack_color=(128,128,128)
direct='left'

#画
def rect(point,color):
    cell_width=W/COL
    cell_hight=H/ROW
    left=point.col*cell_width
    top =point.row*cell_hight
    pygame.draw.rect(window,color,(left,top,cell_width,cell_hight),0)


#游戏循环
quit = True
clock = pygame.time.Clock()
while quit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            quit=False
        if event.type ==pygame.KEYDOWN :
            if event.key == pygame.K_LEFT:
                if direct=='up' or direct=='down':
                    direct='left'
            if event.key == pygame.K_RIGHT:
                if direct == 'up' or direct == 'down':
                    direct = 'right'
            if event.key == pygame.K_DOWN:
                if direct == 'left' or direct == 'right':
                    direct = 'down'
            if event.key == pygame.K_UP:
                if direct == 'left' or direct == 'right':
                    direct = 'up'
#吃东西
    eat=(head.row==food.row and head.col==food.col)
#处理身子
# 1.把原来的头插到snack头上
    snacks.insert(0,head.copy())
#2.删掉snacks最后一个
    if not eat:
        snacks.pop()
    if eat:
        food = gen_food()



#移动🐍

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

     #撞自己
    for snack in snacks:
        if head.row==snack.row and snack.col==head.col:
            dead=True
            print('defefefd')
            break
    if dead==True:
        print("死了")
        quit=False
    #渲染——画出来

    pygame.draw.rect(window,(255,255,255),(0,0,W,H))#背景
    #画蛇头
    rect(head,head_color)
    rect(food,food_color)
    #画出蛇的身体
    for snack in snacks:
        rect(snack,snack_color)
    # 让出控制权
    pygame.display.flip()
    #设置帧频
    clock.tick(10)

运行结果:


贪吃蛇.png

相关文章

  • pygame 简易贪吃蛇实现

    最近想用动手51单片机做个贪吃?的游戏机,发现没有思路索用python实现了一把(日常摸鱼),关于51贪吃蛇游戏机...

  • Python游戏练习之贪吃蛇示例

    这篇文章主要介绍了python实现贪吃蛇小游戏,由键盘控制snake方向,吃食物功能。游戏基于pygame框架制作...

  • Python高级版贪吃蛇,F5运行代码速开一把!

    来一起玩贪吃蛇?python?这是个有趣的故事! import pygame import sys import ...

  • Pygame贪吃蛇

    点击开始游戏开始 按键盘ESC退出游戏 根据方向按键实现蛇的移动 按空格键实现暂停或者开始功能 实时显示分数功能 ...

  • 使用pygame制作一个贪吃蛇的小游戏

    之前我们已经学习了如果使用pygame创建一个窗口,现在我们来学习使用pygame来制作一个经典的小游戏--贪吃蛇...

  • 自制简易贪吃蛇

    今天实现一款经典小游戏的实例,贪吃蛇想必大家都有接触过,当然今天实现的细节没有那么全面,只能算是简易版本的小游戏,...

  • Mac pygame踩坑(1)

    初次使用pygame实现绘图功能就踩坑 直接上代码 import pygame pygame.init() # 创...

  • 贪吃蛇(基于pygame)

  • day11Pythongame应用

    1.pygame事件及鼠标键盘操作 2.简易pygame设计 3.鼠标拖拽图片功能 4.动画效果 5.球球游戏 6...

  • 音频播放 - pygame

    #该代码可实现制定时间段音乐播放 # pip install pygame import pygame,sys p...

网友评论

      本文标题:pygame 简易贪吃蛇实现

      本文链接:https://www.haomeiwen.com/subject/ngaepctx.html