diff --git a/MultiDemo/Nascar1.gif b/MultiDemo/Nascar1.gif new file mode 100644 index 0000000..c621b4a Binary files /dev/null and b/MultiDemo/Nascar1.gif differ diff --git a/MultiDemo/Nascar1Flipped.gif b/MultiDemo/Nascar1Flipped.gif new file mode 100644 index 0000000..1b17d3d Binary files /dev/null and b/MultiDemo/Nascar1Flipped.gif differ diff --git a/MultiDemo/demo.py b/MultiDemo/demo.py new file mode 100644 index 0000000..0e371c1 --- /dev/null +++ b/MultiDemo/demo.py @@ -0,0 +1,101 @@ +from telnetlib import theNULL +import turtle +import time + +cars = {} + +speed = 0.05 +turn = 0.105 + +# Generate Window +win = turtle.Screen() +win.title("NASCAR") +win.bgcolor("light blue") +win.setup(width = 720, height = 680) +win.tracer(0) + +# Generate Background +turtle.register_shape("track2.gif", shape=None) +track = turtle.Turtle() +track.penup() +track.shape("track2.gif") +track.goto(0, 0) + +turtle.register_shape("line", shape=((0, 0), (30, 0), (-30, 0))) +start = turtle.Turtle() +start.penup() +start.shape("line") +start.color("black") +start.goto(0, 120) + +# Generate Cars +turtle.register_shape("Nascar1.gif", shape=None) +turtle.register_shape("Nascar1Flipped.gif", shape=None) +car = turtle.Turtle() +car.penup() +car.shape("Nascar1.gif") +car.color("red") +car.left(180) +car.hideturtle() + +placements = [(start.xcor()+20, start.ycor()-20), +(start.xcor()+20, start.ycor()), +(start.xcor()+20, start.ycor()+20)] + +car1 = car.clone() +car1.showturtle() +car1.goto(placements[0]) + +car2 = car.clone() +car2.showturtle() +car2.goto(placements[1]) + +car3 = car.clone() +car3.showturtle() +car3.goto(placements[2]) + + + +def moveCar(car, speed): + car.forward(speed) + +def turnLeft(car, lane): + car.left((turn-0.005)/2) + if lane == 0: + car.forward(turn+0.02) + elif lane == 1: + car.forward(turn) + elif lane == 2: + car.forward(turn-0.02) + +def rotateCar(car): + car.shape("Nascar1Flipped.gif") + +def resetCar(car): + car.shape("Nascar1.gif") + + +def inBounds(target, min, max): + if target >= min and target <= max: + return True + else: + return False + +def driveCar(car, track, lane, speed): + if car.xcor() >= track.xcor()-160 and car.xcor() <= track.xcor()+160: + moveCar(car, speed) + else: + turnLeft(car, lane) + + if inBounds(car.ycor(), track.ycor()-0.1, track.ycor()+0.1): + if car.xcor() < track.xcor(): + rotateCar(car) + elif car.xcor() > track.xcor(): + resetCar(car) + +while True: + win.update() + driveCar(car1, track, 2, speed) + driveCar(car2, track, 1, speed+0.025) + driveCar(car3, track, 0, speed-0.025) + diff --git a/MultiDemo/track.gif b/MultiDemo/track.gif new file mode 100644 index 0000000..19070a1 Binary files /dev/null and b/MultiDemo/track.gif differ diff --git a/MultiDemo/track2.gif b/MultiDemo/track2.gif new file mode 100644 index 0000000..8c126c6 Binary files /dev/null and b/MultiDemo/track2.gif differ diff --git a/Pictures/capture0.JPG b/Pictures/capture0.JPG new file mode 100644 index 0000000..b65d130 Binary files /dev/null and b/Pictures/capture0.JPG differ diff --git a/__pycache__/board.cpython-310.pyc b/__pycache__/board.cpython-310.pyc new file mode 100644 index 0000000..815ff14 Binary files /dev/null and b/__pycache__/board.cpython-310.pyc differ diff --git a/__pycache__/functions.cpython-310.pyc b/__pycache__/functions.cpython-310.pyc new file mode 100644 index 0000000..de4ae5d Binary files /dev/null and b/__pycache__/functions.cpython-310.pyc differ diff --git a/__pycache__/gameFunc.cpython-310.pyc b/__pycache__/gameFunc.cpython-310.pyc new file mode 100644 index 0000000..36e894d Binary files /dev/null and b/__pycache__/gameFunc.cpython-310.pyc differ diff --git a/__pycache__/games.cpython-310.pyc b/__pycache__/games.cpython-310.pyc new file mode 100644 index 0000000..f48cf3c Binary files /dev/null and b/__pycache__/games.cpython-310.pyc differ diff --git a/__pycache__/newPixel.cpython-310.pyc b/__pycache__/newPixel.cpython-310.pyc new file mode 100644 index 0000000..bc89d3d Binary files /dev/null and b/__pycache__/newPixel.cpython-310.pyc differ diff --git a/__pycache__/runner.cpython-310.pyc b/__pycache__/runner.cpython-310.pyc new file mode 100644 index 0000000..611cc56 Binary files /dev/null and b/__pycache__/runner.cpython-310.pyc differ diff --git a/bossfight.py b/bossfight.py new file mode 100644 index 0000000..9b54ab1 --- /dev/null +++ b/bossfight.py @@ -0,0 +1,319 @@ +import turtle +from gameFunc import inBounds, checkCollide, checkPlatform +class Jump(): + def __init__(self, jumps) -> None: + self.jumps = jumps + + + def setJumps(self, num): + self.jumps = num + def checkJumps(self, num): + if self.jumps == num: + return True + else: + return False + def decreaseJumps(self, num): + self.jumps -= num + if self.jumps < 0: + self.jumps = 0 + +rightBool = [False] +leftBool = [False] +downBool = [False] +upBool = [False] +jumpedBool = [False] +onGround = [False] +inAir = [False] +jumpCount = Jump(2) +jumping = [False] +level = 9 +highScore = 1 + +win = turtle.Screen() +win.title("Runner") +win.bgcolor("light blue") +win.setup(width = 720, height = 360) +win.tracer(0) +grass = turtle.Turtle() +grass.penup() +grass.shape("square") +grass.color("dark green") +grass.shapesize(stretch_wid=4, stretch_len=40) +grass.goto(0, -135) +player = turtle.Turtle() +player.speed(0) +player.penup() +player.shape("square") +player.shapesize(outline=1) +player.color("black", "white") +player.goto(-340, -75) +playerdx = 0.2 +playerdy = 0.075 +maxSpeed = 25 +turtle.addshape("eye", ((0, 0), (-5, 0))) +eye = turtle.Turtle() +eye.penup() +eye.shape("eye") +eye.color("black") +eyeLeft = eye.clone() +eyeRight = eye.clone() +eye.hideturtle() + +#Staircase +step = turtle.Turtle() +step.color("maroon") +step.shape("square") +step.penup() +print(step.get_shapepoly()) +firstStep = step.clone() +firstStep.shapesize(0.5, 3) +firstStep.goto(330, grass.ycor()+45) +secStep = step.clone() +secStep.shapesize(0.5, 2) +secStep.goto(340, firstStep.ycor()+10) +thirdStep = step.clone() +thirdStep.shapesize(0.5, 1) +thirdStep.goto(350, secStep.ycor()+10) +step.hideturtle() + +# Generate Labrynth +labFloor = turtle.Turtle() +labFloor.shape("square") +labFloor.shapesize(1.5, 36) +labFloor.color("maroon") +labFloor.penup() +labFloor.goto(0, -165) +labFloor.hideturtle() + +labWall = turtle.Turtle() +labWall.shape("square") +labWall.shapesize(18, 1.5) +labWall.color("maroon") +labWall.penup() +labWall.goto(345, 0) +labWall.hideturtle() + +labPlat = turtle.Turtle() +labPlat.shape("square") +labPlat.shapesize(1, 4) +labPlat.color("maroon") +labPlat.penup() +labPlat1 = labPlat.clone() +labPlat2 = labPlat.clone() +labPlat3 = labPlat.clone() +labPlat.hideturtle() +labPlat1.hideturtle() +labPlat2.hideturtle() +labPlat3.hideturtle() + +boss = turtle.Turtle() +boss.shape("square") +boss.shapesize(5, 5, outline=1) +boss.color("black", "red") +boss.penup() +boss.goto(120, 800) +bossdy = 0 +bosseyeLeft = eyeLeft.clone() +bosseyeLeft.shapesize(5, 1) +bosseyeRight = eyeRight.clone() +bosseyeRight.shapesize(5, 1) + +win.register_shape("key.gif", shape=None) +key = turtle.Turtle() +key.shape("key.gif") +key.penup() +key.goto(0, 0) +key.hideturtle() + +def right(): + x = player.xcor() + x += playerdx + player.setx(x) +def left(): + x = player.xcor() + x -= playerdx + player.setx(x) + +def setUp(): + upBool[0] = True +def setRight(): + rightBool[0] = True +def setLeft(): + leftBool[0] = True +def setDown(): + downBool[0] = True +def unRight(): + rightBool[0] = False +def unLeft(): + leftBool[0] = False +def unDown(): + downBool[0] = False +def unUp(): + upBool[0] = False + jumpedBool[0] = False + +def down(): + if inAir[0] == True: + y = player.ycor() + y -= 1 + player.sety(y) + +def playerJump(jumpCount): + if jumpCount.jumps > 0: + jumping[0] = True + vel = 0 + for x in range(40): + y = player.ycor() + vel += 0.1 + y += vel + player.sety(y) + eyeLeft.goto(player.xcor()-5, player.ycor()) + eyeRight.goto(player.xcor()+5, player.ycor()) + win.update() + #mainloop(level, highScore) + jumpCount.decreaseJumps(1) + upBool[0] = False + jumpedBool[0] = True + +def levelDesign(level): + if level == 9: + win.bgcolor("light blue") + player.goto(-340, -75) + firstStep.goto(330, grass.ycor()+45) + firstStep.showturtle() + secStep.goto(340, firstStep.ycor()+10) + secStep.showturtle() + thirdStep.goto(350, secStep.ycor()+10) + thirdStep.showturtle() + grass.showturtle() + labFloor.hideturtle() + labWall.hideturtle() + labWall.goto(345, 0) + labPlat1.hideturtle() + labPlat2.hideturtle() + labPlat3.hideturtle() + boss.hideturtle() + bosseyeLeft.hideturtle() + bosseyeRight.hideturtle() + bossdy = 0 + elif level >= 9: + win.bgcolor("brown") + player.goto(-340, -75) + firstStep.hideturtle() + secStep.hideturtle() + thirdStep.hideturtle() + grass.hideturtle() + labFloor.showturtle() + labWall.showturtle() + labPlat1.goto(-180, -45) + labPlat1.showturtle() + labPlat2.goto(180, -45) + labPlat2.showturtle() + labPlat3.goto(0, 90) + labPlat3.showturtle() + boss.goto(120, 600) + boss.showturtle() + bosseyeLeft.showturtle() + bosseyeRight.showturtle() + key.goto(0, 0) + key.showturtle() + + +win.listen() +win.onkeypress(setUp, "w") +win.onkeypress(setRight, "d") +win.onkeypress(setLeft, "a") +win.onkeypress(setDown, "s") +win.onkeyrelease(unUp, "w") +win.onkeyrelease(unRight, "d") +win.onkeyrelease(unLeft, "a") +win.onkeyrelease(unDown, "s") + +while True: + win.update() + eyeLeft.goto(player.xcor()-5, player.ycor()) + eyeRight.goto(player.xcor()+5, player.ycor()) + bosseyeLeft.goto(boss.xcor()-25, boss.ycor()) + bosseyeRight.goto(boss.xcor()+25, boss.ycor()) + + if onGround[0] == True: + jumpCount.setJumps(2) + if upBool[0] == True: + if jumpedBool[0] == False: + playerJump(jumpCount) + if rightBool[0] == True: + right() + if leftBool[0] == True: + left() + if downBool[0] == True: + down() + + if level == 9: # Staircase into labrynth level + if player.ycor() > grass.ycor()+49.8: + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + else: + player.goto(player.xcor(), grass.ycor()+50) + inAir[0] = False + onGround[0] = True + elif level == 10: # BOSS LEVEL + plat = False + if checkPlatform(player, playerdy, labPlat1, labFloor, inAir, onGround): # Handle player-platform collision for labrynth level + plat = True + elif checkPlatform(player, playerdy, labPlat2, labFloor, inAir, onGround): + plat = True + elif checkPlatform(player, playerdy, labPlat3, labFloor, inAir, onGround): + plat = True + elif player.ycor() > labFloor.ycor()+25: + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + else: + player.goto(player.xcor(), labFloor.ycor()+25) + inAir[0] = False + onGround[0] = True + if boss.ycor() > labFloor.ycor()+65: + boss.sety(boss.ycor()-bossdy) + else: + boss.goto(boss.xcor(), labFloor.ycor()+65) + if checkCollide(player, key): + key.goto(boss.xcor(), boss.ycor()) + bossdy = 1 + if checkCollide(player, boss): + level = 9 + bossdy = 0 + levelDesign(level) + + if level == 9: + if player.xcor() > firstStep.xcor()-30 and player.xcor() < firstStep.xcor()+30: # First Step + if player.ycor() > firstStep.ycor()+15: + player.sety(player.ycor()-playerdy) + elif inBounds(player.ycor(), firstStep.ycor(), firstStep.ycor()+20): + player.goto(player.xcor(), firstStep.ycor()+15) + if player.xcor() > secStep.xcor()-20 and player.xcor() < secStep.xcor()+20: # Second Step + if player.ycor() > secStep.ycor()+15: + player.sety(player.ycor()-playerdy) + elif inBounds(player.ycor(), secStep.ycor(), secStep.ycor()+20): + player.goto(player.xcor(), secStep.ycor()+15) + if player.xcor() > thirdStep.xcor()-10 and player.xcor() < thirdStep.xcor()+10: # Third Step + if player.ycor() > thirdStep.ycor()+15: + player.sety(player.ycor()-playerdy) + elif inBounds(player.ycor(), thirdStep.ycor(), thirdStep.ycor()+20): + player.goto(player.xcor(), thirdStep.ycor()+15) + + # Handle player-wall collision for labrynth level + if level == 10: + if player.xcor() >= labWall.xcor()-25 and player.ycor() >= labWall.ycor()-180: + player.setx(labWall.xcor()-25) + + # Handle player going off screen + if player.xcor() >= 350: + if level == 9: + level = 10 + levelDesign(level) + elif level == 10: + level = 9 + levelDesign(level) + elif player.xcor() <= -350: + player.goto(-350, player.ycor()) \ No newline at end of file diff --git a/cloud.png b/cloud.png new file mode 100644 index 0000000..0418042 Binary files /dev/null and b/cloud.png differ diff --git a/clouds.gif b/clouds.gif new file mode 100644 index 0000000..4a857e1 Binary files /dev/null and b/clouds.gif differ diff --git a/clouds1.gif b/clouds1.gif new file mode 100644 index 0000000..1b34b0f Binary files /dev/null and b/clouds1.gif differ diff --git a/clouds2.gif b/clouds2.gif new file mode 100644 index 0000000..dfb56db Binary files /dev/null and b/clouds2.gif differ diff --git a/direction.py b/direction.py new file mode 100644 index 0000000..d3545a1 --- /dev/null +++ b/direction.py @@ -0,0 +1,135 @@ +import turtle + +rightBool = [False] +leftBool = [False] +upBool = [False] +downBool = [False] + +win = turtle.Screen() +win.setup(width=720, height=720) +win.bgcolor("black") +win.tracer(0) + +block = turtle.Turtle() +block.shape("square") +block.color("white") +block.penup() +blockdx = 0.05 +blockdy = 0.05 + +trail = turtle.Turtle() +trail.hideturtle() +ext = turtle.Turtle() +ext.hideturtle() + +def setRight(): + rightBool[0] = True +def setLeft(): + leftBool[0] = True +def setUp(): + upBool[0] = True +def setDown(): + downBool[0] = True + +def unRight(): + rightBool[0] = False +def unLeft(): + leftBool[0] = False +def unUp(): + upBool[0] = False +def unDown(): + downBool[0] = False + +def right(): + x = block.xcor() + x += blockdx + block.setx(x) +def left(): + x = block.xcor() + x -= blockdx + block.setx(x) +def up(): + y = block.ycor() + y += blockdy + block.sety(y) +def down(): + y = block.ycor() + y -= blockdy + block.sety(y) +win.listen() +win.onkeypress(setRight, "d") +win.onkeyrelease(unRight, "d") +win.onkeypress(setLeft, "a") +win.onkeyrelease(unLeft, "a") +win.onkeypress(setUp, "w") +win.onkeyrelease(unUp, "w") +win.onkeypress(setDown, "s") +win.onkeyrelease(unDown, "s") + + + +while True: + win.update() + if rightBool[0] == True: + distS = block.xcor() + right() + distE = block.xcor() + dist = (distE - distS)+10 + xOffset = block.xcor()-dist-10 + yOffset = block.ycor()+10 + turtle.addshape("trail", ((0, 0), (0, dist), (20, dist), (20, 0))) + trail.showturtle() + trail.shape("trail") + trail.color("orange") + trail.penup() + trail.goto(xOffset, yOffset) + ext.showturtle() + ext.shape("trail") + ext.color("orange") + ext.penup() + ext.goto(xOffset-dist, yOffset) + mult = 0 + for i in range(1): + ext.shape("trail") + ext.color("orange") + ext.penup() + mult += 10 + ext.goto(xOffset-dist, yOffset) + ext.clear() + trail.clear() + if leftBool[0] == True: + distS = block.xcor() + left() + distE = block.xcor() + dist = (distE - distS)+10 + turtle.addshape("trail", ((0, 0), (0, dist), (20, dist), (20, 0))) + trail.showturtle() + trail.shape("trail") + trail.color("orange") + trail.penup() + trail.goto(block.xcor()+dist, block.ycor()+10) + trail.clear() + if upBool[0] == True: + distS = block.xcor() + up() + distE = block.xcor() + dist = (distE - distS)+10 + turtle.addshape("trail", ((0, 0), (dist, 0), (dist, 20), (0, 20))) + trail.showturtle() + trail.shape("trail") + trail.color("orange") + trail.penup() + trail.goto(block.xcor()-10, block.ycor()-dist) + trail.clear() + if downBool[0] == True: + distS = block.xcor() + down() + distE = block.xcor() + dist = (distE - distS)+10 + turtle.addshape("trail", ((0, 0), (dist, 0), (dist, 20), (0, 20))) + trail.showturtle() + trail.shape("trail") + trail.color("orange") + trail.penup() + trail.goto(block.xcor()-10, block.ycor()+dist+10) + trail.clear() diff --git a/door.gif b/door.gif new file mode 100644 index 0000000..a6502c4 Binary files /dev/null and b/door.gif differ diff --git a/edgeGrayScale.png b/edgeGrayScale.png deleted file mode 100644 index ffec926..0000000 Binary files a/edgeGrayScale.png and /dev/null differ diff --git a/edgeGrayScale0.png b/edgeGrayScale0.png deleted file mode 100644 index 3427ba2..0000000 Binary files a/edgeGrayScale0.png and /dev/null differ diff --git a/edgeGrayScale1.png b/edgeGrayScale1.png deleted file mode 100644 index df0c955..0000000 Binary files a/edgeGrayScale1.png and /dev/null differ diff --git a/edgeImg.jpg b/edgeImg.jpg deleted file mode 100644 index 7d3e8ba..0000000 Binary files a/edgeImg.jpg and /dev/null differ diff --git a/finalPixel.py b/finalPixel.py index 7c42a90..8c3d5d1 100644 --- a/finalPixel.py +++ b/finalPixel.py @@ -1,13 +1,14 @@ -# Importing Image from PIL package from PIL import Image, ImageColor from webcolors import rgb_to_name from functions import returnGreat, closest_colour, inColBounds, rgb2name -# creating a image object -im = Image.open(r"/workspace/Experiments/Pictures/ocean1.png") -px = im.load() +from newPixel import zoom, coordBound + +im = Image.open(r"C:\Users\trued\Documents\Python\Experiments\Pictures\ocean1.png") +newImg = zoom(im) +px = newImg.load() # Max and Min for Pixels in Image -xBound, yBound = im.size +xBound, yBound = newImg.size img = Image.new('RGB', (xBound, yBound)) diff --git a/functions.py b/functions.py index 369cbfa..713b438 100644 --- a/functions.py +++ b/functions.py @@ -117,6 +117,38 @@ def inColBounds(pxCol, colName): return False elif pxCol == "teal": return False + elif pxCol == "aqua": + return False + elif pxCol == "aquamarine": + return False + elif pxCol == "paleturquosie": + return False + elif pxCol == "powderblue": + return False + elif pxCol == "yellow": + return False + elif pxCol == "turquoise": + return False + elif pxCol == "skyblue": + return False + elif pxCol == "mediumtorquoise": + return False + elif pxCol == "mediumaquamarine": + return False + elif pxCol == "lightgoldenrodyellow": + return False + elif pxCol == "lemonchiffon": + return False + elif pxCol == "khaki": + return False + elif pxCol == "gold": + return False + elif pxCol == "deepskyblue": + return False + elif pxCol == "darkturquosie": + return False + elif pxCol == "paleturquosie": + return False else: return True # Finds red pixels in an image @@ -273,5 +305,98 @@ def inColBounds(pxCol, colName): return True else: return False + elif colName == "bluegreen": + if pxCol == "green": + return True + elif pxCol == "lime": + return True + elif pxCol == "chartreuse": + return True + elif pxCol == "darkgreen": + return True + elif pxCol == "darkolivegreen": + return True + elif pxCol == "darkseagreen": + return True + elif pxCol == "forestgreen": + return True + elif pxCol == "greenyellow": + return True + elif pxCol == "lawngreen": + return True + elif pxCol == "lightgreen": + return True + elif pxCol == "limegreen": + return True + elif pxCol == "mediumseagreen": + return True + elif pxCol == "mediumspringgreen": + return True + elif pxCol == "olivedrab": + return True + elif pxCol == "palegreen": + return True + elif pxCol == "seagreen": + return True + elif pxCol == "springgreen": + return True + elif pxCol == "yellowgreen": + return True + if pxCol == "blue": + return True + elif pxCol == "navy": + return True + elif pxCol == "teal": + return True + elif pxCol == "aqua": + return True + elif pxCol == "aliceblue": + return True + elif pxCol == "aquamarine": + return True + elif pxCol == "aquamarine": + return True + elif pxCol == "azure": + return True + elif pxCol == "cadetblue": + return True + elif pxCol == "cornflowerblue": + return True + elif pxCol == "cyan": + return True + elif pxCol == "darkblue": + return True + elif pxCol == "darkcyan": + return True + elif pxCol == "darktorquoise": + return True + elif pxCol == "deepskyblue": + return True + elif pxCol == "dodgerblue": + return True + elif pxCol == "lightblue": + return True + elif pxCol == "lightcyan": + return True + elif pxCol == "lightskyblue": + return True + elif pxCol == "mediumblue": + return True + elif pxCol == "mediumtorquoise": + return True + elif pxCol == "midnightblue": + return True + elif pxCol == "paletorquoise": + return True + elif pxCol == "powderblue": + return True + elif pxCol == "skyblue": + return True + elif pxCol == "slateblue": + return True + elif pxCol == "steelblue": + return True + elif pxCol == "turquoise": + return True else: return True \ No newline at end of file diff --git a/game copy.py b/game copy.py new file mode 100644 index 0000000..a136630 --- /dev/null +++ b/game copy.py @@ -0,0 +1,16 @@ +import time +from PIL import Image, ImageShow +im = Image.open(r"/workspace/Experiments/Pictures/white.png") +print("What would you like to play?") + +games = ["Tic Tac Toe"] +gameList = "Choose a game!\n" +for i in range(len(games)): + gameList += games[i] + gameList += "\n" +gameChoice = input(gameList) + +if gameChoice == "Tic Tac Toe": + print("Loading Tic Tac Toe...") + time.sleep(2) + ImageShow.show(im) diff --git a/game.py b/game.py index a136630..9960905 100644 --- a/game.py +++ b/game.py @@ -1,16 +1,16 @@ import time -from PIL import Image, ImageShow -im = Image.open(r"/workspace/Experiments/Pictures/white.png") +from tkinter import * +from PIL import Image, ImageShow, ImageTk +from games import mainMenu +""" print("What would you like to play?") -games = ["Tic Tac Toe"] +games = ["Tic Tac Toe", "Runner"] gameList = "Choose a game!\n" for i in range(len(games)): gameList += games[i] gameList += "\n" gameChoice = input(gameList) +""" -if gameChoice == "Tic Tac Toe": - print("Loading Tic Tac Toe...") - time.sleep(2) - ImageShow.show(im) +mainMenu() diff --git a/game1.py b/game1.py new file mode 100644 index 0000000..9772ff7 --- /dev/null +++ b/game1.py @@ -0,0 +1,118 @@ +import turtle + +wn = turtle.Screen() +wn.title("Pong") +wn.bgcolor("black") +wn.setup(width = 800, height = 600) +wn.tracer(0) + +# Score +score_a = 0 +score_b = 0 + +# Paddle A +paddle_a = turtle.Turtle() +paddle_a.speed(0) +paddle_a.shape("square") +paddle_a.color("white") +paddle_a.shapesize(stretch_wid = 5, stretch_len = 1) +paddle_a.penup() +paddle_a.goto(-350, 0) + +# Paddle B +paddle_b = turtle.Turtle() +paddle_b.speed(0) +paddle_b.shape("square") +paddle_b.color("white") +paddle_b.shapesize(stretch_wid = 5, stretch_len = 1) +paddle_b.penup() +paddle_b.goto(+350, 0) + +# Ball +ball = turtle.Turtle() +ball.speed(0) +ball.shape("square") +ball.color("white") +ball.penup() +ball.goto(0, 0) +ball.dx = 0.05 +ball.dy = 0.05 + +# Pen +pen = turtle.Turtle() +pen.speed(0) +pen.color("white") +pen.penup() +pen.hideturtle() +pen.goto(0, 260) +pen.write("Player A: {} Player B: {}".format(score_a, score_b), align = "center", font = ("Couruer", 24, "normal")) + +# Functions +def paddle_a_up(): + y = paddle_a.ycor() + y += 20 + paddle_a.sety(y) + +def paddle_a_down(): + y = paddle_a.ycor() + y -= 20 + paddle_a.sety(y) + +def paddle_b_up(): + y = paddle_b.ycor() + y += 20 + paddle_b.sety(y) + +def paddle_b_down(): + y = paddle_b.ycor() + y -= 20 + paddle_b.sety(y) + +# Keyboard binding +wn.listen() +wn.onkeypress(paddle_a_up, "w") +wn.onkeypress(paddle_a_down, "s") +wn.onkeypress(paddle_b_up, "Up") +wn.onkeypress(paddle_b_down, "Down") + +# Main game loop +while True: + wn.update() + + # Move the ball + ball.setx(ball.xcor() + ball.dx) + ball.sety(ball.ycor() + ball.dy) + + # Border checking + if ball.ycor() > 290: + ball.sety(290) + ball.dy *= -1 + + if ball.ycor() < -290: + ball.sety(-290) + ball.dy *= -1 + + if ball.xcor() > 390: + ball.goto(0, 0) + ball.dx *= -1 + score_a += 1 + pen.clear() + pen.write("Player A: {} Player B: {}".format(score_a, score_b), align = "center", font = ("Couruer", 24, "normal")) + + + if ball.xcor() < -390: + ball.goto(0, 0) + ball.dx *= -1 + score_b += 1 + pen.clear() + pen.write("Player A: {} Player B: {}".format(score_a, score_b), align = "center", font = ("Couruer", 24, "normal")) + + + # Paddle and ball collision + if ball.xcor() > 340 and ball.xcor() < 350 and (ball.ycor() < paddle_b.ycor() + 40 and ball.ycor() > paddle_b.ycor() - 40): + ball.setx(340) + ball.dx *= -1 + + if ball.xcor() < -340 and ball.xcor() > -350 and (ball.ycor() < paddle_a.ycor() + 40 and ball.ycor() > paddle_a.ycor() - 40): + ball.setx(-340) + ball.dx *= -1 \ No newline at end of file diff --git a/gameFunc.py b/gameFunc.py new file mode 100644 index 0000000..7ed9b65 --- /dev/null +++ b/gameFunc.py @@ -0,0 +1,80 @@ +import turtle +import random +import time +from PIL import Image + +def inBounds(target, lower, upper): + if lower <= target <= upper: + return True + else: + return False + +def checkCollide(player, object): + bound = 0 + found = str(object.shape()).find("gif") + if (str(object.shape()).find("gif") > -1): + file = Image.open(object.shape()) + width, height = file.size + bound = width/2 + else: + if inBounds(player.towards(object), 270, 360) or inBounds(player.towards(object), 90, 180): + sidels = [] + for x, y in object.get_shapepoly(): + sidels.append(y) + sidels.sort() + ylow = sidels[0] + yhigh = sidels[len(sidels)-1] + ylen = yhigh - ylow + bound = (ylen/2)+1 + if inBounds(player.towards(object), 180, 270) or inBounds(player.towards(object), 0, 90): + upls = [] + for x, y in object.get_shapepoly(): + upls.append(x) + upls.sort() + xlow = upls[0] + xhigh = upls[len(upls)-1] + xlen = xhigh - xlow + bound = (xlen/2)+1 + if player.distance(object) < bound+5: + return True + else: + return False +def checkPlatform(player, playerdy, platform, grass, inAir, onGround): + xls = [] + yls = [] + ls = platform.get_shapepoly() + for y, x in ls: + xls.append(x) + yls.append(y) + xls.sort() + yls.sort() + greatY = yls[len(yls)-1] - yls[0] + dist = xls[len(xls)-1]+10 + + gls = [] + ls = grass.get_shapepoly() + for y, x in ls: + gls.append(y) + gls.sort() + grassY = gls[len(gls)-1]+10 + + if player.xcor() > platform.xcor()-dist and player.xcor() < platform.xcor()+dist: # Check plr inBounds x-axis + if player.ycor() > platform.ycor()+(greatY-0.2): + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + elif inBounds(player.ycor(), platform.ycor(), platform.ycor()+greatY): + player.goto(player.xcor(), platform.ycor()+greatY) + inAir[0] = False + onGround[0] = True + elif player.ycor() > grass.ycor()+(grassY-0.2): + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + else: + player.goto(player.xcor(), grass.ycor()+grassY) + inAir[0] = False + onGround[0] = True + return True + else: + return False \ No newline at end of file diff --git a/games.py b/games.py new file mode 100644 index 0000000..737fac5 --- /dev/null +++ b/games.py @@ -0,0 +1,69 @@ +import time +import turtle +from random import randint +from tkinter import * +from PIL import Image, ImageShow, ImageTk + +#Function to generate a tic-tac-toe game +def generateBoard(root): + root.destroy() + #Creating screen & setting configurations + root = Tk() + root.configure(background = "light blue") + root.title("Tic Tac Toe") + root.geometry("160x160") + + #Makes buttons interactive + def mark(r, c, button): + button.destroy() + x = Canvas(root, width = 50, height = 50, bg = "white") + x.create_line(0, 0, 50, 50) + x.create_line(50, 0, 0, 50) + x.grid(row = r, column = c) + + #Loads a white square image + im = PhotoImage(file = r"C:\Users\trued\Documents\Python\Experiments\Pictures\white.png") + + #Creates Buttons that symbolize each square in the tic-tac-toe board + a1 = Button(root, image = im, width = 50, height = 50, bd = 1, activebackground = "Black", command = lambda: mark(0, 0, a1)) + a2 = Button(root, image = im, width = 50, height = 50, bd = 1, activebackground = "Black", command = lambda: mark(0, 1, a2)) + a3 = Button(root, image = im, width = 50, height = 50, bd = 1, activebackground = "Black", command = lambda: mark(0, 2, a3)) + b1 = Button(root, image = im, width = 50, height = 50, bd = 1, activebackground = "Black", command = lambda: mark(1, 0, b1)) + b2 = Button(root, image = im, width = 50, height = 50, bd = 1, activebackground = "Black", command = lambda: mark(1, 1, b2)) + b3 = Button(root, image = im, width = 50, height = 50, bd = 1, activebackground = "Black", command = lambda: mark(1, 2, b3)) + c1 = Button(root, image = im, width = 50, height = 50, bd = 1, activebackground = "Black", command = lambda: mark(2, 0, c1)) + c2 = Button(root, image = im, width = 50, height = 50, bd = 1, activebackground = "Black", command = lambda: mark(2, 1, c2)) + c3 = Button(root, image = im, width = 50, height = 50, bd = 1, activebackground = "Black", command = lambda: mark(2, 2, c3)) + + #Assigns each button to a specific place in the board + a1.grid(row = 0, column = 0) + a2.grid(row = 0, column = 1) + a3.grid(row = 0, column = 2) + b1.grid(row = 1, column = 0) + b2.grid(row = 1, column = 1) + b3.grid(row = 1, column = 2) + c1.grid(row = 2, column = 0) + c2.grid(row = 2, column = 1) + c3.grid(row = 2, column = 2) + + #Generates a live interactive sandbox for the user + mainloop() + +def generateRunner(): + level = 0 + highScore = 0 + + +def mainMenu(): + global root + root = Tk() + root.configure(background = "light green") + root.title("Runner") + root.geometry("720x240") + title = Label(root, text = "Main Menu", bg = "light green") + title.pack(side = TOP) + runner = Button(root, text = "Play Runner", command = generateRunner) + runner.pack(side = TOP) + Tic = Button(root, text = "Play Tic Tac Toe", command = lambda: generateBoard(root)) + Tic.pack(side = TOP) + mainloop() diff --git a/greyScale.png b/greyScale.png index c1e05e7..3418729 100644 Binary files a/greyScale.png and b/greyScale.png differ diff --git a/idk.py b/idk.py new file mode 100644 index 0000000..b931e2e --- /dev/null +++ b/idk.py @@ -0,0 +1,92 @@ +import time +import turtle +from tkinter import * + +def updateScreen(window): + window.mainloop() + +msg = input("Enter a number: ") +broken = False +while broken == False: + try: + if (int(msg) <= 0) or (int(msg) >= 0): + broken = True + print("Good job, you can follow directions!") + except ValueError: + print("We're going to try that again...") + msg = input("Enter a number: ") +time.sleep(2) +print("Now that you can follow simple directions, we are going to try some harder questions!") +time.sleep(2) + +def placeObj(obj, relx, rely): + obj.place(relx= relx, rely= rely, anchor=CENTER) + +win = Tk() +win.title("Focus on the questions") +win.configure(background="tan") +win.geometry("600x600") + +textLabel = StringVar() +textLabel.set("") +midText = Label(win, textvariable=textLabel, font="Sans", bg="tan") +midText.place(relx=0.5, rely=0.5, anchor=CENTER) +print('Running...') + +def resetLevel(endScreen, text): + if endScreen == True: + turtle.clear() + print("Worked?!") + txt = Label(win, text=text, font="Sans", bg="tan") + placeObj(txt, 0.5, 0.5) + time.sleep(2) + win.quit() + win.quit() + +def nextSlide(correct, wrong, next1, next2): + if correct == true1: + textLabel.set("Which one of these is correct?") + correct.destroy() + wrong.destroy() + placeObj(next1, 0.25, 0.75) + placeObj(next2, 0.75, 0.75) + elif correct == true2: + textLabel.set("There are 11 vowels in this sentence.") + correct.destroy() + wrong.destroy() + placeObj(next1, 0.25, 0.75) + placeObj(next2, 0.75, 0.75) + elif correct == true3: + textLabel.set("Why did the chicken cross the road?") + correct.destroy() + wrong.destroy() + placeObj(next1, 0.5, 0.75) + placeObj(next2, 0.5, 0.85) + elif txt.get == "To get to the other side.": + textLabel.set("Are you enjoying this game?") + correct.destroy() + wrong.destroy() + placeObj(next1, 0.25, 0.75) + placeObj(next2, 0.75, 0.75) + + + +true1 = Button(win, text="True", width=5, height=2, bg="white", command= lambda: nextSlide(true1, false1, true2, false2)) +false1 = Button(win, text="False", width=5, height=2, bg="white", command=resetLevel) + +true2 = Button(win, text="True", width=5, height=2, bg="white", command= lambda: nextSlide(true2, false2, true3, false3)) +false2 = Button(win, text="False", width=5, height=2, bg="white", command= lambda: resetLevel) + +true3 = Button(win, text="True", width=5, height=2, bg="white", command= lambda: nextSlide(true3, false3, true4, skip4)) +false3 = Button(win, text="False", width=5, height=2, bg="white", command= lambda: resetLevel) + +txt = StringVar() +true4 = Entry(win, text=txt, width=5, bg="white") +skip4 = Button(win, text="Skip", width=5, height=2, bg="white", command= lambda: resetLevel(True, "You will never be given skips in the real world...")) + +win.after(5000, lambda: textLabel.set("This was a blank screen.")) +win.after(5000, lambda: placeObj(true1, 0.25, 0.75)) +win.after(5000, lambda: placeObj(false1, 0.75, 0.75)) +#lambda: textLabel.set("Which one of these is correct?")) + +mainloop() \ No newline at end of file diff --git a/key.gif b/key.gif new file mode 100644 index 0000000..bab309f Binary files /dev/null and b/key.gif differ diff --git a/newImg.jpg b/newImg.jpg deleted file mode 100644 index 900dddd..0000000 Binary files a/newImg.jpg and /dev/null differ diff --git a/newPixel.py b/newPixel.py new file mode 100644 index 0000000..b61a4e4 --- /dev/null +++ b/newPixel.py @@ -0,0 +1,82 @@ +from PIL import Image, ImageFilter +im = Image.open(r"C:\Users\trued\Documents\Python\Experiments\Pictures\capture0.JPG") + +def coordBound(img): + xBound, yBound = img.size + x1 = 0 + x2 = 0 + y1 = 0 + y2 = 0 + percents = [] + px = img.load() + total = 0 + white = 0 + + # Finding x-coord + for x in range(xBound): + total = 0 + white = 0 + for y in range(yBound): + if px[x, y] > 0: + white += 1 + total += 1 + # Calculates percent of white pixels from edge detected image per x line + if (white/total) != 1.0: + percents.append(white/total) + goodPercents = [] + for i, x in enumerate(percents): + if x >= 0.006: + goodPercents.append(i) + x1 = goodPercents[0] + x2 = goodPercents[goodPercents.__len__()-1] + + # Finding y-coord + percents = [] + goodPercents = [] + for y in range(yBound): + total = 0 + white = 0 + for x in range(xBound): + if px[x, y] > 0: + white += 1 + total += 1 + # Calculates percent of white pixels from edge detected image per y line + if (white/total) != 1.0: + percents.append(white/total) + goodPercents = [] + for i, x in enumerate(percents): + if x >= 0.006: + goodPercents.append(i) + y1 = goodPercents[0] + y2 = goodPercents[goodPercents.__len__()-1] + return ((x1, y1), (x2, y2)) + +def zoom(im): + imGrey = im.convert("L") + imGrey.save("greyScale.png") + imEdges = imGrey.filter(ImageFilter.FIND_EDGES) + px = imEdges.load() + xBound, yBound = imGrey.size + + coords = [] + + img = Image.new("L", (xBound, yBound)) + for x in range(xBound): + for y in range(yBound): + if px[x, y] >= 25: + coords.append((x, y)) + img.putpixel((x, y), px[x, y]) + + x1, y1 = coordBound(img)[0] + x2, y2 = coordBound(img)[1] + newXBound = x2 - x1 + newYBound = y2 - y1 + newImg = Image.new("RGB", (x2 - x1, y2 - y1)) + px = im.load() + for ix, x in enumerate(range(x1, x2)): + for iy, y in enumerate(range(y1, y2)): + newImg.putpixel((ix, iy), px[x, y]) + return newImg + +newImg = zoom(im) +newImg.save("result.png") \ No newline at end of file diff --git a/pixel8.py b/pixel8.py index ea5bae3..1869f69 100644 --- a/pixel8.py +++ b/pixel8.py @@ -30,8 +30,4 @@ f = (returnGreat(r, g, b)-contrast) img.putpixel((x, y), 0) img.save("newImg.jpg") -print("Image Saved!") -edgeIm = img.filter(ImageFilter.FIND_EDGES) - -edgeIm.save("edgeImg.jpg") print("Image Saved!") \ No newline at end of file diff --git a/result.png b/result.png new file mode 100644 index 0000000..3c7f337 Binary files /dev/null and b/result.png differ diff --git a/runner.py b/runner.py new file mode 100644 index 0000000..0d68cf0 --- /dev/null +++ b/runner.py @@ -0,0 +1,1237 @@ +import turtle +import random +import time +from PIL import Image +class Jump(): + def __init__(self, jumps) -> None: + self.jumps = jumps + + + def setJumps(self, num): + self.jumps = num + def checkJumps(self, num): + if self.jumps == num: + return True + else: + return False + def decreaseJumps(self, num): + self.jumps -= num + if self.jumps < 0: + self.jumps = 0 + +rightBool = [False] +leftBool = [False] +downBool = [False] +upBool = [False] +jumpedBool = [False] +onGround = [False] +inAir = [False] +jumpCount = Jump(2) +jumping = [False] +level = 1 +highScore = 1 + +counter = [] +# Generate Window +win = turtle.Screen() +win.title("Runner") +win.bgcolor("light blue") +win.setup(width = 720, height = 360) +win.tracer(0) + + +# Generate Score +score = turtle.Turtle() +score.color("black") +score.hideturtle() +score.penup() +score.goto(0, 150) +score.write("Level {}".format(level), align = "center", font = ("Courier", 14, "normal")) + +# Generate Background +grass = turtle.Turtle() +grass.penup() +grass.shape("square") +grass.color("dark green") +grass.shapesize(stretch_wid=4, stretch_len=40) +grass.goto(0, -135) + +turtle.register_shape("clouds2.gif", shape=None) +cloud = turtle.Turtle() +cloud.penup() +cloud.shape("clouds2.gif") +cloud.goto(0, 0) + +# Generate Movable Scenary +platform = turtle.Turtle() +platform.penup() +platform.shape("square") +platform.color("brown") +platform.shapesize(stretch_len=4, stretch_wid=1) +a1 = platform.clone() +a2 = platform.clone() +a3 = platform.clone() +a1.goto(-180, 0) +a2.goto(0, 0) +a3.goto(180, 0) +platform.hideturtle() + +turtle.addshape("door.gif", shape=None) +door = turtle.Turtle() +door.shape("door.gif") +door.penup() +door.goto(340, 80) +print(door.shape()) +file = Image.open(door.shape()) +print(file.size) +# Create Player +player = turtle.Turtle() +player.speed(0) +player.penup() +player.shape("square") +player.shapesize(stretch_len=1, outline=1) +player.color("black", "white") +player.goto(-340, -75) +playerdx = 0.5 +playerdy = 0.1 +maxSpeed = 25 +turtle.addshape("eye", ((0, 0), (-5, 0))) +eye = turtle.Turtle() +eye.penup() +eye.shape("eye") +eye.color("black") +eyeLeft = eye.clone() +eyeRight = eye.clone() +eye.hideturtle() + +# Create Trail +trail = turtle.Turtle() +trail.speed(0) +trail.shape("square") +trail.shapesize(stretch_len=1, stretch_wid=1) +trail.color("black") +trail.penup() +trail.hideturtle() + +# Create Enemies +enemy = turtle.Turtle() +enemy.speed(0) +enemy.penup() +enemy.shape("square") +enemy.shapesize(stretch_len=1, outline=1) +enemy.color("black", "red") +enemy.goto(0, -60) +enemy.hideturtle() +enemydx = 0.1 +enemydy = 0.1 +enemyEyeLeft = eye.clone() +enemyEyeRight = eye.clone() + +enemy1 = enemy.clone() +enemy1EyeLeft = eye.clone() +enemy1EyeRight = eye.clone() +enemy1dy = 0.1 + +enemy2 = enemy.clone() +enemy2EyeLeft = eye.clone() +enemy2EyeRight = eye.clone() +enemy2dy = 0.1 +reverse = [False] +enemyPlace = [] + +# Create death objects +turtle.addshape("spikes", ((0, 0), (-5, 5), (0, 10), (-5, 15), (0, 20), (-5, 25), (0, 30), (-5, 35), (0, 40), (-5, 45), (0, 50))) +turtle.addshape("spikes1", ((0, 0), (-5, 5), (0, 10), (-5, 15), (0, 20), (-5, 25), (0, 30), (-5, 35), (0, 40), (-5, 45), (0, 50))) +turtle.addshape("spikes2", ((0, 0), (-5, 5), (0, 10), (-5, 15), (0, 20), (-5, 25), (0, 30), (-5, 35), (0, 40), (-5, 45), (0, 50))) +turtle.addshape("spikes3", ((0, 0), (-5, 5), (0, 10), (-5, 15), (0, 20), (-5, 25), (0, 30), (-5, 35), (0, 40), (-5, 45), (0, 50))) +deathPlate = turtle.Turtle() +deathPlate.shape("spikes") +deathPlate.penup() +deathPlate.color("red") +deathPlate.goto(door.xcor()-40, grass.ycor()+40) +dPCenter = turtle.Turtle() +dPCenter.penup() +dPCenter.goto(deathPlate.xcor()+25, deathPlate.ycor()+2.5) +dPCenter.hideturtle() + +d1 = turtle.Turtle() +d1.shape("spikes1") +d1.penup() +d1.color("red") +d1.goto(a1.xcor()-25, grass.ycor()+40) +d1.hideturtle() +d1PCenter = turtle.Turtle() +d1PCenter.penup() +d1PCenter.goto(d1.xcor()+25, d1.ycor()+2.5) +d1PCenter.hideturtle() + +d2 = turtle.Turtle() +d2.shape("spikes2") +d2.penup() +d2.color("red") +d2.goto(a2.xcor()-25, grass.ycor()+40) +d2.hideturtle() +d2PCenter = turtle.Turtle() +d2PCenter.penup() +d2PCenter.goto(d2.xcor()+25, d2.ycor()+2.5) +d2PCenter.hideturtle() + +d3 = turtle.Turtle() +d3.shape("spikes3") +d3.penup() +d3.color("red") +d3.goto(a3.xcor()-25, grass.ycor()+40) +d3.hideturtle() +d3PCenter = turtle.Turtle() +d3PCenter.penup() +d3PCenter.goto(d3.xcor()+25, d3.ycor()+2.5) +d3PCenter.hideturtle() + +#Staircase +step = turtle.Turtle() +step.color("maroon") +step.shape("square") +step.penup() +print(step.get_shapepoly()) +firstStep = step.clone() +firstStep.shapesize(0.5, 3) +firstStep.goto(330, grass.ycor()+45) +firstStep.hideturtle() +secStep = step.clone() +secStep.shapesize(0.5, 2) +secStep.goto(340, firstStep.ycor()+10) +secStep.hideturtle() +thirdStep = step.clone() +thirdStep.shapesize(0.5, 1) +thirdStep.goto(350, secStep.ycor()+10) +thirdStep.hideturtle() +step.hideturtle() + +# Generate Labrynth +labFloor = turtle.Turtle() +labFloor.shape("square") +labFloor.shapesize(1.5, 36) +labFloor.color("maroon") +labFloor.penup() +labFloor.goto(0, -165) +labFloor.hideturtle() + +labWall = turtle.Turtle() +labWall.shape("square") +labWall.shapesize(18, 1.5) +labWall.color("maroon") +labWall.penup() +labWall.goto(345, 0) +labWall.hideturtle() + +labPlat = turtle.Turtle() +labPlat.shape("square") +labPlat.shapesize(1, 4) +labPlat.color("maroon") +labPlat.penup() +labPlat1 = labPlat.clone() +labPlat2 = labPlat.clone() +labPlat3 = labPlat.clone() +labPlat.hideturtle() +labPlat1.hideturtle() +labPlat2.hideturtle() +labPlat3.hideturtle() + +boss = turtle.Turtle() +boss.shape("square") +boss.shapesize(5, 5, outline=1) +boss.color("black", "red") +boss.penup() +boss.goto(120, 800) +boss.hideturtle() +bossdy = 0 +bosseyeLeft = eyeLeft.clone() +bosseyeLeft.shapesize(5, 1) +bosseyeRight = eyeRight.clone() +bosseyeRight.shapesize(5, 1) +bosseyeLeft.hideturtle() +bosseyeRight.hideturtle() + +win.register_shape("key.gif", shape=None) +key = turtle.Turtle() +key.shape("key.gif") +key.penup() +key.goto(0, 0) +key.hideturtle() + +def right(): + x = player.xcor() + x += playerdx + player.setx(x) +def left(): + x = player.xcor() + x -= playerdx + player.setx(x) + +def setUp(): + upBool[0] = True +def setRight(): + rightBool[0] = True +def setLeft(): + leftBool[0] = True +def setDown(): + downBool[0] = True +def unRight(): + rightBool[0] = False +def unLeft(): + leftBool[0] = False +def unDown(): + downBool[0] = False +def unUp(): + upBool[0] = False + jumpedBool[0] = False + +def down(): + if inAir[0] == True: + y = player.ycor() + y -= 1 + player.sety(y) + +def playerJump(jumpCount): + if jumpCount.jumps > 0: + jumping[0] = True + vel = 0 + for x in range(40): + y = player.ycor() + vel += 0.1 + y += vel + player.sety(y) + eyeLeft.goto(player.xcor()-5, player.ycor()) + eyeRight.goto(player.xcor()+5, player.ycor()) + win.update() + #mainloop(level, highScore) + jumpCount.decreaseJumps(1) + upBool[0] = False + jumpedBool[0] = True +def checkHigh(level, high): + if level > high: + return level + else: + return high +def inBounds(target, lower, upper): + if lower <= target <= upper: + return True + else: + return False +def checkCollide(player, object): + bound = 0 + found = str(object.shape()).find("gif") + if (str(object.shape()).find("gif") > -1): + file = Image.open(object.shape()) + width, height = file.size + bound = width/2 + elif object.shape() == "spikes": + if inBounds(player.towards(dPCenter), 180, 250) or inBounds(player.towards(dPCenter), 290, 360): # Check if player is to the right or left of spikes + sidels = [] + for x, y in object.get_shapepoly(): + sidels.append(y) + sidels.sort() + ylow = sidels[0] + yhigh = sidels[len(sidels)-1] + ylen = yhigh - ylow + bound = (ylen/2)+1 + if inBounds(player.towards(dPCenter), 250, 290): # Check if player is above spikes + upls = [] + for x, y in object.get_shapepoly(): + upls.append(x) + upls.sort() + xlow = upls[0] + xhigh = upls[len(upls)-1] + xlen = xhigh - xlow + bound = (xlen/2)+1 + if player.distance(dPCenter) < bound+5: + return True + else: + return False + elif object.shape() == "spikes1": + if inBounds(player.towards(d1PCenter), 180, 250) or inBounds(player.towards(d1PCenter), 290, 360): # Check if player is to the right or left of spikes + sidels = [] + for x, y in object.get_shapepoly(): + sidels.append(y) + sidels.sort() + ylow = sidels[0] + yhigh = sidels[len(sidels)-1] + ylen = yhigh - ylow + bound = (ylen/2)+1 + if inBounds(player.towards(d1PCenter), 250, 290): # Check if player is above spikes + upls = [] + for x, y in object.get_shapepoly(): + upls.append(x) + upls.sort() + xlow = upls[0] + xhigh = upls[len(upls)-1] + xlen = xhigh - xlow + bound = (xlen/2)+1 + if player.distance(d1PCenter) < bound+5: + return True + else: + return False + elif object.shape() == "spikes2": + if inBounds(player.towards(d2PCenter), 180, 250) or inBounds(player.towards(d2PCenter), 290, 360): # Check if player is to the right or left of spikes + sidels = [] + for x, y in object.get_shapepoly(): + sidels.append(y) + sidels.sort() + ylow = sidels[0] + yhigh = sidels[len(sidels)-1] + ylen = yhigh - ylow + bound = (ylen/2)+1 + if inBounds(player.towards(d2PCenter), 250, 290): # Check if player is above spikes + upls = [] + for x, y in object.get_shapepoly(): + upls.append(x) + upls.sort() + xlow = upls[0] + xhigh = upls[len(upls)-1] + xlen = xhigh - xlow + bound = (xlen/2)+1 + if player.distance(d2PCenter) < bound+5: + return True + else: + return False + elif object.shape() == "spikes3": + if inBounds(player.towards(d3PCenter), 180, 250) or inBounds(player.towards(d3PCenter), 290, 360): # Check if player is to the right or left of spikes + sidels = [] + for x, y in object.get_shapepoly(): + sidels.append(y) + sidels.sort() + ylow = sidels[0] + yhigh = sidels[len(sidels)-1] + ylen = yhigh - ylow + bound = (ylen/2)+1 + if inBounds(player.towards(d3PCenter), 250, 290): # Check if player is above spikes + upls = [] + for x, y in object.get_shapepoly(): + upls.append(x) + upls.sort() + xlow = upls[0] + xhigh = upls[len(upls)-1] + xlen = xhigh - xlow + bound = (xlen/2)+1 + if player.distance(d3PCenter) < bound+5: + return True + else: + return False + else: + if inBounds(player.towards(object), 270, 360) or inBounds(player.towards(object), 90, 180): # Left + sidels = [] + for x, y in object.get_shapepoly(): + sidels.append(y) + sidels.sort() + ylow = sidels[0] + yhigh = sidels[len(sidels)-1] + ylen = yhigh - ylow + bound = (ylen/2)+1 + if inBounds(player.towards(object), 180, 270) or inBounds(player.towards(object), 0, 90): # Right + upls = [] + for x, y in object.get_shapepoly(): + upls.append(x) + upls.sort() + xlow = upls[0] + xhigh = upls[len(upls)-1] + xlen = xhigh - xlow + bound = (xlen/2)+1 + if player.distance(object) < bound+5: + return True + else: + return False + +def checkPlatform(player, playerdy, platform, grass, inAir, onGround): + xls = [] + yls = [] + ls = platform.get_shapepoly() + for y, x in ls: + xls.append(x) + yls.append(y) + xls.sort() + yls.sort() + greatY = yls[len(yls)-1] - yls[0] + dist = xls[len(xls)-1]+10 + + gls = [] + ls = grass.get_shapepoly() + for y, x in ls: + gls.append(y) + gls.sort() + grassY = gls[len(gls)-1]+10 + + if player.xcor() > platform.xcor()-dist and player.xcor() < platform.xcor()+dist: # Check plr inBounds x-axis + if player.ycor() > platform.ycor()+(greatY-0.2): + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + elif inBounds(player.ycor(), platform.ycor(), platform.ycor()+greatY): + player.goto(player.xcor(), platform.ycor()+greatY) + inAir[0] = False + onGround[0] = True + elif player.ycor() > grass.ycor()+(grassY-0.2): + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + else: + player.goto(player.xcor(), grass.ycor()+grassY) + inAir[0] = False + onGround[0] = True + return True + else: + return False + + +def onPlatform(enemy, a1, a2, a3, reverse): + if inBounds(enemy.xcor(), a1.xcor()-50, a1.xcor()+50): + if enemy.xcor() > a1.xcor()+25: + reverse[0] = True + if enemy.xcor() <= a1.xcor()-25: + reverse[0] = False + if reverse[0] == False: + enemy.forward(enemydx) + elif reverse[0] == True: + enemy.backward(enemydx) + elif inBounds(enemy.xcor(), a2.xcor()-50, a2.xcor()+50): + if enemy.xcor() > a2.xcor()+25: + reverse[0] = True + + if enemy.xcor() <= a2.xcor()-25: + reverse[0] = False + if reverse[0] == False: + enemy.forward(enemydx) + elif reverse[0] == True: + enemy.backward(enemydx) + elif inBounds(enemy.xcor(), a3.xcor()-50, a3.xcor()+50): + if enemy.xcor() > a3.xcor()+25: + reverse[0] = True + + if enemy.xcor() <= a3.xcor()-25: + reverse[0] = False + if reverse[0] == False: + enemy.forward(enemydx) + elif reverse[0] == True: + enemy.backward(enemydx) + +def levelDesign(level): + if level == 1: + win.bgcolor("light blue") + player.goto(-340, -75) + a1.goto(-180, 0) + a2.goto(0, 0) + a3.goto(180, 0) + door.goto(340, 80) + enemy.hideturtle() + enemyEyeLeft.hideturtle() + enemyEyeRight.hideturtle() + enemy1.hideturtle() + enemy1EyeLeft.hideturtle() + enemy1EyeRight.hideturtle() + enemy2.hideturtle() + enemy2EyeLeft.hideturtle() + enemy2EyeRight.hideturtle() + deathPlate.showturtle() + d1.hideturtle() + d2.hideturtle() + d3.hideturtle() + elif level == 2: + player.goto(-340, -75) + a1y = -30 + a2y = 65 + a3y = 80 + a1.goto(-180, a1y) + a2.goto(0, a2y) + a3.goto(180, a3y) + cloud.speed(6) + doory = random.randint(60, 120) + door.goto(340, doory) + platRand = random.randint(1, 3) + if platRand == 1: + enemy.goto(a1.xcor(), a1.ycor()+25) + elif platRand == 2: + enemy.goto(a2.xcor(), a2.ycor()+25) + elif platRand == 3: + enemy.goto(a3.xcor(), a3.ycor()+25) + enemy.showturtle() + enemyEyeLeft.showturtle() + enemyEyeRight.showturtle() + elif level == 3: + player.goto(-340, -75) + a1y = -30 + a2y = 65 + a3y = 80 + a1.goto(-180, a1y) + a2.goto(0, a2y) + a3.goto(180, a3y) + cloud.speed(6) + doory = random.randint(60, 120) + door.goto(340, doory) + platRand = random.randint(1, 3) + if platRand == 1: + enemy.goto(a1.xcor(), a1.ycor()+25) + platRand = random.randint(1, 2) + if platRand == 1: + enemy1.goto(a2.xcor(), a2.ycor()+25) + else: + enemy1.goto(a3.xcor(), a3.ycor()+25) + elif platRand == 2: + platRand = random.randint(1, 2) + enemy.goto(a2.xcor(), a2.ycor()+25) + if platRand == 1: + enemy1.goto(a1.xcor(), a1.ycor()+25) + else: + enemy1.goto(a3.xcor(), a3.ycor()+25) + elif platRand == 3: + platRand = random.randint(1, 2) + enemy.goto(a3.xcor(), a3.ycor()+25) + if platRand == 1: + enemy1.goto(a1.xcor(), a1.ycor()+25) + else: + enemy1.goto(a2.xcor(), a2.ycor()+25) + enemy1.showturtle() + enemy1EyeLeft.showturtle() + enemy1EyeRight.showturtle() + elif level == 4: + player.goto(-340, -75) + a1y = -30 + a2y = 65 + a3y = 80 + a1.goto(-180, a1y) + a2.goto(0, a2y) + a3.goto(180, a3y) + cloud.speed(6) + doory = random.randint(60, 120) + door.goto(340, doory) + platRand = random.randint(1, 3) + if platRand == 1: + enemy.goto(a1.xcor(), a1.ycor()+25) + platRand = random.randint(1, 2) + if platRand == 1: + enemy1.goto(a2.xcor(), a2.ycor()+25) + enemy2.goto(a3.xcor(), a3.ycor()+25) + else: + enemy1.goto(a3.xcor(), a3.ycor()+25) + enemy2.goto(a2.xcor(), a2.ycor()+25) + elif platRand == 2: + platRand = random.randint(1, 2) + enemy.goto(a2.xcor(), a2.ycor()+25) + if platRand == 1: + enemy1.goto(a1.xcor(), a1.ycor()+25) + enemy2.goto(a3.xcor(), a3.ycor()+25) + else: + enemy1.goto(a3.xcor(), a3.ycor()+25) + enemy2.goto(a1.xcor(), a1.ycor()+25) + elif platRand == 3: + platRand = random.randint(1, 2) + enemy.goto(a3.xcor(), a3.ycor()+25) + if platRand == 1: + enemy1.goto(a1.xcor(), a1.ycor()+25) + enemy2.goto(a2.xcor(), a2.ycor()+25) + else: + enemy1.goto(a2.xcor(), a2.ycor()+25) + enemy2.goto(a1.xcor(), a1.ycor()+25) + enemy2.showturtle() + enemy2EyeLeft.showturtle() + enemy2EyeRight.showturtle() + elif level == 5: + player.goto(-340, -75) + a1y = random.randint(-80, 80) + a2y = random.randint(-80, 80) + a3y = random.randint(-30, 80) + a1.goto(-180, a1y) + a2.goto(0, a2y) + a3.goto(180, a3y) + cloud.speed(6) + doory = random.randint(60, 120) + door.goto(340, doory) + deathPlate.goto(door.xcor()-40, grass.ycor()+40) + platRand = random.randint(1, 3) + if platRand == 1: + enemy.goto(a1.xcor(), a1.ycor()+25) + platRand = random.randint(1, 2) + if platRand == 1: + enemy1.goto(a2.xcor(), a2.ycor()+25) + enemy2.goto(a3.xcor(), a3.ycor()+25) + else: + enemy1.goto(a3.xcor(), a3.ycor()+25) + enemy2.goto(a2.xcor(), a2.ycor()+25) + elif platRand == 2: + platRand = random.randint(1, 2) + enemy.goto(a2.xcor(), a2.ycor()+25) + if platRand == 1: + enemy1.goto(a1.xcor(), a1.ycor()+25) + enemy2.goto(a3.xcor(), a3.ycor()+25) + else: + enemy1.goto(a3.xcor(), a3.ycor()+25) + enemy2.goto(a1.xcor(), a1.ycor()+25) + elif platRand == 3: + platRand = random.randint(1, 2) + enemy.goto(a3.xcor(), a3.ycor()+25) + if platRand == 1: + enemy1.goto(a1.xcor(), a1.ycor()+25) + enemy2.goto(a2.xcor(), a2.ycor()+25) + else: + enemy1.goto(a2.xcor(), a2.ycor()+25) + enemy2.goto(a1.xcor(), a1.ycor()+25) + enemy2.showturtle() + enemy2EyeLeft.showturtle() + enemy2EyeRight.showturtle() + deathPlate.showturtle() + elif level == 6: + levelDesign(5) + d1.showturtle() + elif level == 7: + levelDesign(6) + d2.showturtle() + elif level >= 8: + levelDesign(7) + d3.showturtle() + elif level == -9: + levelDesign(1) + a1.hideturtle() + a2.hideturtle() + a3.hideturtle() + deathPlate.hideturtle() + door.hideturtle() + player.goto(-340, -75) + firstStep.goto(330, grass.ycor()+45) + firstStep.showturtle() + secStep.goto(340, firstStep.ycor()+10) + secStep.showturtle() + thirdStep.goto(350, secStep.ycor()+10) + thirdStep.showturtle() + grass.showturtle() + labFloor.hideturtle() + labWall.hideturtle() + labWall.goto(345, 0) + labPlat1.hideturtle() + labPlat2.hideturtle() + labPlat3.hideturtle() + boss.hideturtle() + bosseyeLeft.hideturtle() + bosseyeRight.hideturtle() + bossdy = 0 + elif level == -1: + win.bgcolor("brown") + cloud.hideturtle() + player.goto(-340, -75) + firstStep.hideturtle() + secStep.hideturtle() + thirdStep.hideturtle() + grass.hideturtle() + labFloor.showturtle() + labWall.showturtle() + labPlat1.goto(-180, -45) + labPlat1.showturtle() + labPlat2.goto(180, -45) + labPlat2.showturtle() + labPlat3.goto(0, 90) + labPlat3.showturtle() + boss.goto(120, 600) + boss.showturtle() + bosseyeLeft.showturtle() + bosseyeRight.showturtle() + key.goto(0, 0) + key.showturtle() + + + +# Keyboard Functions +win.listen() +win.onkeypress(setUp, "w") +win.onkeypress(setRight, "d") +win.onkeypress(setLeft, "a") +win.onkeypress(setDown, "s") +win.onkeyrelease(unUp, "w") +win.onkeyrelease(unRight, "d") +win.onkeyrelease(unLeft, "a") +win.onkeyrelease(unDown, "s") + +"""def inBounds(target, lower, upper): + target = round(target, 1) + ls = [] + for x in range((upper-lower)*10): + ls.append(x/10+lower) + for i in ls: + if target == i: + return True + return False""" + +levelDesign(level) + +def mainLoop(level, highScore): + while True: + win.update() + eyeLeft.goto(player.xcor()-5, player.ycor()) + eyeRight.goto(player.xcor()+5, player.ycor()) + enemyEyeLeft.goto(enemy.xcor()-5, enemy.ycor()) + enemyEyeRight.goto(enemy.xcor()+5, enemy.ycor()) + enemy1EyeLeft.goto(enemy1.xcor()-5, enemy1.ycor()) + enemy1EyeRight.goto(enemy1.xcor()+5, enemy1.ycor()) + enemy2EyeLeft.goto(enemy2.xcor()-5, enemy2.ycor()) + enemy2EyeRight.goto(enemy2.xcor()+5, enemy2.ycor()) + + if onGround[0] == True: + jumpCount.setJumps(2) + if upBool[0] == True: + if jumpedBool[0] == False: + playerJump(jumpCount) + if rightBool[0] == True: + right() + if leftBool[0] == True: + left() + if downBool[0] == True: + down() + + # Handle movement of enemy on each platform + if level == 2: + onPlatform(enemy, a1, a2, a3, reverse) + elif level == 3: + onPlatform(enemy, a1, a2, a3, reverse) + onPlatform(enemy1, a1, a2, a3, reverse) + elif level >= 4: + onPlatform(enemy, a1, a2, a3, reverse) + onPlatform(enemy1, a1, a2, a3, reverse) + onPlatform(enemy2, a1, a2, a3, reverse) + + + # Handle enemy clipping through ground + if enemy.ycor() > grass.ycor()+50: + enemy.sety(enemy.ycor()-enemydx) + else: + enemy.goto(enemy.xcor(), grass.ycor()+50) + """ + # Handle player clipping through platform and ground + if player.xcor() > a1.xcor()-50 and player.xcor() < a1.xcor()+50: # Platform a1 + if player.ycor() > a1.ycor()+19.8: + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + elif inBounds(player.ycor(), a1.ycor(), a1.ycor()+20): + player.goto(player.xcor(), a1.ycor()+20) + inAir[0] = False + onGround[0] = True + elif player.ycor() > grass.ycor()+49.8: + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + else: + player.goto(player.xcor(), grass.ycor()+50) + inAir[0] = False + onGround[0] = True""" + """ if player.xcor() > a2.xcor()-50 and player.xcor() < a2.xcor()+50: # Platform a2 + if player.ycor() > a2.ycor()+19.8: + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + elif inBounds(player.ycor(), a2.ycor(), a2.ycor()+20): + player.goto(player.xcor(), a2.ycor()+20) + inAir[0] = False + onGround[0] = True + elif player.ycor() > grass.ycor()+49.8: + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + else: + player.goto(player.xcor(), grass.ycor()+50) + inAir[0] = False + onGround[0] = True + elif player.xcor() > a3.xcor()-50 and player.xcor() < a3.xcor()+50: # Platform a3 + if player.ycor() > a3.ycor()+19.8: + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + elif inBounds(player.ycor(), a3.ycor(), a3.ycor()+20): + player.goto(player.xcor(), a3.ycor()+20) + inAir[0] = False + onGround[0] = True + elif player.ycor() > grass.ycor()+49.8: + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + else: + player.goto(player.xcor(), grass.ycor()+50) + inAir[0] = False + onGround[0] = True""" + plat = False + if checkPlatform(player, playerdy, a1, grass, inAir, onGround): + plat = True + elif checkPlatform(player, playerdy, a2, grass, inAir, onGround): + plat = True + elif checkPlatform(player, playerdy, a3, grass, inAir, onGround): + plat = True + elif player.ycor() > grass.ycor()+49.8: + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + else: + player.goto(player.xcor(), grass.ycor()+50) + inAir[0] = False + onGround[0] = True + + # Handle enemy clipping through platform + if enemy.xcor() > a1.xcor()-50 and enemy.xcor() < a1.xcor()+50: # Platform a1 + if enemy.ycor() > a1.ycor()+19.8: + enemy.sety(enemy.ycor()-enemydy) + elif inBounds(enemy.ycor(), a1.ycor(), a1.ycor()+20): + enemy.goto(enemy.xcor(), a1.ycor()+20) + + elif enemy.xcor() > a2.xcor()-50 and enemy.xcor() < a2.xcor()+50: # Platform a2 + if enemy.ycor() > a2.ycor()+19.8: + enemy.sety(enemy.ycor()-enemydy) + elif inBounds(enemy.ycor(), a2.ycor(), a2.ycor()+20): + enemy.goto(enemy.xcor(), a2.ycor()+20) + + elif enemy.xcor() > a3.xcor()-50 and enemy.xcor() < a3.xcor()+50: # Platform a3 + if enemy.ycor() > a3.ycor()+19.8: + enemy.sety(enemy.ycor()-enemydy) + elif inBounds(enemy.ycor(), a3.ycor(), a3.ycor()+20): + enemy.goto(enemy.xcor(), a3.ycor()+20) + + # Enemy 1 + if enemy1.xcor() > a1.xcor()-50 and enemy1.xcor() < a1.xcor()+50: # Platform a1 + if enemy1.ycor() > a1.ycor()+19.8: + enemy1.sety(enemy1.ycor()-enemy1dy) + elif inBounds(enemy1.ycor(), a1.ycor(), a1.ycor()+20): + enemy1.goto(enemy1.xcor(), a1.ycor()+20) + + elif enemy1.xcor() > a2.xcor()-50 and enemy1.xcor() < a2.xcor()+50: # Platform a2 + if enemy1.ycor() > a2.ycor()+19.8: + enemy1.sety(enemy1.ycor()-enemy1dy) + elif inBounds(enemy1.ycor(), a2.ycor(), a2.ycor()+20): + enemy1.goto(enemy1.xcor(), a2.ycor()+20) + + elif enemy1.xcor() > a3.xcor()-50 and enemy1.xcor() < a3.xcor()+50: # Platform a3 + if enemy1.ycor() > a3.ycor()+19.8: + enemy1.sety(enemy1.ycor()-enemy1dy) + elif inBounds(enemy1.ycor(), a3.ycor(), a3.ycor()+20): + enemy1.goto(enemy1.xcor(), a3.ycor()+20) + + # Enemy 2 + if enemy2.xcor() > a1.xcor()-50 and enemy2.xcor() < a1.xcor()+50: # Platform a1 + if enemy2.ycor() > a1.ycor()+19.8: + enemy2.sety(enemy2.ycor()-enemy2dy) + elif inBounds(enemy2.ycor(), a1.ycor(), a1.ycor()+20): + enemy2.goto(enemy2.xcor(), a1.ycor()+20) + + elif enemy2.xcor() > a2.xcor()-50 and enemy2.xcor() < a2.xcor()+50: # Platform a2 + if enemy2.ycor() > a2.ycor()+19.8: + enemy2.sety(enemy2.ycor()-enemy2dy) + elif inBounds(enemy2.ycor(), a2.ycor(), a2.ycor()+20): + enemy2.goto(enemy2.xcor(), a2.ycor()+20) + + elif enemy2.xcor() > a3.xcor()-50 and enemy2.xcor() < a3.xcor()+50: # Platform a3 + if enemy2.ycor() > a3.ycor()+19.8: + enemy2.sety(enemy2.ycor()-enemy2dy) + elif inBounds(enemy2.ycor(), a3.ycor(), a3.ycor()+20): + enemy2.goto(enemy2.xcor(), a3.ycor()+20) + + + # Handle player going off screen + if player.xcor() >= 350: + if level < 9: + level = 1 + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + levelDesign(level) + elif player.xcor() <= -350: + player.goto(-348, player.ycor()) + + # Handle win + if checkCollide(player, door): + if level < 9: + level += 1 + score.clear() + highScore = checkHigh(level, highScore) + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + levelDesign(level) + + # Handle death by enemy + if checkCollide(player, enemy): + if level > 1 and level < 9: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + elif checkCollide(player, enemy1): + if level > 2 and level < 9: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + elif checkCollide(player, enemy2): + if level > 3 and level < 9: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + + # Handle death by deathPlate + if checkCollide(player, deathPlate): + if level > 1 and level < 9: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + if checkCollide(player, d1) and level >= 6: + if level > 1 and level < 9: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + if checkCollide(player, d2) and level >= 7: + if level > 1 and level < 9: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + if checkCollide(player, d3) and level >= 8: + if level > 1 and level < 9: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + + + +while True: + win.update() + + # Handle character eyes + eyeLeft.goto(player.xcor()-5, player.ycor()) + eyeRight.goto(player.xcor()+5, player.ycor()) + enemyEyeLeft.goto(enemy.xcor()-5, enemy.ycor()) + enemyEyeRight.goto(enemy.xcor()+5, enemy.ycor()) + enemy1EyeLeft.goto(enemy1.xcor()-5, enemy1.ycor()) + enemy1EyeRight.goto(enemy1.xcor()+5, enemy1.ycor()) + enemy2EyeLeft.goto(enemy2.xcor()-5, enemy2.ycor()) + enemy2EyeRight.goto(enemy2.xcor()+5, enemy2.ycor()) + bosseyeLeft.goto(boss.xcor()-25, boss.ycor()) + bosseyeRight.goto(boss.xcor()+25, boss.ycor()) + + if onGround[0] == True: + jumpCount.setJumps(2) + if upBool[0] == True: + if jumpedBool[0] == False: + playerJump(jumpCount) + if rightBool[0] == True: + right() + if leftBool[0] == True: + left() + if downBool[0] == True: + down() + + # Handle movement of enemy on each platform + if level == 2: + onPlatform(enemy, a1, a2, a3, reverse) + elif level == 3: + onPlatform(enemy, a1, a2, a3, reverse) + onPlatform(enemy1, a1, a2, a3, reverse) + elif level >= 4: + onPlatform(enemy, a1, a2, a3, reverse) + onPlatform(enemy1, a1, a2, a3, reverse) + onPlatform(enemy2, a1, a2, a3, reverse) + + + # Handle enemy clipping through ground + if enemy.ycor() > grass.ycor()+50: + enemy.sety(enemy.ycor()-enemydx) + else: + enemy.goto(enemy.xcor(), grass.ycor()+50) + plat = False + if checkPlatform(player, playerdy, a1, grass, inAir, onGround): + plat = True + elif checkPlatform(player, playerdy, a2, grass, inAir, onGround): + plat = True + elif checkPlatform(player, playerdy, a3, grass, inAir, onGround): + plat = True + elif player.ycor() > grass.ycor()+49.8: + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + else: + player.goto(player.xcor(), grass.ycor()+50) + inAir[0] = False + onGround[0] = True + + # Handle enemy clipping through platform + if enemy.xcor() > a1.xcor()-50 and enemy.xcor() < a1.xcor()+50: # Platform a1 + if enemy.ycor() > a1.ycor()+19.8: + enemy.sety(enemy.ycor()-enemydy) + elif inBounds(enemy.ycor(), a1.ycor(), a1.ycor()+20): + enemy.goto(enemy.xcor(), a1.ycor()+20) + + elif enemy.xcor() > a2.xcor()-50 and enemy.xcor() < a2.xcor()+50: # Platform a2 + if enemy.ycor() > a2.ycor()+19.8: + enemy.sety(enemy.ycor()-enemydy) + elif inBounds(enemy.ycor(), a2.ycor(), a2.ycor()+20): + enemy.goto(enemy.xcor(), a2.ycor()+20) + + elif enemy.xcor() > a3.xcor()-50 and enemy.xcor() < a3.xcor()+50: # Platform a3 + if enemy.ycor() > a3.ycor()+19.8: + enemy.sety(enemy.ycor()-enemydy) + elif inBounds(enemy.ycor(), a3.ycor(), a3.ycor()+20): + enemy.goto(enemy.xcor(), a3.ycor()+20) + + # Enemy 1 + if enemy1.xcor() > a1.xcor()-50 and enemy1.xcor() < a1.xcor()+50: # Platform a1 + if enemy1.ycor() > a1.ycor()+19.8: + enemy1.sety(enemy1.ycor()-enemy1dy) + elif inBounds(enemy1.ycor(), a1.ycor(), a1.ycor()+20): + enemy1.goto(enemy1.xcor(), a1.ycor()+20) + + elif enemy1.xcor() > a2.xcor()-50 and enemy1.xcor() < a2.xcor()+50: # Platform a2 + if enemy1.ycor() > a2.ycor()+19.8: + enemy1.sety(enemy1.ycor()-enemy1dy) + elif inBounds(enemy1.ycor(), a2.ycor(), a2.ycor()+20): + enemy1.goto(enemy1.xcor(), a2.ycor()+20) + + elif enemy1.xcor() > a3.xcor()-50 and enemy1.xcor() < a3.xcor()+50: # Platform a3 + if enemy1.ycor() > a3.ycor()+19.8: + enemy1.sety(enemy1.ycor()-enemy1dy) + elif inBounds(enemy1.ycor(), a3.ycor(), a3.ycor()+20): + enemy1.goto(enemy1.xcor(), a3.ycor()+20) + + # Enemy 2 + if enemy2.xcor() > a1.xcor()-50 and enemy2.xcor() < a1.xcor()+50: # Platform a1 + if enemy2.ycor() > a1.ycor()+19.8: + enemy2.sety(enemy2.ycor()-enemy2dy) + elif inBounds(enemy2.ycor(), a1.ycor(), a1.ycor()+20): + enemy2.goto(enemy2.xcor(), a1.ycor()+20) + + elif enemy2.xcor() > a2.xcor()-50 and enemy2.xcor() < a2.xcor()+50: # Platform a2 + if enemy2.ycor() > a2.ycor()+19.8: + enemy2.sety(enemy2.ycor()-enemy2dy) + elif inBounds(enemy2.ycor(), a2.ycor(), a2.ycor()+20): + enemy2.goto(enemy2.xcor(), a2.ycor()+20) + + elif enemy2.xcor() > a3.xcor()-50 and enemy2.xcor() < a3.xcor()+50: # Platform a3 + if enemy2.ycor() > a3.ycor()+19.8: + enemy2.sety(enemy2.ycor()-enemy2dy) + elif inBounds(enemy2.ycor(), a3.ycor(), a3.ycor()+20): + enemy2.goto(enemy2.xcor(), a3.ycor()+20) + + + # Handle player going off screen + if player.xcor() >= 350: + #if level < 9: + level = 1 + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + levelDesign(level) + elif player.xcor() <= -350: + player.goto(-348, player.ycor()) + + # Handle win + if checkCollide(player, door): + if level >= 1: + level += 1 + score.clear() + highScore = checkHigh(level, highScore) + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + levelDesign(level) + + # Handle death by enemy + if checkCollide(player, enemy): + if level > 1: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + elif checkCollide(player, enemy1): + if level > 2: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + elif checkCollide(player, enemy2): + if level > 3: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + + # Handle death by deathPlate + if checkCollide(player, deathPlate): + #if level >= 1 and level < 9: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + if checkCollide(player, d1) and level >= 6: + #if level >= 1 and level < 9: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + if checkCollide(player, d2) and level >= 7: + #if level >= 1 and level < 9: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + if checkCollide(player, d3) and level >= 8: + #if level >= 1 and level < 9: + level = 1 + levelDesign(level) + score.clear() + score.write("Level {} High Score {}".format(level, highScore), align = "center", font = ("Courier", 14, "normal")) + """ + elif level == 10: # BOSS LEVEL + plat = False + if checkPlatform(player, playerdy, labPlat1, labFloor, inAir, onGround): # Handle player-platform collision for labrynth level + plat = True + elif checkPlatform(player, playerdy, labPlat2, labFloor, inAir, onGround): + plat = True + elif checkPlatform(player, playerdy, labPlat3, labFloor, inAir, onGround): + plat = True + elif player.ycor() > labFloor.ycor()+25: + player.sety(player.ycor()-playerdy) + inAir[0] = True + onGround[0] = False + else: + player.goto(player.xcor(), labFloor.ycor()+25) + inAir[0] = False + onGround[0] = True + if boss.ycor() > labFloor.ycor()+65: + boss.sety(boss.ycor()-bossdy) + else: + boss.goto(boss.xcor(), labFloor.ycor()+65) + if checkCollide(player, key): + key.goto(boss.xcor(), boss.ycor()) + bossdy = 1 + if checkCollide(player, boss): + level = 9 + bossdy = 0 + levelDesign(level) + + if level == 9: + if player.xcor() > firstStep.xcor()-30 and player.xcor() < firstStep.xcor()+30: # First Step + if player.ycor() > firstStep.ycor()+15: + player.sety(player.ycor()-playerdy) + elif inBounds(player.ycor(), firstStep.ycor(), firstStep.ycor()+20): + player.goto(player.xcor(), firstStep.ycor()+15) + if player.xcor() > secStep.xcor()-20 and player.xcor() < secStep.xcor()+20: # Second Step + if player.ycor() > secStep.ycor()+15: + player.sety(player.ycor()-playerdy) + elif inBounds(player.ycor(), secStep.ycor(), secStep.ycor()+20): + player.goto(player.xcor(), secStep.ycor()+15) + if player.xcor() > thirdStep.xcor()-10 and player.xcor() < thirdStep.xcor()+10: # Third Step + if player.ycor() > thirdStep.ycor()+15: + player.sety(player.ycor()-playerdy) + elif inBounds(player.ycor(), thirdStep.ycor(), thirdStep.ycor()+20): + player.goto(player.xcor(), thirdStep.ycor()+15) + """ + # Handle player-wall collision for labrynth level + #if level == 10: + # if player.xcor() >= labWall.xcor()-25 and player.ycor() >= labWall.ycor()-180: + # player.setx(labWall.xcor()-25) + + # Handle player going off screen + #if player.xcor() >= 350: + # if level == 9: + # level = 10 + # levelDesign(level) + # elif level == 10: + # level = 9 + # levelDesign(level) \ No newline at end of file diff --git a/trail.py b/trail.py new file mode 100644 index 0000000..d01e550 --- /dev/null +++ b/trail.py @@ -0,0 +1,9 @@ +import turtle + +t = turtle.Turtle() +t.fillcolor('blue') +t.begin_fill() +for i in range(4): + t.forward(150) + t.right(90) +t.end_fill() \ No newline at end of file