当前位置: 首页 > news >正文

pythonGame-实现简单的贪食蛇游戏

通过python简单复现贪食蛇游戏。

使用到的库函数:
import pygame
import time
import random
游戏源码:
import pygame
import time
import randompygame.init()white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)dis_width = 600
dis_height = 400dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('贪食蛇游戏')clock = pygame.time.Clock()snake_block = 10
snake_speed = 15font_style = pygame.font.SysFont(None, 35)
score_font = pygame.font.SysFont(None, 35)def your_score(score):value = score_font.render("SCORE: " + str(score), True, yellow)dis.blit(value, [0, 0])def our_snake(snake_block, snake_list):for x in snake_list:pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])def message(msg, color):mesg = font_style.render(msg, True, color)dis.blit(mesg, [dis_width / 6, dis_height / 3])def gameLoop():game_over = Falsegame_close = Falsex1 = dis_width / 2y1 = dis_height / 2x1_change = 0y1_change = 0snake_List = []Length_of_snake = 1foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0while not game_over:while game_close:dis.fill(blue)message("Game over! Q-quit or C-continue", red)your_score(Length_of_snake - 1)pygame.display.update()for event in pygame.event.get():if event.type == pygame.KEYDOWN:if event.key == pygame.K_q:game_over = Truegame_close = Falseif event.key == pygame.K_c:gameLoop()for event in pygame.event.get():if event.type == pygame.QUIT:game_over = Trueif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT:x1_change = -snake_blocky1_change = 0elif event.key == pygame.K_RIGHT:x1_change = snake_blocky1_change = 0elif event.key == pygame.K_UP:y1_change = -snake_blockx1_change = 0elif event.key == pygame.K_DOWN:y1_change = snake_blockx1_change = 0if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:game_close = Truex1 += x1_changey1 += y1_changedis.fill(blue)pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])snake_Head = []snake_Head.append(x1)snake_Head.append(y1)snake_List.append(snake_Head)if len(snake_List) > Length_of_snake:del snake_List[0]for x in snake_List[:-1]:if x == snake_Head:game_close = Trueour_snake(snake_block, snake_List)your_score(Length_of_snake - 1)pygame.display.update()if x1 == foodx and y1 == foody:foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0Length_of_snake += 1clock.tick(snake_speed)pygame.quit()quit()gameLoop()
运行效果:

简单的贪食蛇游戏实现,有边界,撞墙会挂掉。建议作为兴趣学习。

http://www.lryc.cn/news/407606.html

相关文章:

  • 2024年软件系统与信息处理国际会议(ICSSIP 2024)即将召开!
  • 使用vscode连接开发机进行python debug
  • (家用)汽车充电桩项目总结分析
  • JMeter接口测试:测试中奖概率!
  • 生成式人工智能之路,从马尔可夫链到生成对抗网络
  • qt做的分页控件
  • MySQL with recursive 用法浅析
  • ROS2常用命令集合
  • VUE 子组件可以直接改变父组件的数据吗
  • Redis 持久化详解
  • 基于riscv64架构的Dayu800开发板的napi_demo开发介绍
  • HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据
  • HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号5
  • Tekion 选择 ClickHouse Cloud 提升应用性能和指标监控
  • mysql之触发器的使用
  • 使用Java和Hazelcast实现分布式数据存储
  • Hi3751V560_SELinux
  • 邮件安全篇:邮件反垃圾系统运作机制简介
  • LoRaWAN设备的两种入网方式(ABP和OTAA)
  • 【Rust光年纪】极致性能与灵活选择:Rust语言数学优化库详解
  • 机器学习 | 回归算法原理——最小二乘法
  • .NET Core 中的字符串压缩方法
  • SQL 基础知识
  • 【数据结构初阶】单链表经典算法题十二道——得道飞升(上篇)
  • Python爬虫技术 第16节 XPath
  • 本地部署,Whisper: 开源语音识别模型
  • history,hash缓存那些事
  • Spring Boot的Web开发
  • Spark 解析嵌套的 JSON 文件
  • VMware虚拟机中CentOS7自定义ip地址并且固定ip