python贪吃蛇游戏源码

python贪吃蛇游戏源码

源码如下:

如果没有安装pygame游戏库,需要安装后才能正常使用

pygame游戏库获取如下:

https://pypi.org/project/pygame/

 

源码如下:

import random
import sys
import time
import pygame
from pygame.locals import *
from collections import dequeSCREEN_WIDTH = 600
SCREEN_HEIGHT = 480
SIZE = 20def print_text(screen, font, x, y, text, fcolor=(255, 255, 255)):imgText = font.render(text, True, fcolor)screen.blit(imgText, (x, y))def main():pygame.init()screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))pygame.display.set_caption('贪吃蛇')light = (100, 100, 100)  # 蛇的颜色dark = (200, 200, 200)   # 食物颜色font1 = pygame.font.SysFont('SimHei', 24)  # 得分的字体font2 = pygame.font.Font(None, 72)  # GAME OVER 的字体red = (200, 30, 30)                 # GAME OVER 的字体颜色fwidth, fheight = font2.size('GAME OVER')line_width = 1                      # 网格线宽度black = (0, 0, 0)                   # 网格线颜色bgcolor = (40, 40, 60)              # 背景色# 方向,起始向右pos_x = 1pos_y = 0# 如果蛇正在向右移动,那么快速点击向下向左,由于程序刷新没那么快,向下事件会被向左覆盖掉,导致蛇后退,直接GAME OVER# b 变量就是用于防止这种情况的发生b = True# 范围scope_x = (0, SCREEN_WIDTH // SIZE - 1)scope_y = (2, SCREEN_HEIGHT // SIZE - 1)# 蛇snake = deque()# 食物food_x = 0food_y = 0# 初始化蛇def _init_snake():nonlocal snakesnake.clear()snake.append((2, scope_y[0]))snake.append((1, scope_y[0]))snake.append((0, scope_y[0]))# 食物def _create_food():nonlocal food_x, food_yfood_x = random.randint(scope_x[0], scope_x[1])food_y = random.randint(scope_y[0], scope_y[1])while (food_x, food_y) in snake:# 为了防止食物出到蛇身上food_x = random.randint(scope_x[0], scope_x[1])food_y = random.randint(scope_y[0], scope_y[1])_init_snake()_create_food()game_over = Truestart = False       # 是否开始,当start = True,game_over = True 时,才显示 GAME OVERscore = 0           # 得分orispeed = 0.5      # 原始速度speed = orispeedlast_move_time = Nonepause = False       # 暂停while True:for event in pygame.event.get():if event.type == QUIT:sys.exit()elif event.type == KEYDOWN:if event.key == K_RETURN:if game_over:start = Truegame_over = Falseb = True_init_snake()_create_food()pos_x = 1pos_y = 0# 得分score = 0last_move_time = time.time()elif event.key == K_SPACE:if not game_over:pause = not pauseelif event.key in (K_w, K_UP):# 这个判断是为了防止蛇向上移时按了向下键,导致直接 GAME OVERif b and not pos_y:pos_x = 0pos_y = -1b = Falseelif event.key in (K_s, K_DOWN):if b and not pos_y:pos_x = 0pos_y = 1b = Falseelif event.key in (K_a, K_LEFT):if b and not pos_x:pos_x = -1pos_y = 0b = Falseelif event.key in (K_d, K_RIGHT):if b and not pos_x:pos_x = 1pos_y = 0b = False# 填充背景色screen.fill(bgcolor)# 画网格线 竖线for x in range(SIZE, SCREEN_WIDTH, SIZE):pygame.draw.line(screen, black, (x, scope_y[0] * SIZE), (x, SCREEN_HEIGHT), line_width)# 画网格线 横线for y in range(scope_y[0] * SIZE, SCREEN_HEIGHT, SIZE):pygame.draw.line(screen, black, (0, y), (SCREEN_WIDTH, y), line_width)if game_over:if start:print_text(screen, font2, (SCREEN_WIDTH - fwidth)//2, (SCREEN_HEIGHT - fheight)//2, 'GAME OVER', red)else:curTime = time.time()if curTime - last_move_time > speed:if not pause:b = Truelast_move_time = curTimenext_s = (snake[0][0] + pos_x, snake[0][1] + pos_y)if next_s[0] == food_x and next_s[1] == food_y:# 吃到了食物_create_food()snake.appendleft(next_s)score += 10speed = orispeed - 0.03 * (score // 100)else:if scope_x[0] <= next_s[0] <= scope_x[1] and scope_y[0] <= next_s[1] <= scope_y[1] \and next_s not in snake:snake.appendleft(next_s)snake.pop()else:game_over = True# 画食物if not game_over:# 避免 GAME OVER 的时候把 GAME OVER 的字给遮住了pygame.draw.rect(screen, light, (food_x * SIZE, food_y * SIZE, SIZE, SIZE), 0)# 画蛇for s in snake:pygame.draw.rect(screen, dark, (s[0] * SIZE + line_width, s[1] * SIZE + line_width,SIZE - line_width * 2, SIZE - line_width * 2), 0)print_text(screen, font1, 30, 7, f'速度: {score//100}')print_text(screen, font1, 450, 7, f'得分: {score}')pygame.display.update()if __name__ == '__main__':main()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/65412.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android贪吃蛇游戏实现

说明&#xff1a;贪吃蛇游戏是一款比较经典的休闲游戏&#xff0c;这是我做的第一个Android项目&#xff0c;会存在一些问题&#xff0c;文章包括项目的部分源码以及运行界面的一些图片&#xff0c;项目也参考学习了许多大佬的文章&#xff0c;会在文章最后面贴出参考文章&…

VC版的贪吃蛇游戏

学C的时候&#xff0c;课程设计编写了C版的贪吃蛇游戏&#xff0c;当时&#xff0c;将很多的东西都分装在了Snake类中&#xff0c;所以&#xff0c;将其移植到VC中&#xff0c;只需将Snake类稍作修改&#xff0c;然后添加到VC中即可。 此处&#xff0c;我感受到复用性的好处&am…

微信小程序:贪吃蛇

微信小程序&#xff1a;贪吃蛇 wx.js var startX 0; var startY 0; var moveX 0; var moveY 0; //移动位置和开始位置的坐标差值 var X 0; var Y 0; //蛇的对象 var snake {x: 0,y: 0,color: "#ff0000", w: 20,h: 20, } //食物对象 var food {x: 0,y: 0,co…

贪吃蛇的小程序

1 创建项目 1.打开微信开发者工具如图所示的界面&#xff0c;点击“ 2.填写项目以后&#xff0c;点击确定即可。如图所示&#xff1a; 2 编程 1.编写index.wxml的代码如下&#xff1a; <view class"container"><canvas style"width:100%;height:1…

【Python游戏】贪吃蛇升级版——双人贪吃蛇小游戏 | 附带源码

前言 之前做过一个单人版的贪吃蛇&#xff0c;所以常常就是我只能看着别人玩&#xff0c;或者别人看着我玩&#xff0c;却没法两个人一起愉快地玩耍。 由此产生了做一个可以双人玩的贪吃蛇想法&#xff0c;并且从小时候一直到现在&#xff0c;之前python还没有那么火的时候&am…

html版贪吃蛇

<!doctype html><html><head></head><body> <div id"box" style"width:256px;font:25px/25px 宋体;background:#000;color:#9f9;"></div><script> var arr[15]; var next10;//最好判断一下arr[1]!arr[0]x…

贪吃蛇智能版(高级)

说明&#xff1a; 在贪吃蛇智能版&#xff08;中级&#xff09;的基础之上&#xff0c;增加了判断小食物是否安全的方法&#xff0c;并且增加了在寻找食物路径失败和寻找尾巴失败之后&#xff0c;会进行一小段的随机溜达&#xff0c;直到重新找到路径为止&#xff0c;当然这段…

贪吃蛇微信小程序源码

每日分享两个小程序源码 下载地址&#xff1a;无极低码&#xff1a;wheart.cnhttps://wheart.cn/so/home?mdw&ridf6d836c8-d54a-11ed-96fa-52540016e6ac <!--snake.wxml--> <view class"control" bindtouchstart"tapStart" bindtouchmove&qu…

win10系统激活提示无法连接到你组织的激活服务器如何解决

1、在桌面新建一个文本文档&#xff0c;把以下代码复制进去&#xff0c;如图所示&#xff1a; slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr /skms kms.03k.org slmgr /ato 2、点击文件选择“另存为”&#xff0c;在弹出的界面中&#xff0c;将保存位置选择在桌面&#xff…

无法在此设备上激活WINDOWS因为无法连接到你的组织的激活服务器

在搜索框里搜索 cmd&#xff0c; 使用管理员权限运行&#xff0c;执行一句命令&#xff1a; slmgr /skms http://kms.03k.org点完回车以后&#xff0c;再打一句命令激活 slmgr /ato查激活日期 按下Windows R &#xff0c;输入cmd&#xff0c;出来dos对话框后&#xff0c;输入…

microsoft微软登录新账户/切换账户失败,一直转圈,提示“你似乎没有连接到internet”

无论有没有微软账户&#xff0c;是切换账户还是新电脑登录&#xff0c;原理都是一样的&#xff0c;先使用一个账号注册/登录/设置好微软账户&#xff0c;然后再进行你原本的操作。 在可以进入到桌面并且联网的情况下&#xff0c;登录不上微软账户的几种常用解决方法&#xff1…

登录微软账号时无法连接到网络

登录微软账号时无法连接到网络 关闭代理&#xff0c;手动设置ipv4DNS地址&#xff08;微软dns服务器&#xff1a;4.2…2.1)&#xff0c;改完记得改回来。

解决微软newbing chat的Sorry, looks like your network settings are preventing access to this featur问题

2023.03.25最近大家都有疑惑&#xff0c;已经"魔法"了&#xff0c;突然newbing chat用不了&#xff0c;弹出“Sorry, looks like your network settings are preventing access to this featur”&#xff0c; 已下是解决方法&#xff08;步骤操作的前提&#xff1a;…

成功解决长时间挂起虚拟机后再次打开无法连接网络,并提示网络激活失败(亲测有效)

成功解决长时间挂起虚拟机后再次打开无法连接网络&#xff0c;并提示网络激活失败&#xff08;亲测有效&#xff01;&#xff09; 之前做区块链的一个虚拟机很久没打开&#xff0c;一直处于挂起状态&#xff0c;一直提示网络连接激活失败。试了很多种方法没解决&#xff0c;更…

专治疑难系列 - 无法激活网络的解决方法

‍‍&#x1f3e1;博客主页&#xff1a; Passerby_Wang的博客_CSDN博客-系统运维,云计算,Linux基础领域博主 &#x1f310;所属专栏&#xff1a;『转治疑难系列』 &#x1f30c;上期文章&#xff1a; 无 &#x1f4f0;如觉得博主文章写的不错或对你有所帮助的话&#xff0c;还…

Nature综述:应对新出现的抗真菌耐药性对人类健康的威胁

编译&#xff1a;微科盟小木&#xff0c;编辑&#xff1a;微科盟居居、江舜尧。 微科盟原创微文&#xff0c;欢迎转发转载&#xff0c;转载须注明来源《微生态》公众号。 导读 侵袭性真菌感染对公共健康构成了重大威胁&#xff0c;是抗菌素耐药性的一个未得到充分认识的组成部分…

在传染病中,肠道微生物-免疫力-营养在优化治疗策略中的作用

谷禾健康 传染病&#xff0c;肠道微生物&#xff0c;营养 传染病和感染目前是许多地区尤其是低收入国家主要死亡原因&#xff0c;也是婴儿和老年人等弱势群体的主要风险。免疫系统在这些感染的易感性、持续性和清除中起着至关重要的作用。由于 70-80% 的免疫细胞存在于肠道中&a…

Microbiome:人类肠道和病原菌的可移动抗性组驱动环境中抗生素抗性增长

点击蓝字 关注我们 编译&#xff1a;张璐 校稿&#xff1a;张慧林 论文ID 原名&#xff1a;Mobile resistome of human gut and pathogen drives anthropogenic bloom of antibiotic resistance 译名&#xff1a;人类肠道和病原菌的可移动抗性组驱动环境中抗生素抗性增长 第…

抗生素对微生物组和人体健康的影响

谷禾健康 说起抗生素&#xff0c;可能会觉得有些抽象&#xff0c;那如果说阿莫西林、头孢、红霉素、阿奇霉素等等这些日常生活经常使用的药物&#xff0c;会不会有一些熟悉的感觉。当我们发现身体有一些小炎症(如头痛发热、喉咙痒疼、咳嗽)的时候&#xff0c;首先会想到要使用这…

肠道菌群、性激素与疾病:探索它们的交互作用

谷禾健康 我们的身体中有很多不同的器官&#xff0c;组织&#xff0c;腺体等会产生许多信号分子来精确控制和影响身体的反应和活动&#xff0c;这些信号分子包括激素、神经递质、生长因子、细胞因子等。它们可以促进或抑制细胞的生长和分化&#xff0c;调节细胞间的相互作用和通…