This server is intended for use for Academic Classwork related Git repositories only. Projects/repositories will generally be removed after 6 months following close of the semester. Inactive repositories from previous semester are now being archived when no activity for 365 days. They are renamed and marked as 'archived'. After 90 days in that state they will be removed from the system completely.

Commit e14c8dbb authored by Jonathan Evans's avatar Jonathan Evans

Merge branch 'demo'

parents 2b1da54c e41b9eb6
dist/*
build/*
gosnellsadventures.spec
\ No newline at end of file
from Blocks.block import Block
import pygame
import Resources
import Game
import Player
def hexToPixel(x):
y = [0,0,0,0,0]
count = -1
for digit in x[::-1]:
if digit != "x" and digit != "0" and digit != "-":
y[count] = digit
count -= 1
pixels = 16 * int(str(y[0]),16)
pixels += 1 * int(str(y[1]),16)
pixels = float(pixels)
pixels += 1/16 * int(str(y[2]),16)
if x[0] == "-":
pixels *= -1
return pixels
class BrokenBrick(pygame.sprite.Sprite):
def __init__(self, xCord, yCord, texture, xVelocity, yVelocity):
super().__init__()
self.xPosition = xCord
self.yPosition = yCord
self.rect = pygame.rect.Rect(xCord, yCord, 8, 8)
self.image = texture
self.xVelocity = xVelocity
self.yVelocity = yVelocity
self.fallingGravity = int("00400", 16)
def update(self):
self.yVelocity += self.fallingGravity
self.xPosition += hexToPixel(hex(self.xVelocity))
self.rect.x = self.xPosition
self.yPosition += hexToPixel(hex(self.yVelocity))
self.rect.y = self.yPosition
class Brick(Block):
def __init__(self, xCord, yCord, BlockTexture, CurrGameDisplay):
super().__init__(xCord, yCord, BlockTexture, CurrGameDisplay)
\ No newline at end of file
super().__init__(xCord, yCord, BlockTexture, CurrGameDisplay)
self.dead = False
self.doneBreaking = False
self.brokenSprites = []
def onBottomCollide(self,player):
if player.powerLevel not in [Player.PowerLevel.SMALL, Player.PowerLevel.SMALLSUPER]:
player.score += 50
player.yVelocity = 0
self.brokenSprites.append(BrokenBrick(self.rect.x,self.rect.y,Resources.brokenC1TopLeft, int("-01800", 16),int("-04A00", 16)))
self.brokenSprites.append(BrokenBrick(self.rect.x + 8,self.rect.y,Resources.brokenC1TopRight, int("01800", 16),int("-04A00", 16)))
self.brokenSprites.append(BrokenBrick(self.rect.x,self.rect.y + 8,Resources.brokenC1BottomLeft, int("-01800", 16), int("-02A00", 16)))
self.brokenSprites.append(BrokenBrick(self.rect.x + 8,self.rect.y + 8,Resources.brokenC1BottomRight, int("01800", 16), int("-02A00", 16)))
self.image = pygame.Surface([16,16], pygame.SRCALPHA, 32)
self.image = self.image.convert_alpha()
Resources.blockBreak.play()
player.yVelocity = 0
self.dead = True
self.kill()
def update(self):
brickShowing = False
for brick in self.brokenSprites:
brick.update()
Game.screen.blit(brick.image, (brick.rect.x, brick.rect.y))
if brick.yPosition <= Game.screen.get_height():
brickShowing = True
if not brickShowing:
self.doneBreaking = True
\ No newline at end of file
from Blocks.block import Block
class EnemySpawner(Block):
def __init__(self, xCord, yCord, BlockTexture, CurrGameDisplay):
super().__init__(xCord, yCord, BlockTexture, CurrGameDisplay)
\ No newline at end of file
def __init__(self, xCord, yCord, BlockTexture, CurrGameDisplay, enemy):
super().__init__(xCord, yCord, BlockTexture, CurrGameDisplay)
self.enemy = enemy
\ No newline at end of file
......@@ -2,4 +2,20 @@ from Blocks.block import Block
class FlagPole(Block):
def __init__(self, xCord, yCord, BlockTexture, CurrGameDisplay):
super().__init__(xCord, yCord, BlockTexture, CurrGameDisplay)
\ No newline at end of file
super().__init__(xCord, yCord, BlockTexture, CurrGameDisplay)
def win(self, player):
player.won = True
return
def onTopCollide(self, player):
self.win(player)
return
def onSideCollide(self, player):
self.win(player)
return
def onBottomCollide(self, player):
self.win(player)
return
\ No newline at end of file
import pygame
from Blocks.block import Block
from enum import IntEnum
import Player
import Resources
import Game
def hexToPixel(x):
y = [0,0,0,0,0]
count = -1
for digit in x[::-1]:
if digit != "x" and digit != "0" and digit != "-":
y[count] = digit
count -= 1
pixels = 16 * int(str(y[0]),16)
pixels += 1 * int(str(y[1]),16)
pixels = float(pixels)
pixels += 1/16 * int(str(y[2]),16)
if x[0] == "-":
pixels *= -1
return pixels
class Coin(pygame.sprite.Sprite):
def __init__(self, xCord, yCord, texture, xVelocity, yVelocity):
super().__init__()
self.xPosition = xCord
self.yPosition = yCord
self.rect = pygame.rect.Rect(xCord, yCord, 16, 16)
self.image = texture
self.xVelocity = xVelocity
self.yVelocity = yVelocity
self.fallingGravity = int("00800", 16)
def update(self):
self.yVelocity += self.fallingGravity
self.xPosition += hexToPixel(hex(self.xVelocity))
self.rect.x = self.xPosition
self.yPosition += hexToPixel(hex(self.yVelocity))
self.rect.y = self.yPosition
class MultiCoin(Block):
def __init__(self, xCord, yCord, blockTexture, GameDisplay, power, hiddenBlock, hiddenTexture, BrokenTexture):
super().__init__(xCord, yCord, blockTexture, GameDisplay)
self.coins = 9
self.brokenTexture = BrokenTexture
self.hidden = hiddenBlock
self.hiddenTexture = hiddenTexture
self.coin = None
self.doneAnimating = False
def onBottomCollide(self, player):
player.yVelocity = 0
if self.coins > 0:
player.score += 100
self.coins -= 1
player.coins += 1
self.doneAnimating = False
self.coin = Coin(self.rect.x, self.rect.y - 16, Resources.coinEntity,0, int("-03000", 16))
Resources.coinSound.play()
elif self.coins == 0:
player.score += 100
self.updateTexture(self.brokenTexture)
player.coins += 1
self.coins -= 1
self.doneAnimating = False
self.coin = Coin(self.rect.x, self.rect.y - 16, Resources.coinEntity,0, int("-03000", 16))
Resources.coinSound.play()
else:
return
def update(self):
self.coin.update()
Game.screen.blit(self.coin.image, (self.coin.rect.x, self.coin.rect.y))
if self.coin.rect.bottom >= self.rect.top:
self.doneAnimating = True
self.coin = None
\ No newline at end of file
......@@ -4,13 +4,23 @@
import pygame
from Blocks.block import Block
from enum import Enum
from enum import IntEnum
import PowerUp
import Player
import Resources
import Game
#block state to check if block is a dead block or not.
class BlockState(Enum):
class BlockState(IntEnum):
DEAD = 0
ALIVE = 1
class Powers(IntEnum):
POWERUP = 0
ONEUP = 1
STAR = 2
COIN = 3
'''
powerBlock needs to inherit the base block class attributes, and add in a collision and power up feature.
when the player collides with this block from below, the player should receive the power up inside.
......@@ -20,8 +30,45 @@ class BlockState(Enum):
dead box
'''
def hexToPixel(x):
y = [0,0,0,0,0]
count = -1
for digit in x[::-1]:
if digit != "x" and digit != "0" and digit != "-":
y[count] = digit
count -= 1
pixels = 16 * int(str(y[0]),16)
pixels += 1 * int(str(y[1]),16)
pixels = float(pixels)
pixels += 1/16 * int(str(y[2]),16)
if x[0] == "-":
pixels *= -1
return pixels
class Coin(pygame.sprite.Sprite):
def __init__(self, xCord, yCord, texture, xVelocity, yVelocity):
super().__init__()
self.xPosition = xCord
self.yPosition = yCord
self.rect = pygame.rect.Rect(xCord, yCord, 16, 16)
self.image = texture
self.xVelocity = xVelocity
self.yVelocity = yVelocity
self.fallingGravity = int("00800", 16)
def update(self):
self.yVelocity += self.fallingGravity
self.xPosition += hexToPixel(hex(self.xVelocity))
self.rect.x = self.xPosition
self.yPosition += hexToPixel(hex(self.yVelocity))
self.rect.y = self.yPosition
class PowerBlock(Block,pygame.sprite.Sprite):
def __init__(self, xCord, yCord, blockTexture, GameDisplay, power, hiddenBlock, hiddenTexture, BrokenTexture):
def __init__(self, xCord, yCord, blockTexture, GameDisplay, power, hiddenBlock, hiddenTexture, BrokenTexture, state = BlockState.ALIVE):
pygame.sprite.Sprite.__init__(self)
#specifying a hidden block, if block is hidden updates BlockTexture to hiddenTexture
......@@ -36,10 +83,10 @@ class PowerBlock(Block,pygame.sprite.Sprite):
#new variables specific to power up block
self.powerUp = power
self.dead = BlockState.ALIVE
self.dead = state
#setting the rectangl for the block
self.rect = pygame.Rect(0,0,16*2,20*2)
self.rect = pygame.Rect(0,0,16,16)
self.rect.x = xCord
self.rect.y = yCord
......@@ -47,16 +94,41 @@ class PowerBlock(Block,pygame.sprite.Sprite):
self.hitbox = self.rect.copy()
self.hitbox.inflate_ip(0,-3)
def collides(self, player):
if not self.dead:
if -3 * abs(player.rect.y - self.hitbox.y) - 2 > abs(player.rect.x - self.hitbox.x) \
and 3 * abs(player.rect.y - self.hitbox.y) + 2 > abs(player.rect.x - self.hitbox.x) \
and player.yVelocity < 0:
player.yVelocity = int("04000", 16)
self.breaks(self.BrokenTexture)
#Coin for animation
self.coin = None
self.doneAnimating = False
def breaks(self, brokenTexture):
self.powerUp = None
def onBottomCollide(self,player):
if self.dead != BlockState.DEAD:
# if -3 * abs(player.rect.y - self.hitbox.y) - 2 > abs(player.rect.x - self.hitbox.x) \
# and 3 * abs(player.rect.y - self.hitbox.y) + 2 > abs(player.rect.x - self.hitbox.x) \
# and player.yVelocity < 0:
player.yVelocity = int("04000", 16)
self.breaks(self.brokenTexture,player)
def breaks(self, brokenTexture,player):
for group in [x for x in self.groups() if self.powerUp != None]:
if player.powerLevel == Player.PowerLevel.SMALL and self.powerUp == Powers.POWERUP:
self.powerUp = PowerUp.Mushroom(group, self.rect.x, self.rect.y - 16)
elif self.powerUp == Powers.POWERUP:
self.powerUp = PowerUp.FireFlower(group, self.rect.x, self.rect.y - 16)
elif self.powerUp == Powers.COIN:
player.coins += 1
Resources.coinSound.play()
player.score += 200
self.coin = Coin(self.rect.x, self.rect.y - 16, Resources.coinEntity,0, int("-03000", 16))
elif self.powerUp == Powers.STAR:
self.powerUp = PowerUp.Star(group, self.rect.x, self.rect.y - 16)
elif self.powerUp == Powers.ONEUP:
self.powerUp = PowerUp.OneUp(group, self.rect.x, self.rect.y - 16)
self.dead = BlockState.DEAD
self.hidden = False
self.updateTexture(brokenTexture)
\ No newline at end of file
self.updateTexture(brokenTexture)
def update(self):
self.coin.update()
Game.screen.blit(self.coin.image, (self.coin.rect.x, self.coin.rect.y))
if self.coin.rect.bottom >= self.rect.top:
self.doneAnimating = True
self.coin = None
\ No newline at end of file
from Blocks.block import Block
import pygame
import Resources
class PowerUpSpawner(Block):
def __init_(self, xCord, yCord, BlockTexture, CurrGameDisplay, power):
super().__init__(xCord, yCord, BlockTexture, CurrGameDisplay)
\ No newline at end of file
super().__init__(xCord, yCord, BlockTexture, CurrGameDisplay)
def onBottomCollide(self,player):
self.onCollide(player)
def onSideCollide(self,player):
self.onCollide(player)
def onTopCollide(self,player):
self.onCollide(player)
def onCollide(self,player):
self.image = pygame.Surface([16,16], pygame.SRCALPHA, 32)
self.image = self.image.convert_alpha()
player.coins += 1
player.score += 200
Resources.coinSound.play()
self.kill()
\ No newline at end of file
from Blocks.block import Block
from Blocks.SubBlock.powerBlock import BlockState
class Vine(Block):
def __init__(self, xCord, yCord, BlockTexture, CurrGameDisplay):
super().__init__(xCord, yCord, BlockTexture, CurrGameDisplay)
\ No newline at end of file
def __init__(self, xCord, yCord, BlockTexture, DeadTexture, CurrGameDisplay):
super().__init__(xCord, yCord, BlockTexture, CurrGameDisplay)
self.dead = BlockState.ALIVE
self.vine = False
self.DeadTexture = DeadTexture
def onBottomCollide(self, player):
if(self.dead != BlockState.DEAD):
self.dead = BlockState.DEAD
self.image = self.DeadTexture
\ No newline at end of file
......@@ -22,3 +22,4 @@ from Blocks.SubBlock.star import Star
from Blocks.SubBlock.stone import Stone
from Blocks.SubBlock.upDownPlatform import UpDownPlatform
from Blocks.SubBlock.vine import Vine
from Blocks.SubBlock.multiCoin import MultiCoin
......@@ -4,6 +4,7 @@
#This is the class definition file for the block class.
import pygame
import Game
'''
class Block is the block class that holds the general member variables.
......@@ -17,18 +18,29 @@ The x and y coordinates should be less than 1, so the textures will load in the
BlockTexture should be a fixed size image so the blocks are always the same size.(potential fix, make the image the size we want)
'''
class Block:
class Block(pygame.sprite.Sprite):
def __init__(self, xCord, yCord, BlockTexture, CurrGameDisplay):
super().__init__()
self.x = xCord
self.y = yCord
self.rect = pygame.Rect(0,0,16*1,16*1)
self.GameDisplay = CurrGameDisplay
self.texture = BlockTexture
# self.texture = pygame.transform.scale(self.texture, (int(self.GameDisplay.get_width()*.1),int(self.GameDisplay.get_height()*.1)))
self.image = BlockTexture
#self.image = pygame.transform.scale(self.image, (int(self.GameDisplay.get_width()*.1),int(self.GameDisplay.get_height()*.1)))
def render(self):
self.GameDisplay.blit(self.texture, (self.GameDisplay.get_width()*self.x,self.GameDisplay.get_height()*self.y))
self.GameDisplay.blit(self.image, (self.GameDisplay.get_width()*self.x,self.GameDisplay.get_height()*self.y))
def updateTexture(self, NewTexture):
self.texture = pygame.image.load(NewTexture)
self.texture = pygame.transform.scale(self.texture, (int(self.GameDisplay.get_width()*.1),int(self.GameDisplay.get_height()*.1)))
self.render()
\ No newline at end of file
self.image = NewTexture
#self.image = pygame.transform.scale(self.image, (int(self.GameDisplay.get_width()*.1),int(self.GameDisplay.get_height()*.1)))
self.render()
def onTopCollide(self, player):
return
def onSideCollide(self, player):
return
def onBottomCollide(self, player):
return
\ No newline at end of file
from SubEnemies.enemy0 import Enemy0
from SubEnemies.enemy1 import Enemy1
from SubEnemies.enemy2 import Enemy2
from SubEnemies.enemy3 import Enemy3
from SubEnemies.enemy4 import Enemy4
from SubEnemies.enemy10 import Enemy10
# from SubEnemies.enemy0 import Enemy0
# from SubEnemies.enemy1 import Enemy1
# from SubEnemies.enemy2 import Enemy2
# from SubEnemies.enemy3 import Enemy3
# from SubEnemies.enemy4 import Enemy4
# from SubEnemies.enemy10 import Enemy10
from Enemies.enemy import *
\ No newline at end of file
This diff is collapsed.
from Game.game import *
import pygame
pygame.mixer.pre_init(48000, -16, 1, 2048)
pygame.mixer.init()
pygame.init()
screen = pygame.display.set_mode((16*300, 16*30))
\ No newline at end of file
screen = pygame.Surface((480, 270))
display = pygame.display.set_mode((1920,1080),pygame.FULLSCREEN)
\ No newline at end of file
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,|
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,|
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,c,,,,c,c,c,c,c,c,c,,,,,P,|
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,c,,,,,,,,,,,,,,,P,|
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,~,,,,,,,,,,,|,c,,,,,,,,,,,,,,,P,|
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,~,,,,,,,,,,,|,c,,,,,,,,,,,,,,,P,|
,,,,,,,,,,,,,,,,,,,,,,A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,c,c,c,c,c,c,c,c,,,,c,c,c,A,,,,,,,,,,,,,,,B,,,,,,,,,,,c,c,c,,,,c,A,A,c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,,,,,,,,,,~,,,,,,,,,,,|,c,,,,,E,E,E,E,E,,,,,,P,|
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,b,,,,,,,,,,~,,,,,,,,,,,|,c,,,,,,,,,,,,,,,P,|
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,b,b,,,,,,,,,,~,,,,,,,,,,,|,c,,,,E,E,E,E,E,E,E,,,,,P,|
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,H,,,,,,,,,,,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,b,b,b,,,,,,,,,,~,,,,,,,,,,,|,c,,,,,,,,,,,,,,,P,|
,,,,,,,,,,,,,,,,A,,,,c,B,c,A,c,,,,,,,,,,,,,,,,,,,,,,P,P,,,,,,,,,Q,Q,,,,,,,,,,,,,,,,,c,B,c,,,,,,,,,,,,,,,d,,,,,,c,f,,,,,A,,,A,,,A,,,,,c,,,,,,,,,,c,c,,,,,,b,,,b,,,,,,,,,,,,b,,,b,,,,,,,,,,,,,c,c,A,c,,,,,,,,,,,,,b,b,b,b,b,b,,,,,,,,,,~,,,,,,,,,,,|,c,,,,E,E,E,E,E,E,E,,,,,P,|
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,P,P,,,,,,,P,P,,,,,,,,,P,P,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,,,b,b,,,,,,,,,,b,b,,,b,b,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,b,b,b,b,b,,,,,,,,,,~,,,,,,,,,,,|,c,,,,c,c,c,c,c,c,c,,,,,P,|
,,,,,,,,,,,,,,,,,,,,,,,,,,,,P,P,,,,,,,,,P,P,,,,,,,P,P,,,,,,,,,P,P,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,b,,,b,b,b,,,,,,,,b,b,b,,,b,b,b,,,,,,R,R,,,,,,,,,,,,,,,P,P,,b,b,b,b,b,b,b,b,,,,,,,,,,~,,,,,,,,,,,|,c,,,,c,c,c,c,c,c,c,,,U,S,P,|
,,,,,,,,,,,,,,,,,,,,,0,,,,,,,P,P,,,,,,,,,P,P,0,,,,,,P,P,,,,,,0,0,,P,P,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0,0,0,0,,,,b,b,b,b,,,b,b,b,b,,,,,,b,b,b,b,,,b,b,b,b,,,,,P,P,,,,,,,,,,,,,,,P,P,b,b,b,b,b,b,b,b,b,,,,,,,,,,b,,,,,,,,,,,|,c,,,,c,c,c,c,c,c,c,,,U,S,P,|
a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,|,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,|
a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,|,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,|
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,l,,,,l,l,l,l,l,l,l,,,,,P,|,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,l,,,,,,,,,,,,,,,P,|,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,l,,,,,,,,,,,,,,,P,|,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,,,,,,,,,~,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,l,,,,,,,,,,,,,,,P,|,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,,,,,,,,,~,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,l,,,,,,,,,,,,,,,P,|,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,g,c,c,c,,,,,,,,,,,,,,,,,,,,,,A,A,A,A,A,,,,,,,,,,,,f,c,c,c,,,,,,,,,c,c,i,c,c,,,,,,,c,c,c,c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,c,e,e,e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,c,c,c,c,c,c,,,,e,,,,,,,,,,,,,,h,,,,b,b,,,,,,,,,~,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,E,E,E,,,,,,,,,,,,,,,,,,,E,E,E,,,,,,,,,,,,,,,,,,,,|,l,,,,,,,,,,,,,,,P,|,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,,,,,,,,,~,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,,,,,,,,,,,,,,,,,,,,,,,,|,l,,,,,,,,,,,,,,,P,|,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,,,,,,,,,~,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,,,,,,,,,,,,N,N,N,N,N,N,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,l,,,,,E,E,E,E,E,,,,,,P,|,
,,,,,,,,,,,,,,,,,,,,,,,,b,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,2,,,,,,,,P,P,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b,b,,,,,,,,,~,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,N,N,N,N,N,N,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,l,,,,E,E,E,E,E,E,E,,,,,P,|,
,,,,,,,,,,,,,,,c,e,c,,,,,0,b,b,,,,h,,,,,,b,,,,,,,,,,,,P,P,,,,,1,B,A,A,A,A,,,,,,,,,,,c,,,,,,P,P,,,,A,A,A,A,,,A,A,A,,,,,,,,,,,,,,,,Q,Q,,,,,,,,,,,,,,,,,,P,P,,,2,,,,P,P,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,,,,3,,,,,,A,,,,,,2,,,,,,,,,c,c,,,,b,b,,,,,,,,,~,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,N,N,N,N,N,N,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,l,,,,E,E,E,E,E,E,E,,,,,P,|,
,,,,,,,,,,,,,,,,,,,,,,b,b,b,,,,,,,,,,b,,,,,,,,,,,,P,P,,,,,,,,,,,,,,,,,,,,,,,,,,,P,P,,,,,,,,,,,,,,,,,,,,,,,,,,,,P,P,,,,,,,,,,,2,,,,,,,P,P,,,P,P,,,P,P,,,,,,,,,,,,,,,,,,,,,,,b,,,,,,,,,,,,,,,,3,,,,,,,P,P,,,,,,,,,,,,,b,b,,,,,,,,,~,,,,,,,,,,,,,,|,,,,,,,,,,c,c,c,c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,l,,,,l,l,l,l,l,l,l,,,,,P,|,
,,,,,,,,,,,,,,,,,,,,,b,b,b,b,,,,,,,,,,b,b,,,,,,,,,,,P,P,,,,,,,,,,,,,,,,,,,,,,,,,,,P,P,,,,,,,,,,,,,,,,,,,,,,,,,,,,P,P,,,,,,,,,,,R,R,,,,,,P,P,,,P,P,,,P,P,,,,,,,,,,,,,,,,,,,,,,,b,,,,,,,,,,,,,,,,,,,,,,,P,P,,,,,,,,,,,,,b,b,,,,,,,,,~,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,l,,,,l,l,l,l,l,l,l,,,U,S,P,|,
,,,,,,,,,,,,,,,,,,,,b,b,b,b,b,,,,1,,1,,,,b,b,,,0,,0,,,,,,P,P,,,,,,,,,,,,0,0,,,,1,,,0,0,0,,,,,P,P,,,,,,,,0,0,,0,,,,,,,,,,,,,0,,,,P,P,,,,,,,,,0,,P,P,,,0,,,P,P,,,P,P,,,P,P,,,,,,,,,,,,,,,,,,3,,,,,b,,,,,0,,0,,,,,,,,,,,,,,,,P,P,1,,,,,,,,,,?,,b,b,,,,,,,,,b,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,E,E,E,,,,,,,|,l,,,,l,l,l,l,l,l,l,,,U,S,P,|,
a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,,,a,a,a,a,a,a,a,a,a,a,,,,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,,a,a,a,a,a,a,a,a,a,a,,,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,|,b,b,b,b,,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,,,,,,,,,,,,,,,,,|,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,|,
a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,,,a,a,a,a,a,a,a,a,a,a,,,,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,,a,a,a,a,a,a,a,a,a,a,,,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,|,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,|,
\ No newline at end of file
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,L,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,|,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,K,K,K,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,,,,,,,,,,,,,,,,|,
l,,,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,,,,,,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,,,,,,l,l,l,l,,,,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,P,|,l,,,,l,l,l,l,l,l,l,,,,,P,|,
l,,,,,,,,,,,,,,,,,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,,,,,,,,,,,~,,,,,,,,,,,,,,,,,,,,,,P,|,l,,,,,,,,,,l,,,,,P,|,
l,,,,,,,,,,,,,,,,,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,m,l,l,l,l,,,,,,,,,,,,K,K,K,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,,,,,,,,,,,~,,,,,,,,,,,,,,,,,,,,,,P,|,l,,,,,E,E,E,E,E,l,,,,,P,|,
l,,,,,,,,,,,,,,,,,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,A,A,,,,,,,,,,,,,l,l,l,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,l,n,l,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,,,2,,,,,,,,~,,,,,,,,,,,,,,,,,,,,,,P,|,l,,,,l,E,E,E,E,E,l,l,l,,,P,|,
l,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,P,P,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,K,K,K,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,l,,,,,,,,,,,,,,,,,,,,P,P,,,,,,,~,,,,,,,,,,,,,,,,,,,,,,P,|,l,,,,l,l,l,l,l,l,l,,,,m,P,|,
l,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,q,,,,,,,,,,,,,,P,P,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,l,,,,,,,,,,,,,,,,,,,,P,P,,,,,,,~,,,,,,,,,,,,,,,,,,,,,,P,|,l,,,,,,,,,,,,,,,P,|,
l,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,,,,,,,,,,,,,,,,,,q,,q,,,,,,,,,,,,,P,P,,,,,,,,l,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,E,E,E,E,E,E,E,E,E,E,,,,,,,,,P,P,,,,,,,~,,,,,,,,,,,,,,,,,,,,,,P,|,l,,,,,,,,,,,,,,,P,|,
l,,,,,,,,,,,,,,,,,,,,,,l,l,l,l,l,l,n,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,A,A,,,A,B,A,,,,,,,,,,q,,,,,,2,,,,l,m,P,P,l,o,,,2,,,,,2,,,,,,,,,,,,,,,,,,P,P,,,,,,,L,L,L,,l,l,l,l,,,,,,,,,,,,,,,,,2,,,,P,P,,,,,,,,,,,,,,,,,,n,l,l,l,l,l,l,l,l,l,l,,,,,k,,,,P,P,,,,,,,~,,,,,,,,,,,,,,,,,,,,,,P,|,l,,,,,,,,,,,,,,,P,|,
l,,,,,,,,,,,,,,,,,,,,,,l,l,l,l,l,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,,,,,,,,,,,,,,,,,,,,,,,P,P,,,,,P,P,,,,,Q,Q,,,,P,P,,,,,,,,,,,,,,k,,,P,P,,,k,k,,,,,,,,,,,,,,,,,,,,2,,,,,,,P,P,,,P,P,,,,,,,,,,,k,,,,,,,,,,,,,,,,,,,,,k,k,,,,P,P,,,,,,,~,,,,,,,,,,,,,,,,,,,,,,P,|,l,,,,,,,,,,,,,,,P,|,
l,,,,,,,,,,,,,,,,,,,,,,l,l,l,l,l,,,,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,,,,,,,,,,,,,,,,,,,,,,,P,P,,,,,P,P,,,,,P,P,,,,P,P,,,,,,,,,,,,,k,k,,,P,P,,,k,k,,,,,,,,,,,,,,,,,,,,R,R,,,,,,P,P,,,P,P,,,,,,,,,,k,k,,K,K,K,,,,,,,,,,,,,,,,k,k,k,,,,P,P,,,,,,,~,,,,,,,,,,,,,,,,,,,,S,S,P,|,l,,,,,,,,,,,,,U,S,P,|,
l,,,,,,,,,,,,,,,,,,,,,,,,,,,E,E,E,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,l,,,,,,,,,,,,,,,,,,,,,,,,,P,P,,1,,,P,P,,3,,,P,P,,3,,P,P,,,,,,,,1,,1,,,k,k,,,P,P,,,k,k,,,,,,,,,,,,,,,,,,,,P,P,,,1,,,P,P,,,P,P,,,,,,,,3,k,k,k,,,,,,,,,,,,,,,,,,,k,k,k,k,,3,,P,P,,,,,,,k,,,,,,,,,,,,,,,,,,,,S,S,P,|,l,,,,,,,,,,,,,U,S,P,|,
j,j,j,j,j,j,j,j,j,j,j,,,j,j,,,j,,,,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,,,,,,,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,,,j,j,,,j,j,,,,,,,j,j,j,j,,,,,,,,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,,,j,j,j,j,j,j,j,j,j,,,,,,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,,,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,|,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,|,
j,j,j,j,j,j,j,j,j,j,j,,,j,j,,,j,,,,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,,,,,,,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,,,j,j,,,j,j,,,,,,,j,j,j,j,,,,,,,,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,,,j,j,j,j,j,j,j,j,j,,,,,,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,,,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,|,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,|,
\ No newline at end of file
File added
This diff is collapsed.
from Player.Player import *
\ No newline at end of file
This diff is collapsed.
from PowerUp.Powerups import *
\ No newline at end of file
This diff is collapsed.
from Projectile.Projectiles import *
\ No newline at end of file
from Resources.sprites import *
\ No newline at end of file
from Resources.sprites import *
from Resources.sounds import *
from Resources.assets import *
import pygame
background = pygame.image.load("./Resources/school.jpg")
emptyButton = pygame.image.load("./Resources/emptyButton.png")
exitButton = pygame.image.load("./Resources/exitButton.png")
playButton = pygame.image.load("./Resources/playButton.png")
titlebar = pygame.image.load("./Resources/title.png")
\ No newline at end of file
import pygame
marioJump = pygame.mixer.Sound("./Resources/MarioJump.wav")
marioDie = pygame.mixer.Sound("./Resources/MarioDies.wav")
marioTheme = pygame.mixer.Sound("./Resources/MarioTheme.wav")
fastTheme = pygame.mixer.Sound("./Resources/hurryUp.wav")
enemyDie = pygame.mixer.Sound("./Resources/OOF.wav")
coinSound = pygame.mixer.Sound("./Resources/Coin.wav")
blockBreak = pygame.mixer.Sound("./Resources/BlockBreak.wav")
starTheme = pygame.mixer.Sound("./Resources/superTheme.wav")
pipeSound = pygame.mixer.Sound("./Resources/pipe.wav")
pause = pygame.mixer.Sound("./Resources/pause.wav")
flagPoleSound = pygame.mixer.Sound("./Resources/flagPole.wav")
vineSound = pygame.mixer.Sound("./Resources/vine.wav")
powerUpSound = pygame.mixer.Sound("./Resources/powerUp.wav")
......@@ -5,90 +5,97 @@ pygame.display.init()
ss = spritesheet('./Resources/spritesheet.png')
stoneC1 = ss.image_at_abs((0, 0, 16, 16))
brickC1 = ss.image_at_abs((16, 0, 32, 16))
deadC1 = ss.image_at_abs((32, 0, 48, 16))
blockC1 = ss.image_at_abs((48, 0, 64, 16))
questionC1 = ss.image_at_abs((64, 0, 80, 16))
powerUpSpawnerC1 = ss.image_at_abs((80, 0, 96, 16))
starSpawnerC1 = ss.image_at_abs((96, 0, 112, 16))
lifeSpawnerC1 = ss.image_at_abs((112, 0, 128, 16))
vineBlockC1 = ss.image_at_abs((128, 0, 144, 16))
powerUpC1 = ss.image_at_abs((144, 0, 160, 16))
lifeC1 = ss.image_at_abs((160, 0, 176, 16))