我最近尝试通过将我的基本 rect 和图像更改为更高级的 Class 系统来升级我正在处理的游戏的代码 . 但是,我似乎遇到了我的碰撞检测问题,当我告诉我的精灵 hg 在与 floor (或任何输入的 box )发生碰撞时停止下降时,它并没有错误 . 我究竟做错了什么?以下是我认为足够的代码可以帮助您和您需要的两张图片(如果您需要更多信息,请告诉我):

######## basic setup

import pygame, sys, time, random, threading, tkinter, ctypes

from threading import Timer

from pygame.locals import *

from tkinter import *

pygame.init()

WINDOWHEIGHT = 720

WINDOWWIDTH = 1280

windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)

pygame.display.set_caption('Hitman Grandma | vB1.0 (prealpha)')

white = (255,255,255)

red = (255,0,0)

black = (0,0,0)

green = (0,255,0)

blue = (0,0,255)

cyan = (0,255,255)

lightgrey = (198,198,198)

windowSurface.fill(lightgrey)

pygame.display.update()

mainClock = pygame.time.Clock()

########## variables

level = 0

touching = False

global x_speed

x_speed = 0

y_speed = 0

leftallowed = True

rightallowed = True

hgturnright = True

hgjumpallowed = True

########### the grandma d'awesome murder sorts

hgimage = pygame.image.load('hgfinal.png')

hgimage.convert_alpha()

class HG(object):

def __init__(self,x,y,image):

self.image = image

self.rect = self.image.get_rect()

self.x = x

self.y = y

def draw(self):

windowSurface.blit(self.image,(self.x,self.y))

def move(self):

self.x += x_speed

self.y += y_speed

def topcollide(self,box):

if not self.rect.colliderect(box.rect):

global y_speed

if y_speed < 20:

y_speed += 1

elif y_speed == 20:

y_speed = 20

print('shhoooo')

elif self.rect.colliderect(box.rect):

y_speed = 0

print('flop')

hg = HG(0,0,hgimage)

########### land and boundary

lands = pygame.image.load('hgland1.png')

floorland = pygame.transform.scale(lands,(1280,50))

sideedge = pygame.Rect(0,0,1,720),pygame.Rect(1279,0,1,720)

topedge = pygame.Rect(0,0,1280,1)

class Floor(object):

def __init__(self,x,y,image):

self.image = image

self.x = x

self.y = y

self.rect = self.image.get_rect()

self.rect.x = x

self.rect.y = y

def draw(self):

windowSurface.blit(self.image,(self.x,self.y))

class Ground(object):

def __init__(self,x,y,image):

self.image = image

self.x = x

self.y = y

self.rect = self.image.get_rect()

def draw(self):

windowSurface.blit(self.image,(self.x,self.y))

floor = Floor(0,670,floorland)

########### WHILE

while True:

########### background

windowSurface.fill(lightgrey)

########### hg movement

for event in pygame.event.get():

if event.type == KEYDOWN:

if event.key == K_LEFT and hg.x > 0 and leftallowed:

x_speed = -4

hgturnright = False

if event.key == K_RIGHT and (hg.x + 36) < WINDOWWIDTH and rightallowed:

x_speed = 4

hgturnright = True

if event.key == K_UP and hgjumpallowed:

y_speed = -17

if event.type == KEYUP:

if event.key == K_RIGHT:

x_speed = 0

if event.key == K_LEFT:

x_speed = 0

if event.type == KEYDOWN:

########### ctrl+q

if event.key == K_q and pygame.key.get_mods() & pygame.KMOD_CTRL:

pygame.quit()

sys.exit()

exit

########### [x]

if event.type == pygame.QUIT:

pygame.quit()

sys.exit()

exit

########### drawing and .move()

floor.draw()

hg.draw()

hg.move()

hg.topcollide(floor)

########### technicals

pygame.display.update()

mainClock.tick(40)

JAVA碰撞检测无效_碰撞检测不适用于Pygame中的精灵相关推荐

  1. java 标识符无效_查询y子查询中的标识符无效

    以下查询返回错误: ORA-00904: "C"."CHARGEDATE": invalid identifier 00904. 00000 - "% ...

  2. 无摄像头java手机机型_java – 面部检测不适用于前置摄像头

    所以基本上我有这个代码,if(mCamera.getParameters().getMaxNumDetectedFaces()==0) { System.out.println("Face ...

  3. java序列化深克隆_如何在内存序列化中使用Java深克隆对象

    java序列化深克隆 在我以前的文章中,我解释了深度克隆和浅层克隆之间的区别 , 以及复制构造函数和防御性复制方法比默认的Java克隆如何更好. 使用复制构造函数和防御性复制方法进行的Java对象克隆 ...

  4. python 超参数_完整介绍用于Python中自动超参数调剂的贝叶斯优化

    完整介绍用于Python中自动超参数调剂的贝叶斯优化-1.jpg (109.5 KB, 下载次数: 0) 2018-7-4 23:45 上传 调剂机器学习超参数是一项繁琐但至关重要的任务,因为算法的性 ...

  5. java sql2016驱动_微软发布用于SQL Server 的JDBC 6.0驱动下载 - IT之家

    IT之家讯 微软发布了用于SQL Server数据库的JDBC 6.0驱动下载,该版本为基于Java的SQL Server和Azure SQL数据库提供强大的数据访问性能,相关用户可下载安装(仅英文版 ...

  6. jsp中java代码无效_来杯咖啡,教你如何优雅的在java中统计代码块耗时

    推荐阅读: Sping源码+Redis+Nginx+MySQL等七篇实战技术文档,阿里大佬推荐 阿里内部:2020年全技术栈文档+PPT分享,(万粉总结,回馈粉丝) 在我们的实际开发中,多多少少会遇到 ...

  7. java 不能使用foreach,foreach不适用于表达类型

    what does this error mean? and how do i solve it? foreach not applicable to expression type. im am t ...

  8. 500 – 内部服务器错误_无服务器:S3 – S3BucketPermissions –操作不适用于语句中的任何资源...

    500 – 内部服务器错误 我一直在使用Serverless来玩S3存储桶,最近编写了以下代码来创建S3存储桶并将文件放入该存储桶: const AWS = require("aws-sdk ...

  9. 项目中使用 java函数式编程_函数式编程在Java8中使用Lambda表达式进行开发

    事情起因 如果不喜欢看故事的同学,请前往下一章节. 事情起因是我打算集成Redis缓存,配置了Redis以后,发现@Cacheable注解始终不生效,折腾了大半天以后,我的心态已经崩了,决定不使用@C ...

最新文章

  1. 【转载】C#扫盲之:==/Equals /ReferenceEquals 异同的总结,相等性你真的知道吗?
  2. 磁金融宣布完成1.2亿元B轮融资,宽带资本领投
  3. VMware10上新建虚拟机步骤图解
  4. sas sql 读取最后一行数据_SAS基础编程和数据处理
  5. WEB超链分析算法纵览
  6. Docker基础(2)——基础操作
  7. 一.hadoop入门须知
  8. matlab 贝叶斯信息标准_Matlab中贝叶斯(bayes)分类器实现分类
  9. 模糊搜索框(H5),兼容安卓和ios(令人头大的ios输入法)
  10. Matlab函数——dct2
  11. OPPO R9tm 刷机/root/救砖/第三方recovery
  12. 第2次作业:微博软件分析
  13. 安川机器人报错_安川机器人报错代码:原点位置数据修改
  14. 如何保持精力充沛_在家工作,如何管理一支精力充沛,精力充沛的日常团队,远程站起来...
  15. 房地产公司网站建设需要多少钱
  16. response.sendRedirect 加域名或者不加域名的重定向加locahost或者不加localhost
  17. 移动端rpx px,rem em区别
  18. [转] CodeMirror基本配置项
  19. Marvell深耕智能家居行业 赞同语音控制将成必然发展趋势
  20. js php中文乱码,javascript在php中文乱码怎么办

热门文章

  1. ABAP memory中的Export和Import
  2. 比尔盖茨跌落第二!世界首富换人了
  3. SAP系统硬件解决方案
  4. 不同服务器之间进行传输
  5. 用户选择屏幕搜索帮助的代码实现
  6. 处理您的请求时发生错误(Web Dynpro ABAP)
  7. 50%人使用视听设备音量超标,如何正确佩戴耳机?
  8. 连接失败_iG.Firefox连接失败?iG新赛季仍未敲定主教练人选
  9. python基础笔记_python基础学习笔记(九)
  10. 华为申请鸿蒙系统邮箱,华为鸿蒙系统