python游戏循环设置_Pygame:游戏循环前的初始菜单

我正在制作一个this game的版本,并尝试将起始菜单设置为:

我的计划是先做surface.fill(overlaycolor),然后将这个图像blitting到屏幕上。在一个while循环中。之后,在用户想玩(另一个问题除外)之后,我们将进入另一个while循环。在

我试过这么做,但这只会给我一个黑幕。在

这是我的代码:import pygame, sys, random

from pygame.locals import *

# set up pygame

pygame.init()

mainClock = pygame.time.Clock()

# set up the window

width = 800

height = 600

thesurface = pygame.display.set_mode((width, height), 0, 32)

pygame.display.set_caption('')

bg = pygame.image.load("bg.png")

menu1 = pygame.image.load("menu1.png")

basicFont = pygame.font.SysFont('calibri', 36)

# set up the colors

BLACK = (0, 0, 0)

GREEN = (0, 255, 0)

WHITE = (255, 255, 255)

BLUE = (0, 0, 255)

overlay = (121, 126, 128)

playercolor = BLUE

# set up the player and food data structure

foodCounter = 0

NEWFOOD = 20

FOODSIZE = 10

splitting = False

player = pygame.draw.circle(thesurface, playercolor, (60, 250), 40)

foods = []

for i in range(20):

foods.append(pygame.Rect(random.randint(0, width - FOODSIZE), random.randint(0, height - FOODSIZE), FOODSIZE, FOODSIZE))

# set up movement variables

moveLeft = False

moveRight = False

moveUp = False

moveDown = False

MOVESPEED = 10

size = 10

score = size

gameisplaying = False

while True:

thesurface.fill(overlay)

thesurface.blit(menu1, (400,400))

for event in pygame.event.get():

if event.type == pygame.MOUSEBUTTONUP:

pos = pygame.mouse.get_pos()

gameisplaying = True

break

# run the game loop

while gameisplaying:

thesurface.blit(bg, (0, 0))

# check for events

for event in pygame.event.get():

if event.type == QUIT:

pygame.quit()

sys.exit()

if event.type == KEYDOWN:

# change the keyboard variables

if event.key == K_LEFT or event.key == ord('a'):

moveRight = False

moveLeft = True

if event.key == K_RIGHT or event.key == ord('d'):

moveLeft = False

moveRight = True

if event.key == K_UP or event.key == ord('w'):

moveDown = False

moveUp = True

if event.key == K_DOWN or event.key == ord('s'):

moveUp = False

moveDown = True

if event.key == K_SPACE and size >= 32: # XXX if size and space set splitting to true

splitting = True

if event.type == KEYUP:

if event.key == K_ESCAPE:

pygame.quit()

sys.exit()

if event.key == K_LEFT or event.key == ord('a'):

moveLeft = False

if event.key == K_RIGHT or event.key == ord('d'):

moveRight = False

if event.key == K_UP or event.key == ord('w'):

moveUp = False

if event.key == K_DOWN or event.key == ord('s'):

moveDown = False

if event.key == ord('x'):

player.top = random.randint(0, height - player.height)

player.left = random.randint(0, width - player.width)

if event.type == MOUSEBUTTONUP:

foods.append(pygame.Rect(event.pos[0], event.pos[1], FOODSIZE, FOODSIZE))

foodCounter += 1

if foodCounter >= NEWFOOD:

# add new food

foodCounter = 0

foods.append(pygame.Rect(random.randint(0, width - FOODSIZE), random.randint(0, height - FOODSIZE), FOODSIZE, FOODSIZE))

if 100>score>50:

MOVESPEED = 9

elif 150>score>100:

MOVESPEED = 8

elif 250>score>150:

MOVESPEED = 6

elif 400>score>250:

MOVESPEED = 5

elif 600>score>400:

MOVESPEED = 3

elif 800>score>600:

MOVESPEED = 2

elif score>800:

MOVESPEED = 1

# move the player

if moveDown and player.bottom < height:

player.top += MOVESPEED

if moveUp and player.top > 0:

player.top -= MOVESPEED

if moveLeft and player.left > 0:

player.left -= MOVESPEED

if moveRight and player.right < width:

player.right += MOVESPEED

# splitting

if not splitting:

pygame.draw.circle(thesurface, playercolor, player.center, size)

else:

pygame.draw.circle(thesurface, playercolor,(player.centerx,player.centery),int(size/2))

pygame.draw.circle(thesurface, playercolor,(player.centerx+size,player.centery+size),int(size/2))

# check if the player has intersected with any food squares.

for food in foods[:]:

if player.colliderect(food):

foods.remove(food)

size+=1

# draw the food

for i in range(len(foods)):

pygame.draw.rect(thesurface, GREEN, foods[i])

printscore = basicFont.render("Score: %d" % size, True, (0,0,0))

thesurface.blit(printscore, (10, 550))

pygame.display.update()

# draw the window onto the thesurface

pygame.display.update()

mainClock.tick(80)

感谢帮助!在

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

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

相关文章

vue.js基础知识篇(7):表单校验详解

目录 网盘 第12章:表单校验 1.npm安装vue-validator $ npm install vue-validator 代码示例: var Vuerequire("vue"); var VueValidatorrequire("vue-validator"); Vue.use(VueValidator); 2.直接使用script标签引入vue.js 要下载vue-validator&#xff0c…

修改linux绑定的域名,手工修改linux系统下DA面板绑定的域名

举例说明手工修改DA面板下虚拟主机ryan绑定的域名&#xff0c;只需要 vi /usr/local/directadmin/data/users/ryan/httpd.conf代码如下&#xff1a;# Auto generated apache config file by DirectAdmin version 1.46.3# Modifying this file is not recommended as any change…

在JUnit测试中使用Builder模式

这并不是要成为技术含量很高的职位。 这篇文章的目的是为您提供一些指导&#xff0c;以使您的JUnit测试生活更加轻松&#xff0c;使您能够在几分钟内编写复杂的测试场景&#xff0c;并具有易于阅读的测试优势。 单元测试中有两个主要部分&#xff0c;需要编写许多引导程序代码&…

SQL数据库中临时表、临时变量和WITH AS关键词创建“临时表”的区别

原文链接&#xff1a;https://www.cnblogs.com/zhaowei303/articles/4204805.html SQL数据库中数据处理时&#xff0c;有时候需要建立临时表&#xff0c;将查询后的结果集放到临时表中&#xff0c;然后在针对这个数据进行操作。 创建“临时表”&#xff08;逻辑上的临时表&…

python 三维绘图库_Python第三方库matplotlib(2D绘图库)入门与进阶

Matplotlib一 简介&#xff1a;Matplotlib是一个Python 2D绘图库&#xff0c;它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。 Matplotlib可用于Python脚本&#xff0c;Python和IPython shell&#xff0c;Jupyter笔记本&#xff0c;Web应用程序服务…

zbb20170626 myeclipse 2017 ci 构建 spring hibernate struts jar

转载于:https://www.cnblogs.com/super-admin/p/7081209.html

linux处理机调度实验报告,模拟Linux操作系统下处理机调度实验报告

在采用多道系统的设计程序中,往往有若干进程同时处于就绪状态。当就绪状态进程数大于处理机数时,就必须按照某种策略来决定哪些进程优先占用处理机。本实验模拟在单处理机情况下处理机调度处理机调度一、实验目的&#xff1a;1、了解Linux下Emacs编辑器的使用方法&#xff0c;掌…

Java线程:保留的内存分析

本文将为您提供一个教程&#xff0c;使您可以确定活动应用程序Java线程保留Java堆空间的数量和位置。 将提供来自Oracle Weblogic 10.0生产环境的真实案例研究&#xff0c;以使您更好地理解分析过程。 我们还将尝试证明过多的垃圾回收或Java堆空间的内存占用问题通常不是由真正…

软件测试白皮书-等价类

设有一个档案管理系统&#xff0c;要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月&#xff0c;并规定日期由6位数字字符组成&#xff0c;前4位表示年&#xff0c;后2位表示月。现用等价类划分法设计测试用例&#xff0c;来测试程序的"日期检查功能&qu…

深入css布局 (1) — 盒模型 元素分类

深入css布局&#xff08;1&#xff09;—— 盒模型 & 元素分类 “ 在css知识体系中&#xff0c;除了css选择器&#xff0c;样式属性等基础知识外&#xff0c;css布局相关的知识才是css比较核心和重要的点。今天我们来深入学习一下css布局相关的知识。” 首先来列下大纲 盒模…

批改网禁止粘贴怎么破_教育部对家长批改作业表态了,明令禁止!你怎么看?...

互联网的发展&#xff0c;的确方便了现代人生活。视频电话、出去买东西你都不用带钱带卡&#xff0c;手机一扫就可以完成支付。很多中小学的家长都会建一个家长群&#xff0c;方便老师和家长的沟通。这个群可以说是家长和学校的桥梁和纽带&#xff0c;家长们为了支持老师的工作…

电子科大专科c语言作业1,电子科大15春《C语言(专科)》在线作业试卷.docx

电子科大 15 春《 C 语言(专科)》在线作业一、单选题(共20 道试题&#xff0c;共100 分。)1.对于 int*p;inta[];pa;的合法运算 ()a;pa;p; 相当于 a;p; 相当于 a[1];若 p 中的地址为 100 则 p; 运算后&#xff0c;则其值为 100-----------------选择&#xff1a; C已知 intb; 则…

MapReduce算法–顺序反转

这篇文章是介绍MapReduce算法的系列文章的另一部分&#xff0c;该书在使用MapReduce进行数据密集型文本处理中找到。 先前的文章是Local Aggregation &#xff0c; Local Aggregation PartII和创建共现矩阵 。 这次我们将讨论阶数反转模式。 顺序反转模式利用的MapReduce来计算…

xss防御

http://blog.csdn.net/ghsau/article/details/17027893转载于:https://www.cnblogs.com/jiangjing/p/8076216.html

移动端页面字体在微信被放大,导致排版错乱

在开发微信页面的时候&#xff0c;之前一直没有测出这个问题。直到某天领导的手机出现了排版错位的问题&#xff0c;拿着手机质问我的工作态度。 Google了一下发现原来微信调整了字体大小会放大网页的字体&#xff0c;导致排版混乱。通过设置可以禁止网页字体被放大&#xff1a…

液压支架销轴力学计算分析研究_基于RFID射频精准定位的智能开采研究与应用...

一、项目背景近年来随着智能开采技术的不断发展&#xff0c;装备和新工艺不断更新换代,在智能开采中&#xff0c;对采煤机位置的精准定位是能否实现智能开采的关键&#xff0c;只有准确无误地获取煤机的准确位置&#xff0c;才能实现工作面的智能化开采&#xff0c;进而提高生产…

cf 821E Okabe and El Psy Kongroo(矩阵快速幂)

链接&#xff1a;http://codeforces.com/problemset/problem/821/E 分析&#xff1a;由于有边界而且不同段边界还不同&#xff0c;直接算是不行的。。k是1e18&#xff0c;dp也不行。。用一个16维的向量表示某一列16个位置可能的种类数&#xff0c;到下一列的转移矩阵容易得到&a…

您是否能及时编译?

还记得上次被C开发人员嘲笑的时候吗&#xff1f; Java如此繁琐&#xff0c;以至于他们甚至都不会考虑使用这种语言&#xff1f; 在许多方面&#xff0c;这一概念仍然成立。 但是对于典型的用法&#xff08;在大型企业的骨干中&#xff09;&#xff0c;Java性能绝对可以与许多竞…

C语言作业二选择结构,C语言第二次作业参考答案选择结构.pdf

1 C 语言第二次作业(选择结构)参考答案语言第二次作业(选择结构)参考答案 1、某年如果能被某年如果能被 4 整除整除&#xff0c;&#xff0c;但不能被但不能被 100 整除整除&#xff0c;&#xff0c;或者能被或者能被 400 整除的整除的 年是闰年。判断从键盘输入的年份是否为闰…

2d物理引擎01

我一直想做一个游戏&#xff0c;但一直感觉自己水平不够 想了想觉得不去做的话就永远做不出来 所以有了这个博文 01 我需要一个东西来显示&#xff0c;很显然h5中canvas是很好的选择 <!DOCTYPE html> <html><head><meta charset"utf-8" />&l…