JAVA碰撞检测无效_碰撞检测不适用于Pygame中的精灵
我最近尝试通过将我的基本 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中的精灵相关推荐
- java 标识符无效_查询y子查询中的标识符无效
以下查询返回错误: ORA-00904: "C"."CHARGEDATE": invalid identifier 00904. 00000 - "% ...
- 无摄像头java手机机型_java – 面部检测不适用于前置摄像头
所以基本上我有这个代码,if(mCamera.getParameters().getMaxNumDetectedFaces()==0) { System.out.println("Face ...
- java序列化深克隆_如何在内存序列化中使用Java深克隆对象
java序列化深克隆 在我以前的文章中,我解释了深度克隆和浅层克隆之间的区别 , 以及复制构造函数和防御性复制方法比默认的Java克隆如何更好. 使用复制构造函数和防御性复制方法进行的Java对象克隆 ...
- python 超参数_完整介绍用于Python中自动超参数调剂的贝叶斯优化
完整介绍用于Python中自动超参数调剂的贝叶斯优化-1.jpg (109.5 KB, 下载次数: 0) 2018-7-4 23:45 上传 调剂机器学习超参数是一项繁琐但至关重要的任务,因为算法的性 ...
- java sql2016驱动_微软发布用于SQL Server 的JDBC 6.0驱动下载 - IT之家
IT之家讯 微软发布了用于SQL Server数据库的JDBC 6.0驱动下载,该版本为基于Java的SQL Server和Azure SQL数据库提供强大的数据访问性能,相关用户可下载安装(仅英文版 ...
- jsp中java代码无效_来杯咖啡,教你如何优雅的在java中统计代码块耗时
推荐阅读: Sping源码+Redis+Nginx+MySQL等七篇实战技术文档,阿里大佬推荐 阿里内部:2020年全技术栈文档+PPT分享,(万粉总结,回馈粉丝) 在我们的实际开发中,多多少少会遇到 ...
- java 不能使用foreach,foreach不适用于表达类型
what does this error mean? and how do i solve it? foreach not applicable to expression type. im am t ...
- 500 – 内部服务器错误_无服务器:S3 – S3BucketPermissions –操作不适用于语句中的任何资源...
500 – 内部服务器错误 我一直在使用Serverless来玩S3存储桶,最近编写了以下代码来创建S3存储桶并将文件放入该存储桶: const AWS = require("aws-sdk ...
- 项目中使用 java函数式编程_函数式编程在Java8中使用Lambda表达式进行开发
事情起因 如果不喜欢看故事的同学,请前往下一章节. 事情起因是我打算集成Redis缓存,配置了Redis以后,发现@Cacheable注解始终不生效,折腾了大半天以后,我的心态已经崩了,决定不使用@C ...
最新文章
- 【转载】C#扫盲之:==/Equals /ReferenceEquals 异同的总结,相等性你真的知道吗?
- 磁金融宣布完成1.2亿元B轮融资,宽带资本领投
- VMware10上新建虚拟机步骤图解
- sas sql 读取最后一行数据_SAS基础编程和数据处理
- WEB超链分析算法纵览
- Docker基础(2)——基础操作
- 一.hadoop入门须知
- matlab 贝叶斯信息标准_Matlab中贝叶斯(bayes)分类器实现分类
- 模糊搜索框(H5),兼容安卓和ios(令人头大的ios输入法)
- Matlab函数——dct2
- OPPO R9tm 刷机/root/救砖/第三方recovery
- 第2次作业:微博软件分析
- 安川机器人报错_安川机器人报错代码:原点位置数据修改
- 如何保持精力充沛_在家工作,如何管理一支精力充沛,精力充沛的日常团队,远程站起来...
- 房地产公司网站建设需要多少钱
- response.sendRedirect 加域名或者不加域名的重定向加locahost或者不加localhost
- 移动端rpx px,rem em区别
- [转] CodeMirror基本配置项
- Marvell深耕智能家居行业 赞同语音控制将成必然发展趋势
- js php中文乱码,javascript在php中文乱码怎么办