pygame游戏之旅 添加碰撞效果的方法


Posted in Python onNovember 20, 2018

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

对car和障碍的宽高进行比较然后打印即可:

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()

全部代码:

import pygame
import time
import random
 
pygame.init()
 
white = (255,255,255)
black = (0,0,0)
 
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(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 game_loop():
 x = display_width * 0.45
 y = display_height * 0.8
 x_change = 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)
  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)
  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_loop()
pygame.quit()
quit()

结果图:

pygame游戏之旅 添加碰撞效果的方法pygame游戏之旅 添加碰撞效果的方法

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

Python 相关文章推荐
python实现统计代码行数的方法
May 22 Python
Python使用Scrapy爬取妹子图
May 28 Python
Python用模块pytz来转换时区
Aug 19 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
PyQt5 多窗口连接实例
Jun 19 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
numpy和pandas中数组的合并、拉直和重塑实例
Jun 28 Python
利用Python实现kNN算法的代码
Aug 16 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
Python经典五人分鱼实例讲解
Jan 04 Python
python文件名批量重命名脚本实例代码
Apr 22 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 #Python
用Python编写一个简单的CS架构后门的方法
Nov 20 #Python
python pygame实现2048游戏
Nov 20 #Python
python pygame模块编写飞机大战
Nov 20 #Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 #Python
python版飞机大战代码分享
Nov 20 #Python
pygame实现雷电游戏雏形开发
Nov 20 #Python
You might like
博士208HAF收音机实习报告
2021/03/02 无线电
基于Zookeeper的使用详解
2013/05/02 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
在Vuex中Mutations修改状态操作
2020/07/24 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
Python中str.format()详解
2017/03/12 Python
解决python报错MemoryError的问题
2018/06/26 Python
python获取服务器响应cookie的实例
2018/12/28 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
python logging模块的使用总结
2019/07/09 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
python+pygame实现坦克大战
2019/09/10 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
文员个人求职自荐信
2013/09/21 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
小学课外阅读总结
2014/07/09 职场文书
婚庆公司计划书
2014/09/15 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers