From 32d7009aa0fce81d2857a46172400ed4f7b081b2 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Fri, 24 May 2019 12:41:45 -0400 Subject: [PATCH 01/26] Create final.py --- final.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 final.py diff --git a/final.py b/final.py new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/final.py @@ -0,0 +1 @@ + From 49cf9c5cfb9dc814b2408af53b3a1a020515c492 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Fri, 24 May 2019 13:06:20 -0400 Subject: [PATCH 02/26] Updated from Brython Server: 5/24/2019 1:06:20 PM --- final.py | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/final.py b/final.py index 8b137891..57dd1ee7 100644 --- a/final.py +++ b/final.py @@ -1 +1,86 @@ +#kyDoleuc04 +#Final Project +from ggame import App, Color, LineStyle, Sprite, RectangleAsset, CircleAsset, EllipseAsset, PolygonAsset, Frame, TextAsset + +pink = Color(0xFF00FF, 1.0) +red = Color(0xff0000, 1.0) +green = Color(0x39ff14, 1.0) +blue = Color(0x0000ff, 1.0) +black = Color(0x000000, 1.0) +white = Color(0xffffff, 1.0) +grey = Color(0xC0C0C0, 1.0) +yellow = Color(0xffff00, 1.0) + +class Bird(Sprite): + side = LineStyle(1,black) + poly = RectangleAsset(10,10, side, yellow) + def __init__(self,position): + super().__init__(Person.poly,position) + self.vx = 0 + self.vy = 0 + +class Block(Sprite): + side = LineStyle(1,black) + square = RectangleAsset(30,30,side,green) + def __init__(self,position): + super().__init__(Block.square,position) + +class Game(App): + def __init__(self): + super().__init__(1000,540) + + self.gameover = False + + Game.listenKeyEvent('keydown', 'right arrow', self.right) + Game.listenKeyEvent('keyup', 'right arrow', self.rightstop) + Game.listenKeyEvent('keydown', 'left arrow', self.left) + Game.listenKeyEvent('keyup', 'left arrow', self.leftstop) + Game.listenKeyEvent('keydown', 'up arrow', self.up) + Game.listenKeyEvent('keyup', 'up arrow', self.upstop) + Game.listenKeyEvent('keydown', 'down arrow', self.down) + Game.listenKeyEvent('keyup', 'down arrow', self.downstop) + + x = 0 + y = 0 + + Bird(10,250) + Block(75,100) + Block(75,130) + Block(75,160) + + def right(self,event): + for sprite in self.getSpritesbyClass(Person): + sprite.vx = 2 + + def rightstop(self,event): + for sprite in self.getSpritesbyClass(Person): + sprite.vx = 0 + + def left(self,event): + for sprite in self.getSpritesbyClass(Person): + sprite.vx = -2 + + def leftstop(self,event): + for sprite in self.getSpritesbyClass(Person): + sprite.vx = 0 + + def up(self,event): + #if self.grounded == True: + for sprite in self.getSpritesbyClass(Person): + sprite.vy = -5 + + def upstop(self,event): + for sprite in self.getSpritesbyClass(Person): + sprite.vy = 0 + + def down(self,event): + for sprite in self.getSpritesbyClass(Person): + sprite.vy = 2 + + def downstop(self,event): + for sprite in self.getSpritesbyClass(Person): + sprite.vy = 0 + +myapp = Game() +myapp.run() \ No newline at end of file From b06f0407f7aea1a5a6d2a13eacba96089e75d482 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 28 May 2019 17:52:23 -0400 Subject: [PATCH 03/26] Updated from Brython Server: 5/28/2019 5:52:24 PM --- final.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/final.py b/final.py index 57dd1ee7..6305ebb6 100644 --- a/final.py +++ b/final.py @@ -16,7 +16,7 @@ class Bird(Sprite): side = LineStyle(1,black) poly = RectangleAsset(10,10, side, yellow) def __init__(self,position): - super().__init__(Person.poly,position) + super().__init__(Bird.poly,position) self.vx = 0 self.vy = 0 @@ -29,9 +29,7 @@ def __init__(self,position): class Game(App): def __init__(self): super().__init__(1000,540) - - self.gameover = False - + Game.listenKeyEvent('keydown', 'right arrow', self.right) Game.listenKeyEvent('keyup', 'right arrow', self.rightstop) Game.listenKeyEvent('keydown', 'left arrow', self.left) @@ -39,48 +37,50 @@ def __init__(self): Game.listenKeyEvent('keydown', 'up arrow', self.up) Game.listenKeyEvent('keyup', 'up arrow', self.upstop) Game.listenKeyEvent('keydown', 'down arrow', self.down) - Game.listenKeyEvent('keyup', 'down arrow', self.downstop) + Game.listenKeyEvent('keyup', 'down arrow', self.downstop) x = 0 y = 0 - Bird(10,250) - Block(75,100) - Block(75,130) - Block(75,160) + Bird((10,250)) + Block((75,100)) + Block((75,130)) + Block((75,160)) def right(self,event): - for sprite in self.getSpritesbyClass(Person): + for sprite in self.getSpritesbyClass(Bird): sprite.vx = 2 def rightstop(self,event): - for sprite in self.getSpritesbyClass(Person): + for sprite in self.getSpritesbyClass(Bird): sprite.vx = 0 def left(self,event): - for sprite in self.getSpritesbyClass(Person): + for sprite in self.getSpritesbyClass(Bird): sprite.vx = -2 def leftstop(self,event): - for sprite in self.getSpritesbyClass(Person): + for sprite in self.getSpritesbyClass(Bird): sprite.vx = 0 def up(self,event): #if self.grounded == True: - for sprite in self.getSpritesbyClass(Person): + for sprite in self.getSpritesbyClass(Bird): sprite.vy = -5 def upstop(self,event): - for sprite in self.getSpritesbyClass(Person): + for sprite in self.getSpritesbyClass(Bird): sprite.vy = 0 def down(self,event): - for sprite in self.getSpritesbyClass(Person): + for sprite in self.getSpritesbyClass(Bird): sprite.vy = 2 def downstop(self,event): - for sprite in self.getSpritesbyClass(Person): + for sprite in self.getSpritesbyClass(Bird): sprite.vy = 0 + + myapp = Game() myapp.run() \ No newline at end of file From 2321f5bc3f843c0fcf075e9560c9898fef856447 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 28 May 2019 18:44:59 -0400 Subject: [PATCH 04/26] Updated from Brython Server: 5/28/2019 6:45:00 PM --- final.py | 86 ++++++++++++++++++++++++++------------------------------ 1 file changed, 40 insertions(+), 46 deletions(-) diff --git a/final.py b/final.py index 6305ebb6..f5044b2a 100644 --- a/final.py +++ b/final.py @@ -12,6 +12,8 @@ grey = Color(0xC0C0C0, 1.0) yellow = Color(0xffff00, 1.0) + + class Bird(Sprite): side = LineStyle(1,black) poly = RectangleAsset(10,10, side, yellow) @@ -19,6 +21,39 @@ def __init__(self,position): super().__init__(Bird.poly,position) self.vx = 0 self.vy = 0 + self.deltavy = 0.1 + + Game.listenKeyEvent("keydown", "up arrow", self.up) + Game.listenKeyEvent("keyup", "up arrow", self.down) + Game.listenKeyEvent("keydown", "right arrow", self.right) + Game.listenKeyEvent("keyup", "right arrow", self.rightstop) + Game.listenKeyEvent("keydown", "left arrow", self.left) + Game.listenKeyEvent("keyup", "left arrow", self.leftstop) + + def up(self, event): + self.vy += -0.12 + self.deltavy = 0 + + def down(self, event): + self.deltavy = 0.06 + self.vy += 0.08 + + def right(self, event): + self.vx += 0.1 + + def rightstop(self, event): + self.vx += 0 + + def left(self, event): + self.vx += -0.1 + + def leftstop(self, event): + self.vx += 0 + + def step(self): + self.y += self.vy + self.x += self.vx + self.vy += self.deltavy class Block(Sprite): side = LineStyle(1,black) @@ -28,58 +63,17 @@ def __init__(self,position): class Game(App): def __init__(self): - super().__init__(1000,540) - - Game.listenKeyEvent('keydown', 'right arrow', self.right) - Game.listenKeyEvent('keyup', 'right arrow', self.rightstop) - Game.listenKeyEvent('keydown', 'left arrow', self.left) - Game.listenKeyEvent('keyup', 'left arrow', self.leftstop) - Game.listenKeyEvent('keydown', 'up arrow', self.up) - Game.listenKeyEvent('keyup', 'up arrow', self.upstop) - Game.listenKeyEvent('keydown', 'down arrow', self.down) - Game.listenKeyEvent('keyup', 'down arrow', self.downstop) + super().__init__() + self.player1 = Bird((10,250)) - x = 0 - y = 0 - Bird((10,250)) Block((75,100)) Block((75,130)) Block((75,160)) - - def right(self,event): - for sprite in self.getSpritesbyClass(Bird): - sprite.vx = 2 - - def rightstop(self,event): - for sprite in self.getSpritesbyClass(Bird): - sprite.vx = 0 - - def left(self,event): - for sprite in self.getSpritesbyClass(Bird): - sprite.vx = -2 - - def leftstop(self,event): - for sprite in self.getSpritesbyClass(Bird): - sprite.vx = 0 - def up(self,event): - #if self.grounded == True: - for sprite in self.getSpritesbyClass(Bird): - sprite.vy = -5 - - def upstop(self,event): - for sprite in self.getSpritesbyClass(Bird): - sprite.vy = 0 - - def down(self,event): - for sprite in self.getSpritesbyClass(Bird): - sprite.vy = 2 - - def downstop(self,event): - for sprite in self.getSpritesbyClass(Bird): - sprite.vy = 0 - + def step(self): + self.player1.step() + myapp = Game() From e7d6f1f31dff335be0453dae2982e37e58efe6b5 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 28 May 2019 19:08:34 -0400 Subject: [PATCH 05/26] Updated from Brython Server: 5/28/2019 7:08:35 PM --- final.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/final.py b/final.py index f5044b2a..ea011065 100644 --- a/final.py +++ b/final.py @@ -12,8 +12,6 @@ grey = Color(0xC0C0C0, 1.0) yellow = Color(0xffff00, 1.0) - - class Bird(Sprite): side = LineStyle(1,black) poly = RectangleAsset(10,10, side, yellow) @@ -54,6 +52,8 @@ def step(self): self.y += self.vy self.x += self.vx self.vy += self.deltavy + if self.y >= 613: + self.y = 613 class Block(Sprite): side = LineStyle(1,black) @@ -61,6 +61,12 @@ class Block(Sprite): def __init__(self,position): super().__init__(Block.square,position) +class Bottom(Sprite): + side = LineStyle(1,black) + square = RectangleAsset(1300,10,side,black) + def __init__(self,position): + super().__init__(Bottom.square,position) + class Game(App): def __init__(self): super().__init__() @@ -70,10 +76,12 @@ def __init__(self): Block((75,100)) Block((75,130)) Block((75,160)) + Bottom((0,625)) def step(self): - self.player1.step() - + self.player1.step() + if self.player1.collidingWithSprites(Block): + self.player1.destroy myapp = Game() From 120f39309316aac2fa802573a3b251df1769cabf Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 28 May 2019 19:14:00 -0400 Subject: [PATCH 06/26] Updated from Brython Server: 5/28/2019 7:14:01 PM --- final.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/final.py b/final.py index ea011065..4771ff13 100644 --- a/final.py +++ b/final.py @@ -76,12 +76,31 @@ def __init__(self): Block((75,100)) Block((75,130)) Block((75,160)) + Block((75,70)) + Block((75,40)) + Block((75,10)) + Block((75,10)) + Block((75,280)) + Block((75,310)) + Block((75,340)) + Block((75,370)) + Block((75,400)) + Block((75,430)) + Block((75,460)) + Block((75,490)) + Block((75,520)) + Block((75,550)) + Block((75,580)) + Block((75,610)) + Block((75,-20)) + Bottom((0,625)) def step(self): self.player1.step() if self.player1.collidingWithSprites(Block): - self.player1.destroy + self.player1.destroy() + print("GAME OVER :(((") myapp = Game() From cdc710cb1034737ff05f4be775a930b69e04486c Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 28 May 2019 19:16:03 -0400 Subject: [PATCH 07/26] Updated from Brython Server: 5/28/2019 7:16:04 PM --- final.py | 1 - 1 file changed, 1 deletion(-) diff --git a/final.py b/final.py index 4771ff13..93ecf7ca 100644 --- a/final.py +++ b/final.py @@ -72,7 +72,6 @@ def __init__(self): super().__init__() self.player1 = Bird((10,250)) - Block((75,100)) Block((75,130)) Block((75,160)) From 4c39b9a0079c765c8d60ba15ed514a4cdc86a5d0 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 28 May 2019 21:29:53 -0400 Subject: [PATCH 08/26] Updated from Brython Server: 5/28/2019 9:29:55 PM --- final.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/final.py b/final.py index 93ecf7ca..028b4546 100644 --- a/final.py +++ b/final.py @@ -21,8 +21,8 @@ def __init__(self,position): self.vy = 0 self.deltavy = 0.1 - Game.listenKeyEvent("keydown", "up arrow", self.up) - Game.listenKeyEvent("keyup", "up arrow", self.down) + Game.listenKeyEvent("keydown", "space", self.up) + Game.listenKeyEvent("keyup", "space", self.down) Game.listenKeyEvent("keydown", "right arrow", self.right) Game.listenKeyEvent("keyup", "right arrow", self.rightstop) Game.listenKeyEvent("keydown", "left arrow", self.left) @@ -71,7 +71,9 @@ class Game(App): def __init__(self): super().__init__() self.player1 = Bird((10,250)) - + for x in range(0,30): + Block((155,(x*30))) + Block((75,100)) Block((75,130)) Block((75,160)) From 89b802d059eebc40d598cc3e4be8a0fd9659ec84 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 28 May 2019 21:46:46 -0400 Subject: [PATCH 09/26] Updated from Brython Server: 5/28/2019 9:46:47 PM --- final.py | 58 ++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/final.py b/final.py index 028b4546..777dbc98 100644 --- a/final.py +++ b/final.py @@ -54,6 +54,10 @@ def step(self): self.vy += self.deltavy if self.y >= 613: self.y = 613 + self.deltavy = -0.1 + elif self.y <=8: + self.y =8 + class Block(Sprite): side = LineStyle(1,black) @@ -67,35 +71,43 @@ class Bottom(Sprite): def __init__(self,position): super().__init__(Bottom.square,position) +class Top(Sprite): + side = LineStyle(1,black) + square = RectangleAsset(1300,10,side,black) + def __init__(self,position): + super().__init__(Top.square,position) + class Game(App): def __init__(self): super().__init__() self.player1 = Bird((10,250)) - for x in range(0,30): - Block((155,(x*30))) - - Block((75,100)) - Block((75,130)) - Block((75,160)) - Block((75,70)) - Block((75,40)) - Block((75,10)) - Block((75,10)) - Block((75,280)) - Block((75,310)) - Block((75,340)) - Block((75,370)) - Block((75,400)) - Block((75,430)) - Block((75,460)) - Block((75,490)) - Block((75,520)) - Block((75,550)) - Block((75,580)) - Block((75,610)) - Block((75,-20)) + for x in range(0,15): + Block((100,(x*30))) + for x in range(18,30): + Block((100,(x*30))) + for x in range(0,10): + Block((250,(x*30))) + for x in range(13,30): + Block((250,(x*30))) + for x in range(0,8): + Block((400,(x*30))) + for x in range(11,30): + Block((400,(x*30))) + for x in range(0,17): + Block((550,(x*30))) + for x in range(20,30): + Block((550,(x*30))) + for x in range(0,4): + Block((700,(x*30))) + for x in range(7,30): + Block((700,(x*30))) + for x in range(0,3): + Block((850,(x*30))) + for x in range(6,30): + Block((850,(x*30))) Bottom((0,625)) + Top((0,-2)) def step(self): self.player1.step() From 45c425e910d46f3562a1ecec02e68681613aa039 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 28 May 2019 21:50:58 -0400 Subject: [PATCH 10/26] Updated from Brython Server: 5/28/2019 9:50:59 PM --- final.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/final.py b/final.py index 777dbc98..67a30053 100644 --- a/final.py +++ b/final.py @@ -77,6 +77,18 @@ class Top(Sprite): def __init__(self,position): super().__init__(Top.square,position) +class LeftSide(Sprite): + side = LineStyle(1,black) + square = RectangleAsset(10,800,side,black) + def __init__(self,position): + super().__init__(LeftSide.square,position) + +class RightSide(Sprite): + side = LineStyle(1,black) + square = RectangleAsset(10,800,side,black) + def __init__(self,position): + super().__init__(RightSide.square,position) + class Game(App): def __init__(self): super().__init__() @@ -108,6 +120,8 @@ def __init__(self): Bottom((0,625)) Top((0,-2)) + LeftSide((-2,0)) + RightSide((1137,0)) def step(self): self.player1.step() From 25471e35d90b7ac4406d10081250e5ad659ff6b0 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 28 May 2019 21:59:54 -0400 Subject: [PATCH 11/26] Updated from Brython Server: 5/28/2019 9:59:54 PM --- final.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/final.py b/final.py index 67a30053..6a5ba46a 100644 --- a/final.py +++ b/final.py @@ -54,9 +54,14 @@ def step(self): self.vy += self.deltavy if self.y >= 613: self.y = 613 - self.deltavy = -0.1 + self.deltavy = -0.05 elif self.y <=8: - self.y =8 + self.y = 8 + self.deltavy = 0.05 + if self.x <= 10: + self.x = 10 + elif self.x >= 1125: + self.x = 1125 class Block(Sprite): @@ -89,6 +94,8 @@ class RightSide(Sprite): def __init__(self,position): super().__init__(RightSide.square,position) + + class Game(App): def __init__(self): super().__init__() From cde78fa9544c30f86cbd7fb7380afef1529476bb Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 28 May 2019 22:21:25 -0400 Subject: [PATCH 12/26] Updated from Brython Server: 5/28/2019 10:21:26 PM --- final.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/final.py b/final.py index 6a5ba46a..e5be2e3d 100644 --- a/final.py +++ b/final.py @@ -13,6 +13,7 @@ yellow = Color(0xffff00, 1.0) class Bird(Sprite): + a = 1 side = LineStyle(1,black) poly = RectangleAsset(10,10, side, yellow) def __init__(self,position): @@ -62,7 +63,6 @@ def step(self): self.x = 10 elif self.x >= 1125: self.x = 1125 - class Block(Sprite): side = LineStyle(1,black) @@ -94,9 +94,14 @@ class RightSide(Sprite): def __init__(self,position): super().__init__(RightSide.square,position) - +class Start(Sprite): + side = LineStyle(1,blue) + square = RectangleAsset(30,10,side,blue) + def __init__(self,position): + super().__init__(Start.square,position) class Game(App): + a=1 def __init__(self): super().__init__() self.player1 = Bird((10,250)) @@ -129,13 +134,17 @@ def __init__(self): Top((0,-2)) LeftSide((-2,0)) RightSide((1137,0)) + Start((12,300)) def step(self): self.player1.step() if self.player1.collidingWithSprites(Block): self.player1.destroy() print("GAME OVER :(((") - + if self.player1.collidingWithSprites(Start): + self.player1.y = 290 + self.player1.deltavy = -0.03 + myapp = Game() myapp.run() \ No newline at end of file From 009301b906184a262a3a10e882f6b3387ad939bb Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 28 May 2019 22:34:34 -0400 Subject: [PATCH 13/26] Updated from Brython Server: 5/28/2019 10:34:36 PM --- final.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/final.py b/final.py index e5be2e3d..e1fb93f1 100644 --- a/final.py +++ b/final.py @@ -13,7 +13,6 @@ yellow = Color(0xffff00, 1.0) class Bird(Sprite): - a = 1 side = LineStyle(1,black) poly = RectangleAsset(10,10, side, yellow) def __init__(self,position): @@ -100,8 +99,13 @@ class Start(Sprite): def __init__(self,position): super().__init__(Start.square,position) +class Finish(Sprite): + side = LineStyle(1,yellow) + square = RectangleAsset(130,10,side,yellow) + def __init__(self,position): + super().__init__(Finish.square,position) + class Game(App): - a=1 def __init__(self): super().__init__() self.player1 = Bird((10,250)) @@ -135,16 +139,21 @@ def __init__(self): LeftSide((-2,0)) RightSide((1137,0)) Start((12,300)) + Finish((950,300)) def step(self): self.player1.step() if self.player1.collidingWithSprites(Block): self.player1.destroy() print("GAME OVER :(((") + if self.player1.collidingWithSprites(Start): self.player1.y = 290 - self.player1.deltavy = -0.03 - + self.player1.deltavy = -0.01 + + if self.player1.collidingWithSprites(Finish): + self.player1.y = 290 + print("You Win!!!!") myapp = Game() myapp.run() \ No newline at end of file From 13d9261b68ab31aefa960ade86696dadbc2a8022 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Wed, 29 May 2019 13:53:01 -0400 Subject: [PATCH 14/26] Updated from Brython Server: 5/29/2019 1:53:03 PM --- final.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/final.py b/final.py index e1fb93f1..85c3f993 100644 --- a/final.py +++ b/final.py @@ -100,11 +100,21 @@ def __init__(self,position): super().__init__(Start.square,position) class Finish(Sprite): - side = LineStyle(1,yellow) + side = LineStyle(1,black) square = RectangleAsset(130,10,side,yellow) def __init__(self,position): super().__init__(Finish.square,position) +class Text(Sprite): + text = ("Flappy Bird XTREME", style = "bold 40pt Arial", width=250, fill=yellow) + def __init__(self,position): + super().__init__(Text.text,position) + +class FinishText(Sprite): + text = ("Finish", style = "bold 20pt Arial", width=250, fill=black) + def __init__(self,position): + super().__init__(FinishText.text,position) + class Game(App): def __init__(self): super().__init__() @@ -138,8 +148,10 @@ def __init__(self): Top((0,-2)) LeftSide((-2,0)) RightSide((1137,0)) - Start((12,300)) + #Start((12,300)) Finish((950,300)) + Text((900,30)) + FinishText((970,320)) def step(self): self.player1.step() @@ -147,9 +159,9 @@ def step(self): self.player1.destroy() print("GAME OVER :(((") - if self.player1.collidingWithSprites(Start): - self.player1.y = 290 - self.player1.deltavy = -0.01 + #if self.player1.collidingWithSprites(Start): + #self.player1.y = 290 + #self.player1.deltavy = -0.01 if self.player1.collidingWithSprites(Finish): self.player1.y = 290 From 5b54e1eae82ab97149c6896a708e1fe5ee02d9ab Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Wed, 29 May 2019 13:54:17 -0400 Subject: [PATCH 15/26] Updated from Brython Server: 5/29/2019 1:54:19 PM --- final.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/final.py b/final.py index 85c3f993..1c7d58dc 100644 --- a/final.py +++ b/final.py @@ -106,12 +106,12 @@ def __init__(self,position): super().__init__(Finish.square,position) class Text(Sprite): - text = ("Flappy Bird XTREME", style = "bold 40pt Arial", width=250, fill=yellow) + text = TextAsset("Flappy Bird XTREME", style = "bold 40pt Arial", width=250, fill=yellow) def __init__(self,position): super().__init__(Text.text,position) class FinishText(Sprite): - text = ("Finish", style = "bold 20pt Arial", width=250, fill=black) + text = TextAsset("Finish!", style = "bold 20pt Arial", width=250, fill=black) def __init__(self,position): super().__init__(FinishText.text,position) @@ -151,7 +151,7 @@ def __init__(self): #Start((12,300)) Finish((950,300)) Text((900,30)) - FinishText((970,320)) + FinishText((975,310)) def step(self): self.player1.step() From ebbd60f5fb85f17aa5d0d9eedcdd7879910b9088 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Wed, 29 May 2019 13:55:24 -0400 Subject: [PATCH 16/26] Updated from Brython Server: 5/29/2019 1:55:26 PM --- final.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/final.py b/final.py index 1c7d58dc..22c1e2ef 100644 --- a/final.py +++ b/final.py @@ -12,6 +12,8 @@ grey = Color(0xC0C0C0, 1.0) yellow = Color(0xffff00, 1.0) +restrict=True + class Bird(Sprite): side = LineStyle(1,black) poly = RectangleAsset(10,10, side, yellow) @@ -49,19 +51,21 @@ def leftstop(self, event): self.vx += 0 def step(self): + global restrict self.y += self.vy self.x += self.vx self.vy += self.deltavy - if self.y >= 613: - self.y = 613 + while restrict=False: + if self.y >= 613: + self.y = 613 self.deltavy = -0.05 - elif self.y <=8: - self.y = 8 - self.deltavy = 0.05 - if self.x <= 10: - self.x = 10 - elif self.x >= 1125: - self.x = 1125 + elif self.y <=8: + self.y = 8 + self.deltavy = 0.05 + if self.x <= 10: + self.x = 10 + elif self.x >= 1125: + self.x = 1125 class Block(Sprite): side = LineStyle(1,black) @@ -156,7 +160,7 @@ def __init__(self): def step(self): self.player1.step() if self.player1.collidingWithSprites(Block): - self.player1.destroy() + print("GAME OVER :(((") #if self.player1.collidingWithSprites(Start): From 14bdc9631faadd680ce34c292d1644338f1024eb Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Wed, 29 May 2019 13:58:34 -0400 Subject: [PATCH 17/26] Updated from Brython Server: 5/29/2019 1:58:36 PM --- final.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/final.py b/final.py index 22c1e2ef..74a872d9 100644 --- a/final.py +++ b/final.py @@ -55,10 +55,10 @@ def step(self): self.y += self.vy self.x += self.vx self.vy += self.deltavy - while restrict=False: + while restrict==False: if self.y >= 613: self.y = 613 - self.deltavy = -0.05 + self.deltavy = -0.05 elif self.y <=8: self.y = 8 self.deltavy = 0.05 @@ -158,9 +158,11 @@ def __init__(self): FinishText((975,310)) def step(self): + global restrict self.player1.step() if self.player1.collidingWithSprites(Block): - + restrict=False + self.player1.x=100000 print("GAME OVER :(((") #if self.player1.collidingWithSprites(Start): From 7d1acbf6d5d56ba54ca640c2d2bae01a78dbb6cc Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Wed, 29 May 2019 14:01:33 -0400 Subject: [PATCH 18/26] Updated from Brython Server: 5/29/2019 2:01:34 PM --- final.py | 1 + 1 file changed, 1 insertion(+) diff --git a/final.py b/final.py index 74a872d9..e7f22abf 100644 --- a/final.py +++ b/final.py @@ -66,6 +66,7 @@ def step(self): self.x = 10 elif self.x >= 1125: self.x = 1125 + class Block(Sprite): side = LineStyle(1,black) From e6964762339faade8f1b213a90df606a41f8fbb7 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Wed, 29 May 2019 14:01:51 -0400 Subject: [PATCH 19/26] Updated from Brython Server: 5/29/2019 2:01:53 PM --- final.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/final.py b/final.py index e7f22abf..572c80ae 100644 --- a/final.py +++ b/final.py @@ -66,7 +66,7 @@ def step(self): self.x = 10 elif self.x >= 1125: self.x = 1125 - + #make key event to turn off while loop class Block(Sprite): side = LineStyle(1,black) From da47f59b67d2c5d9c17f08311b69e5e3f5b17a32 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 4 Jun 2019 20:56:03 -0400 Subject: [PATCH 20/26] Updated from Brython Server: 6/4/2019 8:56:03 PM --- final.py | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/final.py b/final.py index 572c80ae..00b45c82 100644 --- a/final.py +++ b/final.py @@ -12,8 +12,6 @@ grey = Color(0xC0C0C0, 1.0) yellow = Color(0xffff00, 1.0) -restrict=True - class Bird(Sprite): side = LineStyle(1,black) poly = RectangleAsset(10,10, side, yellow) @@ -55,18 +53,16 @@ def step(self): self.y += self.vy self.x += self.vx self.vy += self.deltavy - while restrict==False: - if self.y >= 613: - self.y = 613 - self.deltavy = -0.05 - elif self.y <=8: - self.y = 8 - self.deltavy = 0.05 - if self.x <= 10: - self.x = 10 - elif self.x >= 1125: - self.x = 1125 - #make key event to turn off while loop + if self.y >= 613: + self.y = 613 + self.deltavy = -0.05 + elif self.y <=8: + self.y = 8 + self.deltavy = 0.05 + if self.x <= 10: + self.x = 10 + elif self.x >= 1125: + self.x = 1125 class Block(Sprite): side = LineStyle(1,black) @@ -162,8 +158,7 @@ def step(self): global restrict self.player1.step() if self.player1.collidingWithSprites(Block): - restrict=False - self.player1.x=100000 + self.player1.destroy() print("GAME OVER :(((") #if self.player1.collidingWithSprites(Start): From 0cec413dabf97f7e58ec502f42a601c9ce2776c1 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 4 Jun 2019 20:58:02 -0400 Subject: [PATCH 21/26] Updated from Brython Server: 6/4/2019 8:58:03 PM --- final.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/final.py b/final.py index 00b45c82..a250468d 100644 --- a/final.py +++ b/final.py @@ -12,6 +12,9 @@ grey = Color(0xC0C0C0, 1.0) yellow = Color(0xffff00, 1.0) +print("Press Space to propel your bird upwards") +print("Use the arrow keys to move your bird left and right") + class Bird(Sprite): side = LineStyle(1,black) poly = RectangleAsset(10,10, side, yellow) From 729fdfe3f2cdfbeb8207cfe958a729bd37fb1f16 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 4 Jun 2019 21:04:58 -0400 Subject: [PATCH 22/26] Add files via upload --- images/flappybird.jpg | Bin 0 -> 85315 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/flappybird.jpg diff --git a/images/flappybird.jpg b/images/flappybird.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9fa5df90ef89fad0af45d04db9277f4329bd5f1f GIT binary patch literal 85315 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 literal 0 HcmV?d00001 From c3c566888cc5b8246fdaeaa902b640b3674ca9ec Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 4 Jun 2019 21:05:12 -0400 Subject: [PATCH 23/26] Updated from Brython Server: 6/4/2019 9:05:13 PM --- final.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/final.py b/final.py index a250468d..f4b33ded 100644 --- a/final.py +++ b/final.py @@ -17,7 +17,7 @@ class Bird(Sprite): side = LineStyle(1,black) - poly = RectangleAsset(10,10, side, yellow) + poly = ImageAsset("images/explosion1.png", Frame(0,0,128,128), 10) def __init__(self,position): super().__init__(Bird.poly,position) self.vx = 0 From 34c9eacd81ee7f9029400f66074e0ad11b78bab5 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 4 Jun 2019 21:10:37 -0400 Subject: [PATCH 24/26] Updated from Brython Server: 6/4/2019 9:10:38 PM --- final.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/final.py b/final.py index f4b33ded..da98e308 100644 --- a/final.py +++ b/final.py @@ -17,7 +17,7 @@ class Bird(Sprite): side = LineStyle(1,black) - poly = ImageAsset("images/explosion1.png", Frame(0,0,128,128), 10) + poly = RectangleAsset(10,10,side,yellow) def __init__(self,position): super().__init__(Bird.poly,position) self.vx = 0 From 7ede09992ed49ac90a5b2412a1dd0393aab10397 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 4 Jun 2019 21:18:07 -0400 Subject: [PATCH 25/26] Updated from Brython Server: 6/4/2019 9:18:08 PM --- final.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/final.py b/final.py index da98e308..8712e653 100644 --- a/final.py +++ b/final.py @@ -56,8 +56,8 @@ def step(self): self.y += self.vy self.x += self.vx self.vy += self.deltavy - if self.y >= 613: - self.y = 613 + if self.y >= 573: + self.y = 573 self.deltavy = -0.05 elif self.y <=8: self.y = 8 @@ -148,7 +148,7 @@ def __init__(self): for x in range(6,30): Block((850,(x*30))) - Bottom((0,625)) + Bottom((0,585)) Top((0,-2)) LeftSide((-2,0)) RightSide((1137,0)) From 22db6e7ceabd0c1bf23822cc1573723bd395d812 Mon Sep 17 00:00:00 2001 From: kyDoleuc04 <46973452+kyDoleuc04@users.noreply.github.com> Date: Tue, 4 Jun 2019 21:34:01 -0400 Subject: [PATCH 26/26] Updated from Brython Server: 6/4/2019 9:34:01 PM --- final.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/final.py b/final.py index 8712e653..da98e308 100644 --- a/final.py +++ b/final.py @@ -56,8 +56,8 @@ def step(self): self.y += self.vy self.x += self.vx self.vy += self.deltavy - if self.y >= 573: - self.y = 573 + if self.y >= 613: + self.y = 613 self.deltavy = -0.05 elif self.y <=8: self.y = 8 @@ -148,7 +148,7 @@ def __init__(self): for x in range(6,30): Block((850,(x*30))) - Bottom((0,585)) + Bottom((0,625)) Top((0,-2)) LeftSide((-2,0)) RightSide((1137,0))