Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- thePlayer Class:
- # Delcaring thePlayer class which contains data about player(hero)
- class thePlayer(pygame.sprite.Sprite):
- heroWalkRight =[pygame.image.load('HeroWalkRight/PenRunR0.png')....
- hero_Death = [pygame.image.load('hero_death/Armature_DEAD_00.png')..
- pygame.image.load('hero_death/Armature_DEAD_32.png')]
- heroShootR = [pygame.image.load('HeroShootR/shot0.png')...pygame.image.load('HeroShootR/shot7.png')]
- heroShootL = [pygame.image.load('HeroShootL/shot0.png')....pygame.image.load('HeroShootL/shot7.png')]
- hero_charR = pygame.image.load('HeroStandChar/PStandStillR.png')
- hero_charL = pygame.image.load('HeroStandChar/PStandStillL.png')
- def __init__(self, x, y, width, height):
- super().__init__()
- self.x = x
- self.y = y
- self.width = width
- self.height = height
- self.velocity = 5
- self.isJump = False
- self.jumpCount = 10
- self.left = False
- self.right = False
- self.shoot = False
- self.walkCount = 0
- self.shootCount = 0
- self.standing = True
- self.hitbox = (self.x + 20, self.y, 28, 60)
- self.deathCount = 0
- self.gameOver = False
- def draw(self, window):
- if self.walkCount + 1 >= 15:
- self.walkCount = 0
- if self.shootCount + 1 >= 7:
- self.shootCount = 0
- if not self.standing:
- if self.left:
- window.blit(self.heroWalkLeft[self.walkCount], (self.x, self.y))
- self.walkCount += 1
- elif self.right:
- window.blit(self.heroWalkRight[self.walkCount], (self.x, self.y))
- self.walkCount += 1
- else:
- if self.left:
- if self.shoot:
- window.blit(self.heroShootL[self.shootCount], (self.x, self.y))
- self.shootCount += 1
- else:
- window.blit(self.hero_charL, (self.x, self.y))
- elif self.right:
- if self.shoot:
- window.blit(self.heroShootR[self.shootCount], (self.x, self.y))
- self.shootCount += 1
- else:
- window.blit(self.hero_charR, (self.x, self.y))
- self.hitbox = (self.x + 20, self.y, 55, 80)
- # pygame.draw.rect(win, (0, 0, 0), self.hitbox, 2)
- # pygame.draw.rect(win, (0, 0, 0), self.hitbox, 2)
- def restart(self):
- startGame()
- def redrawGameWindow(CameraX):
- # This statement continuosly keep drawing background image according to
- the camera value
- win.blit(bg, (0 - CameraX, 0 - CameraY))
- text = font.render('Score: ' + str(score), 1, (0, 0, 0))
- win.blit(text, (390, 10))
- # Drawing hero and enemies on Screen
- hero.draw(win)
- enemy2.draw(win)
- enemy.draw(win)
- for bullet in bullets:
- bullet.draw(win)
- pygame.display.flip()
- pygame.display.set_caption("First Game")
- bg = pygame.image.load('LongBGx8.png')
- bgWidth, bgHeight = bg.get_rect().size
- win = pygame.display.set_mode((928, bgHeight))
- startScrollingPos = bgWidth / 28
- score = 0
- clock = pygame.time.Clock()
- CameraY = 0
- font = pygame.font.SysFont('comicsans', 30, True, True)
- hero = thePlayer(45, 625, 40, 40)
- enemy2 = enemy(1450, 625, 40, 40, 1900)
- enemy = enemy(400, 625, 40, 40, 850)
- alternateX = 0
- bullets = []
- run = True
- def startGame():`
- clock.tick(60)
- noBorderCross = True
- noCameraCross = True
- CameraX = 0
- # This statement will start reacting when player touches enemy
- if hero.hitbox[1] < enemy.hitbox[1] + enemy.hitbox[3] and hero.hitbox[1] + hero.hitbox[3] > enemy.hitbox[1]:
- if hero.hitbox[0] + hero.hitbox[2] > enemy.hitbox[0] and hero.hitbox[0] < enemy.hitbox[0] + enemy.hitbox[2]:
- print("GOT HIT!")
- hero.restart()
- # This statement will start reacting when player touches enemy
- if hero.hitbox[1] < enemy2.hitbox[1] + enemy2.hitbox[3] and hero.hitbox[1] + hero.hitbox[3] > enemy2.hitbox[1]:
- if hero.hitbox[0] + hero.hitbox[2] > enemy2.hitbox[0] and hero.hitbox[0] < enemy2.hitbox[0] + enemy2.hitbox[2]:
- print("GOT HIT!")
- # hero.hit(win)
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- run = False
- # This loop is used for detecting bullets that will hit enemy
- # One statement for enemy and other one for enemy2
- for bullet in bullets:
- if bullet.y - bullet.radius < enemy.hitbox[1] + enemy.hitbox[3] and bullet.y + bullet.radius > enemy.hitbox[1]:
- if bullet.x + bullet.radius > enemy.hitbox[0] and bullet.x - bullet.radius < enemy.hitbox[0] + enemy.hitbox[2]:
- enemy.hit()
- score += 1
- bullets.pop(bullets.index(bullet))
- if bullet.y - bullet.radius < enemy2.hitbox[1] + enemy2.hitbox[3] and bullet.y + bullet.radius > enemy2.hitbox[1]:
- if bullet.x + bullet.radius > enemy2.hitbox[0] and bullet.x - bullet.radius < enemy2.hitbox[0] +
- enemy2.hitbox[2]:
- enemy2.hit()
- score += 1
- bullets.pop(bullets.index(bullet))
- # This won't let bullets travel more than screen size i.e 928
- if bullet.x < 928 and bullet.x > 0:
- bullet.x += bullet.vel
- else:
- bullets.pop(bullets.index(bullet))
- keys = pygame.key.get_pressed()
- if keys[pygame.K_r]:
- if hero.left:
- facing = -1
- else:
- facing = 1
- if len(bullets) < 1:
- bullets.append(projectile(round(hero.x + hero.width), round(hero.y + hero.height), 6, (0, 0, 0), facing))
- if keys[pygame.K_LEFT] and hero.x > hero.velocity:
- hero.standing = False
- hero.x -= hero.velocity
- hero.left = True
- hero.right = False
- noBorderCross = True
- elif keys[pygame.K_RIGHT] and hero.x < bgWidth - hero.velocity - hero.width:
- hero.standing = False
- if noBorderCross:
- hero.x += hero.velocity
- if noCameraCross:
- CameraX += hero.velocity
- enemy.path[0] -= hero.velocity
- enemy.path[1] -= hero.velocity
- enemy2.path[0] -= hero.velocity
- enemy2.path[1] -= hero.velocity
- if enemy.enemyDead:
- enemy.x += enemy.velocity
- enemy2.x += enemy2.velocity
- if hero.x >= startScrollingPos:
- noBorderCross = False
- # 6500 is Camera Position Limit - If increased Camera will behave abnormally
- if CameraX >= 6500:
- noCameraCross = False
- if hero.x < 890 - hero.velocity - hero.width:
- hero.x += hero.velocity
- hero.left = False
- hero.right = True
- elif keys[pygame.K_r]:
- hero.shoot = True
- else:
- hero.standing = True
- hero.shoot = False
- hero.walkCount = 0
- if not hero.isJump:
- if keys[pygame.K_SPACE]:
- hero.isJump = True
- hero.walkCount = 0
- else:
- if hero.jumpCount >= -10:
- hero.y -= (hero.jumpCount * abs(hero.jumpCount)) * 0.5
- hero.jumpCount -= 1
- else:
- hero.jumpCount = 10
- hero.isJump = False
- redrawGameWindow(CameraX)
- while run:
- startGame()
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement