当前位置:首页 > 技术 > 正文内容

Python 简易版贪食蛇(源代码)

Lotus2022-10-30 14:44技术

Python 简易版贪食蛇

简易版贪食蛇代码如下,直接运行即可。

1. 效果图

在这里插入图片描述

2.源代码

源代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygame as pygame
import random
import sys

from pygame.rect import Rect


class Snake(object):
    def __init__(self):
        self.black = pygame.Color(0, 0, 0)
        self.green = pygame.Color(0, 255, 0)
        self.white = pygame.Color(255, 255, 255)

    def gameover(self):
        pygame.quit()
        sys.exit()

    def initialize(self):
        pygame.init()
        clock = pygame.time.Clock()

        playSurface = pygame.display.set_mode((800, 600))

        pygame.display.set_caption('tanshishe')

        snakePosition = [80, 80]

        snakebody = [[80, 80], [60, 80], [40, 80]]

        targetPosition = [200, 400]
        targetflag = 1
        direction = 'right'

        changeDirection = direction
        self.main(snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface, clock)

    def main(self, snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface,
             clock):
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()

                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_RIGHT:
                        changeDirection = 'right'
                        print("向右转")
                    if event.key == pygame.K_LEFT:
                        changeDirection = 'left'
                        print("向左转")
                    if event.key == pygame.K_DOWN:
                        changeDirection = 'down'
                        print("向上走")
                    if event.key == pygame.K_UP:
                        changeDirection = 'up'
                        print("向下走")
                    if event.key == pygame.K_ESCAPE:
                        pygame.event.post(pygame.event.Event(pygame.QUIT))

            if (changeDirection == 'left' and not direction == 'right'):
                direction = changeDirection
            if (changeDirection == 'right' and not direction == 'left'):
                direction = changeDirection
            if (changeDirection == 'down' and not direction == 'up'):
                direction = changeDirection
            if (changeDirection == 'up' and not direction == 'down'):
                direction = changeDirection

            if direction == 'right':
                snakePosition[0] += 20
            if direction == 'left':
                snakePosition[0] -= 20
            if direction == 'down':
                snakePosition[1] += 20
            if direction == 'up':
                snakePosition[1] -= 20

            snakebody.insert(0, list(snakePosition))
            if (snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]):
                targetflag = 0
            else:
                snakebody.pop()
            if targetflag == 0:
                x = random.randrange(1, 40)
                y = random.randrange(1, 30)
                targetPosition = [int(x * 20), int(y * 20)]
                targetflag = 1

            playSurface.fill(self.black)
            for position in snakebody:
                pygame.draw.rect(playSurface, self.white, Rect(position[0], position[1], 20, 20))
                pygame.draw.rect(playSurface, self.green, Rect(targetPosition[0], targetPosition[1], 20, 20))

            pygame.display.flip()
            if (snakePosition[0] > 900 or snakePosition[0] < 0):
                snake.gameover()
            elif (snakePosition[1] > 800 or snakePosition[0] < 0):
                snake.gameover()
            for i in snakebody[1:]:
                if (snakePosition[0] == i[0] and snakePosition[1] == i[1]):
                    snake.gameover()
            clock.tick(5)


snake = Snake()
snake.initialize()

原文链接

扫描二维码推送至手机访问。

版权声明:本文来源于网络,仅供学习,如侵权请联系站长删除。

本文链接:https://news.layui.org.cn/post/985.html

分享给朋友:

“Python 简易版贪食蛇(源代码)” 的相关文章

Vue3 Vite3 多环境配置 - 基于 vite 创建 vue3 全家桶项目(续篇)

在项目或产品的迭代过程中,通常会有多套环境,常见的有: dev:开发环境 sit:集成测试环境 uat:用户接收测试环境 pre:预生产环境 prod:生产环境 环境之间配置可能存在差异,如接口地址、全局参数等。在基于 vue-cli (webpack) 的项目中只需要添加 .env.xxx 文件,然后在 package.json 的 scripts 启动或打包命令中指定 mode...

【存储数据恢复】某品牌EqualLogic系列存储介绍&常见故障的数据恢复方法

某品牌EqualLogic系列存储介绍: 某品牌EqualLogic系列存储可以通过连接串口先对存储进行初始化。 通过浏览器登录配置的ip地址,账号默认:grpadmin,密码默认:grpadmin;也可以通过串口登陆查看状态。 卷的划分和访问如下图: 底层结构: 以9块盘组建磁盘阵列为例,该存储在创建RAID的时候,会默认分配一块热备盘,并不是全局热备。 用8块...

十分钟速成DevOps实践

摘要:以华为云软件开发平台DevCloud为例,十分钟简单体验下DevOps应用上云实践——H5经典小游戏上云。 本文分享自华为云社区《​​《DevOps实践秘籍》十分钟速成DevOps实践​​》,作者:AppCloud小助手 。 DevOps是什么? DevOps是Development和Operations的组合词,简单点理解就是研发运维一体化的方法论,目的是通过自动化“软件交付”和“架构变...

Go实现优雅关机与平滑重启

前言 优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种对客户端友好的关机方式。而执行Ctrl+C关闭服务端时,会强制结束进程导致正在访问的请求出现问题。 实现原理 Go 1.8版本之后, http.Server 内置的 Shutdown() 方法就支持优雅地关机,说明一下Shutdown工作的机制:当程序检测到中断信号时,我们调用http...

将 N 叉树编码为二叉树

将 N 叉树编码为二叉树 作者:Grey 原文地址: 博客园:将 N 叉树编码为二叉树 CSDN:将 N 叉树编码为二叉树 题目描述 将一棵n叉树编码为一棵二叉树,并对二叉树进行解码,得到原始的n叉树。 n叉树是一棵有根树,其中每个节点的子树不超过n个。 类似地,二叉树是一棵有根树,其中每个节点的子树不超过2个。 编码/解码算法的工作方式不受限制。 您只需要确保一个n叉树可以被编码为一个二叉树,并...

Codeforces Round #822 (Div. 2) A-F

比赛链接 A 题解 知识点:贪心。 注意到任意三根木棍的相等最优解是最长减最小,因此从小到大排序,三个三个取,取最小值。 时间复杂度 \(O(n\log n)\) 空间复杂度 \(O(n)\) 代码 #include <bits/stdc++.h> #define ll long long using namespace std; ll a[307]; bool solve() {...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。