pygame游戏之旅 按钮上添加文字的方法


Posted in Python onNovember 21, 2018

本文为大家分享了pygame游戏之旅的第11篇,供大家参考,具体内容如下

定义一个button函数,将文字,颜色等作为参数。

def button (msg, x, y, w, h, ic, ac):
 mouse =pygame.mouse.get_pos()
 if x + w > mouse[0] > x and y + h > mouse[1] > y:
 pygame.draw.rect(gameDisplay, ac, (x,y,w,h))
 else:
 pygame.draw.rect(gameDisplay, ic, (x,y,w,h))
 smallText = pygame.font.Font("freesansbold.ttf", 20)
 textSurf, textRect = text_objects(msg, smallText)
 textRect.center = ( (x+(w/2)), (y+(h/2)))
 gameDisplay.blit(textSurf, textRect)

全部代码为:

import pygame
import time
import random
 
pygame.init()
 
white = (255,255,255)
black = (0,0,0)
gray = (128,128,128)
red = (200,0,0)
green = (0,200,0)
bright_red = (255,0,0)
bright_green = (0,255,0)
blue = (0,0,255)
 
 
car_width = 100
 
display_width = 800
display_height = 600
 
 
gameDisplay = pygame.display.set_mode( (display_width,display_height) )
pygame.display.set_caption('A bit Racey')
clock = pygame.time.Clock()
 
carImg = pygame.image.load('car.png')
 
def things_dodged(count):
 font = pygame.font.SysFont(None, 25)
 text = font.render("Dodged:"+str(count), True, black)
 gameDisplay.blit(text,(0,0))
 
def things(thingx, thingy, thingw, thingh, color):
 pygame.draw.rect(gameDisplay, color, [thingx, thingy, thingw, thingh])
 
 
 
def car(x, y):
 gameDisplay.blit(carImg, (x,y))
 
 
def text_objects(text, font):
 textSurface = font.render(text, True, black)
 return textSurface, textSurface.get_rect()
 
def message_diaplay(text):
 largeText = pygame.font.Font('freesansbold.ttf',115)
 TextSurf, TextRect = text_objects(text, largeText)
 TextRect.center = ((display_width/2),(display_height/2))
 gameDisplay.blit(TextSurf, TextRect)
 pygame.display.update()
 time.sleep(2)
 game_loop()
 
def crash():
 message_diaplay('You Crashed')
 
def button (msg, x, y, w, h, ic, ac):
 mouse =pygame.mouse.get_pos()
 if x + w > mouse[0] > x and y + h > mouse[1] > y:
 pygame.draw.rect(gameDisplay, ac, (x,y,w,h))
 else:
 pygame.draw.rect(gameDisplay, ic, (x,y,w,h))
 smallText = pygame.font.Font("freesansbold.ttf", 20)
 textSurf, textRect = text_objects(msg, smallText)
 textRect.center = ( (x+(w/2)), (y+(h/2)))
 gameDisplay.blit(textSurf, textRect)
 
def game_intro():
 intro = True
 while intro:
 for event in pygame.event.get():
 print(event)
 if event.type == pygame.QUIT:
 pygame.quit()
 quit()
 gameDisplay.fill(white)
 largeText = pygame.font.Font('freesansbold.ttf',115)
 TextSurf, TextRect = text_objects('A bit Racey', largeText)
 TextRect.center = ((display_width/2),(display_height/2))
 gameDisplay.blit(TextSurf, TextRect)
 button("GO", 150, 450, 100, 50, green, bright_green)
 button("Quit",550, 450, 100, 50, red, bright_red)
 pygame.display.update()
 clock.tick(15)
 
def game_loop():
 x = display_width * 0.45
 y = display_height * 0.8
 x_change = 0
 
 dodged = 0
 
 gameExit = False
 
 thing_startx = random.randrange(0, display_width)
 thing_starty = -600
 thing_speed = 7
 thing_width = 100
 thing_height = 100
 
 while not gameExit:
 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 pygame.quit()
 quit()
 if event.type == pygame.KEYDOWN:
 if event.key == pygame.K_LEFT:
  x_change = -5
 elif event.key == pygame.K_RIGHT:
  x_change = 5
 if event.type == pygame.KEYUP:
 if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
  x_change = 0
 print(event)
 x += x_change
 gameDisplay.fill(white)
 
 things(thing_startx, thing_starty, thing_width, thing_height, black)
 thing_starty += thing_speed
 
 car(x,y)
 things_dodged(dodged)
 if x > display_width - car_width or x < 0:
 gameExit = True
 if thing_starty > display_height:
 thing_starty = 0 - thing_height
 thing_startx = random.randrange(0, display_width)
 dodged += 1
 thing_speed += 1
 thing_width += (dodged * 1.2)
 if y < thing_starty + thing_height:
 print('y crossover')
 if x > thing_startx and x < thing_startx + thing_width or x + car_width > thing_startx and x + car_width < thing_startx + thing_width:
 print('x crossover')
 crash()
 pygame.display.update()
 clock.tick(60)
#crash()
game_intro()
game_loop()
pygame.quit()
quit()

结果图:

pygame游戏之旅 按钮上添加文字的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用 Selenium 实现网页截图实例
Jul 18 Python
利用Python和OpenCV库将URL转换为OpenCV格式的方法
Mar 27 Python
详解Python迭代和迭代器
Mar 28 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
Aug 09 Python
Python文本处理简单易懂方法解析
Dec 19 Python
python中with语句结合上下文管理器操作详解
Dec 19 Python
OpenCV哈里斯(Harris)角点检测的实现
Jan 15 Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 Python
Python爬取网站图片并保存的实现示例
Feb 26 Python
Python入门之使用pandas分析excel数据
May 12 Python
Face++ API实现手势识别系统设计
Nov 21 #Python
详解django自定义中间件处理
Nov 21 #Python
pygame游戏之旅 添加游戏界面按键图形
Nov 20 #Python
pygame游戏之旅 添加游戏介绍
Nov 20 #Python
pygame游戏之旅 计算游戏中躲过的障碍数量
Nov 20 #Python
pygame游戏之旅 添加碰撞效果的方法
Nov 20 #Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 #Python
You might like
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
意大利单身交友网站:Meetic
2020/07/12 全球购物
汇科协同Java笔试题
2012/03/31 面试题
电子技术专业中专生的自我评价
2013/12/17 职场文书
电气工程师岗位职责
2014/01/01 职场文书
年度考核评语
2014/01/19 职场文书
关于是否需要写商业计划书
2014/02/07 职场文书
公司捐书倡议书
2015/04/27 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
图神经网络GNN算法
2022/05/11 Python
设置IIS Express并发数
2022/07/07 Servers