When I try and jump on a platform, I clip through it. I have tried everything and my project is due on monday. Also this is my first stackoverflow question and I just recently started learning pygame and python. Thanks in advance
import pygame
import sys
import time
pygame.init()
screenSize = (800,600)
displayScreen = pygame.display.set_mode((screenSize),0)
pygame.display.set_caption("U1A2 Test")
WHITE = (255,255,255)
GREEN = (0,255,0)
RED = (255,0,0)
BLUE = (0,0,255)
displayScreen.fill(WHITE)
pygame.display.update()
clock = pygame.time.Clock()
fps= 60
game = False
menu = True
inst = False
jump= False
x = 53
y = 552
m = 0
n = 0
dx = 0
dy = 0
sprite= pygame.image.load('block sprite.png')
#PlayerRect = pygame.rect(x,y,sprite.get_width(), sprite.get_height())
walls = []
level1 = [
"WWWWWWWWWWWWWWWWWWWWWWWWWW",
" ",
" ",
" ",
" ",
" ",
" WW ",
" ",
" ",
" WW ",
" WWWW ",
" ",
" WWW ",
" ",
" ",
" WWW ",
" WWW ",
" ",
"WWWWWWWWWWWWWWWWWWWWWWWWWW",
]
for row in level1:
for col in row:
if col == " ":
jump = False
if col == "W":
wallRect = pygame.Rect(m,n,32,32)
walls.append(wallRect)
jump = True
m += 32
n += 32
m = 0
while menu:
fontTitle = pygame.font.SysFont("Ariel", 72)
textTitle = fontTitle.render("change this", True, (255,0,0))
displayScreen.blit(textTitle,(35, 50))
fontTitle = pygame.font.SysFont("Ariel", 52)
textTitle = fontTitle.render("Press 1 to play", True, (255,0,0))
displayScreen.blit(textTitle,(35, 100))
fontTitle = pygame.font.SysFont("Ariel", 52)
textTitle = fontTitle.render("Press 2 for instructions", True, (255,0,0))
displayScreen.blit(textTitle,(35, 150))
pygame.display.update()
fontTitle = pygame.font.SysFont("Ariel", 52)
textTitle = fontTitle.render("Press 3 to quit", True, (255,0,0))
displayScreen.blit(textTitle,(35, 200))
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_1:
print "ds"
game = True
elif event.key == pygame.K_2:
menu = False
inst = True
displayScreen.fill(WHITE)
elif event.key == pygame.K_3:
menu = False
while game:
#pygame.draw.rect(displayScreen,GREEN,PlayerRect,0)
PlayerRect = pygame.Rect(x,y, sprite.get_width(), sprite.get_height())
displayScreen.blit(sprite,(x,y))
pygame.display.flip()
#pygame.draw.rect(displayScreen, (255, 0, 0), PlayerRect, 1)
clock.tick(fps)
for event in pygame.event.get():
if event.type ==pygame.QUIT:
pygame.display.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
dx = -7
displayScreen.fill(WHITE)
elif event.key == pygame.K_d:
dx = 7
displayScreen.fill(WHITE)
elif event.key == pygame.K_w:
dy = -25
elif event.key == pygame.K_s:
dy = 25
displayScreen.fill(WHITE)
elif event.key == pygame.K_q:
stop = True
displayScreen.fill(WHITE)
if event.type == pygame.KEYUP:
if event.key == pygame.K_a or event.key == pygame.K_d:
dx = 0
elif event.key == pygame.K_w or event.key == pygame.K_s:
dy = 0
oldx = x
oldy = y
x = x + dx
y = y + dy
if game == True:
dy = dy + 2
if (x>=795 or x<=33):
x=oldx
if (y<=5 or y>=550):
y=oldy
displayScreen.fill(WHITE)
for wall in walls:
if PlayerRect.colliderect(wall):
if dx > 0:
PlayerRect.left = wall.right
if dx < 0:
PlayerRect.right = wall.left
if dy > 0:
PlayerRect.bottom = wall.top
if dy < 0:
PlayerRect.top = wall.bottom
dy = 0
for wall in walls:
pygame.draw.rect(displayScreen,BLUE,wall,0)
#pygame.draw.rect(displayScreen, (255, 0, 0), wall, 1)
time.sleep(0.01)
pygame.display.update()
while inst:
fontTitle = pygame.font.SysFont("Ariel", 72)
textTitle = fontTitle.render("Instructions", True, (255,0,0))
displayScreen.blit(textTitle,(35, 50))
fontTitle = pygame.font.SysFont("Ariel", 52)
textTitle = fontTitle.render("- Use W to jump,S to fall", True, (255,0,0))
displayScreen.blit(textTitle,(35, 100))
fontTitle = pygame.font.SysFont("Ariel", 52)
textTitle = fontTitle.render("- Control your jump by using the A and D keys", True, (255,0,0))
displayScreen.blit(textTitle,(35,150))
pygame.display.update()
fontTitle = pygame.font.SysFont("Ariel", 52)
textTitle = fontTitle.render("- Move left and right with the A and D keys", True, (255,0,0))
displayScreen.blit(textTitle,(35, 200))
pygame.display.update()
fontTitle = pygame.font.SysFont("Ariel", 52)
textTitle = fontTitle.render("Press 3 to exit", True, (255,0,0))
displayScreen.blit(textTitle,(35, 250))
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_3:
inst = False
displayScreen.fill(WHITE)
menu = True
pygame.quit()
sys.exit()
Aucun commentaire:
Enregistrer un commentaire