From ddc915a93f5b73088c6e9b36b9c835d3f9a3d693 Mon Sep 17 00:00:00 2001 From: ShelkovkinaM Date: Tue, 13 Feb 2024 16:07:04 +0300 Subject: [PATCH 1/2] Update bombs and add lives --- assets/DataBase.db | Bin 45056 -> 45056 bytes danmaku/database/construct.py | 2 +- danmaku/database/database.py | 6 +++--- danmaku/database/models.py | 1 + danmaku/game.py | 11 +++++++---- danmaku/pause.py | 2 +- danmaku/player.py | 21 ++++++++++++--------- danmaku/settings.py | 5 +++-- 8 files changed, 28 insertions(+), 20 deletions(-) diff --git a/assets/DataBase.db b/assets/DataBase.db index f510f7c46c30249703b9d2352b1f767ffc1442f3..3ec7a89f9693cdcd7d43c7c34f6734534cc22683 100644 GIT binary patch delta 1870 zcmb7FO=w(I6n;N5^WICGytL4UNwu9xTo^lZd;fo^r3I}ZZu~1XQY+05Mlp%BR@y~v zCMDa_@<1&viXwC)v^uLoR~1BDi0DET!7hp}q=+CYNL#;~nMqPzc^~uM<=*?9^PO|P zb7$#Bv~(jnH@Z1F69mB^e*JO#e3Or1l`LGXCVPW{@|9rl){rV+$uA@y=49aM?5FCk zWPfMV@J!sf8Gjk3r<0LJBV3s--WobpER=pL9!f^CtR7TG#t*eC#aMP|aQQ?#Oh(4X z!xdB9SKVDql=c>%CV!TyQSe#uVD^Ha%oWSoOgz^v6-(KxQ9JJZlD!*tZVhe?*iX%f?Ls8rv+66;Vu`)Op z&$NT$S~~N|aJtV9eb;}|mH+c}_C2*f-T%n_Nl>dzM&awP9XUCBwEJd45aZT|mCd?j z^qw^-qjv^^AlXx62aBb{+nP)fO*NI$32P~%0vJIU<5X&)l~F>e$Ah5qM;~A;(b_3W zsj^CO??V&G4Aq=cE}fEM6>zx=7;SOth-1bWPOaibs%E{ViJ{I)uDOz22ra#fxxNcY zK|q3yVp0NUn{`EmVb)MfE$m6fJ)qGCC`-6-jvHktH{1ZAiQvp=E19IsTFU?^f8Pga zO&r$-q_OQN10_qG=8h^Qnf5-shjLM4lStDj!C_)K9B5{xHQZ@%LY|Pf^`SlF$sS}U zN7&k0iM#gtX;q1cf{K=^!$6lGP zuTHzVhU0r6CU~1yff>jz1^Hk3ulddVhy0uTi~M?iHNTQy$}i++^E3I0d_JGfC-Y}; zGzdCd>y3ODs?se`i-p-@&_s*Tu*>D(k(sMI;){2v$(b&@1QXIcHR(kH} M@!8IM7iWk60n5jkSpWb4 delta 1703 zcma)+ONCcPoUPdf9eXm&V<&4uvKIB|ryDXPqVYf?;0pv|c4syj6K(!<;iSUQIx#+_1drJX6TfdMF;FcK~=`|OG^HB;XD0OZo_Eh&zQH& zH^=`n>)}MPqlLd|KLBtv4E1+`wzhIC{LEMZYG;vu1Uu@%ll&RupxRyLf10nU$Bpoo z_C8R%OPs)Ncsu_HFi$AomYPlQcAj4}W+$`L*~npSiW%wj;@DeTpEOFf8dz)a*7$|| zR>7>78V&HyA-ImmNT zfDkEB;pg_$Dvq?Ij3Ju77Fpz{>Nf>Y-NNiR0!HpY1k5DysU+$)jbczANxh^IOeOKU z#b)`C%%w+DRjMyk?Ofd>Zn6DE?e6$@gM1&h*)+1v- zHYV=BjWfH_OhIf+hR#?TXEybj*qD$}W9{c2Lvd`3{ZV7>LeH3z*jS>&##&calQ^O1 z6fi@<01!CBMteM|qof*`?IPC;(&me5Q16QG-t@$_yrEduc2zxgcy4v!c>EL<>e?wC z1olkb7Kep1zks`9<>waLpHune=gSxehz)=No2fIGAVH^%v1rk}#ai*AhV3IN4vbNX z+!Vvujksy4KC!>DGpb`-lp!V}12&~+YuHoVr-9^NK>S2hy(43Rs~j8<IV{;jFrnQzI!4DYG$PF^oXw9 z!^BYEEDe>beCg#X!Xk?D@&DmhE%Kb$o$@JPxVrrdO2l^hK4Lb-;^ulTp;#WWVwajN z02Yoe99f;8TYj}&kB0K*2@!cxLH|#JIL;rmAQly2TY>lB9r!!E4u68*!*AdQya+#m zAHetE8Mp$EK+p~+>a&oy7kBPcfC|j9E2e4c@$k!np3{|F&NPi==8CCjqZvaNGr%;d zk?9SzWMHZZe9h2-gu@4me?wK@9Ns@=7J(Ax&UT=QG(%}L9&VKQ$@5d0r{@kYhaa9_ GDEvdWH diff --git a/danmaku/database/construct.py b/danmaku/database/construct.py index 54eafea..8e2b44c 100644 --- a/danmaku/database/construct.py +++ b/danmaku/database/construct.py @@ -128,7 +128,7 @@ texture_size_height=50, speed=200, shoot_v=250, - hp=1300, + hp=500, dm=10, endurance=1, hitbox_radius=10, diff --git a/danmaku/database/database.py b/danmaku/database/database.py index e0aeb62..5cd6e59 100644 --- a/danmaku/database/database.py +++ b/danmaku/database/database.py @@ -88,7 +88,7 @@ def get_saved_objects() -> list: def get_saved_game() -> dict: """Get saved game from database - Returns dict: {"score", "level", "power"} + Returns dict: {"score", "level", "power", "bombs"} """ game = tuple(iter(SavedGame.select().dicts()))[-1] return game @@ -122,9 +122,9 @@ def set_saved_objects(name: str, objects: Iterable) -> None: n.save() -def set_saved_game(cur_level: int, score: int, power: int) -> None: +def set_saved_game(cur_level: int, score: int, power: int, bombs: int) -> None: """Set saved game to database""" - n = SavedGame.create(score=score, level=cur_level, power=power) + n = SavedGame.create(score=score, level=cur_level, power=power, bombs=bombs) n.save() diff --git a/danmaku/database/models.py b/danmaku/database/models.py index f491b49..9fbe39f 100644 --- a/danmaku/database/models.py +++ b/danmaku/database/models.py @@ -71,6 +71,7 @@ class SavedGame(BaseModel): level = IntegerField() score = IntegerField() power = IntegerField() + bombs = IntegerField() class Settings(BaseModel): diff --git a/danmaku/game.py b/danmaku/game.py index 1003d32..a58969e 100644 --- a/danmaku/game.py +++ b/danmaku/game.py @@ -111,7 +111,8 @@ def load(self): if self.new_game: self.current_level: int = 0 self.enemies: list[Enemy] = list(LEVELS[self.current_level].enemies) - self.player = Player((self.width // 2, self.height - 50), "player") + self.player = Player((self.width // 2, self.height - 50), "player", + bombs=get_settings()["bombs"]["value"], lives=get_settings()["lives"]["value"]) else: self.enemies: list[Enemy] = [] @@ -144,6 +145,7 @@ def load(self): self.current_level: int = saved_game["level"] self.player.score = saved_game["score"] self.player.power = saved_game["power"] + self.player.bombs = saved_game["bombs"] delete_saved_objects() self.player.set_bounds(0, 0, self.width, self.height) @@ -162,7 +164,7 @@ def update_pause(self): set_saved_objects("enemy", self.enemies) set_saved_objects("bullet", self.bullets) set_saved_objects("player", [self.player]) - set_saved_game(self.current_level, self.player.score, self.player.power) + set_saved_game(self.current_level, self.player.score, self.player.power, self.player.bombs) self.stop() def update_game(self): @@ -244,7 +246,7 @@ def update_game(self): self.next_level() if self.player.health <= 0: - set_saved_game(self.current_level, self.player.score, self.player.power) + set_saved_game(self.current_level, self.player.score, self.player.power, self.player.bombs) self.exit_status = "lose" death_sfx = pygame.mixer.Sound(resource_path("sounds/death.wav")) death_sfx.set_volume(self.settings["sfx_volume"]["value"] / 100) @@ -261,7 +263,7 @@ def next_level(self) -> None: self.current_level += 1 self.enemies = list(LEVELS[self.current_level].enemies) else: - set_saved_game(self.current_level, self.player.score, self.player.power) + set_saved_game(self.current_level, self.player.score, self.player.power, self.player.bombs) self.exit_status = "win" self.stop() @@ -294,6 +296,7 @@ def draw(self): self.graphics.text(f"HP: {self.player.health}", (0, 0)) self.graphics.text(f"Score: {self.player.score}", (150, 0)) + # self.graphics.text(f"Bombs: {self.player.bombs}", (100, 0)) if self.paused: self.pause_object.draw(self.graphics) diff --git a/danmaku/pause.py b/danmaku/pause.py index 8cf4bc4..db56b37 100644 --- a/danmaku/pause.py +++ b/danmaku/pause.py @@ -32,7 +32,7 @@ def update(self, pressed_keys): def draw(self, graphics: vgame.graphics.Graphics): """Draw pause menu.""" - graphics.rectangle((0, 0), (self.width, self.height), (0, 0, 0, 180), alpha=1) + graphics.rectangle((0, 0), (self.width, self.height), (0, 0, 180)) #, alpha=1) graphics.text("Danmaku", (0, 10), (255, 255, 180)) for i, button in enumerate(self.buttons): diff --git a/danmaku/player.py b/danmaku/player.py index 1f0398a..9a3f0a8 100644 --- a/danmaku/player.py +++ b/danmaku/player.py @@ -13,11 +13,11 @@ class Player(Shooter, Animated): """Player object.""" def __init__( - self, xy: tuple[int | float, int | float], object_type: str, updated_hp=0 + self, xy: tuple[int | float, int | float], object_type: str, bombs=0, lives=1, updated_hp=0 ) -> None: args = get_player_type(object_type) - health = updated_hp or args["hp"] + health = updated_hp or args["hp"] * lives super().__init__( xy, @@ -63,6 +63,7 @@ def __init__( self.my_type = object_type self.score: int = 0 self.power: int = 1 + self.bombs = bombs self.hitbox_radius = args["hitbox_radius"] self.slow = False @@ -108,13 +109,15 @@ def shoot(self) -> list[Bullet]: def bomb(self) -> list[Bullet]: """Spawn bomb, AKA super-bullet""" res: list[Bullet] = [] - if self.can_shoot(): - bullet = Bullet( - (self.x, self.y), - self.damage + self.power + 50, - "player bomb", - ) - res.append(bullet) + if self.bombs != 0: + if self.can_shoot(): + bullet = Bullet( + (self.x, self.y), + self.damage + self.power + 50, + "player bomb", + ) + res.append(bullet) + self.bombs -= 1 return res def set_bounds( diff --git a/danmaku/settings.py b/danmaku/settings.py index 760935b..1246b17 100644 --- a/danmaku/settings.py +++ b/danmaku/settings.py @@ -15,9 +15,10 @@ def load(self): settings_dict = get_settings() - self.buttons: list[object] = [ + self.buttons: list[object] = [] + """= [ SettingsValue("music_volume", "Music Volume", (0, 25, 50, 75, 100), 50), - ] + ]""" for key, value in settings_dict.items(): self.buttons.append( From e1986eed68180ed1b19bcbed24078fc9060408c7 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 13 Feb 2024 13:08:25 +0000 Subject: [PATCH 2/2] Updated pylint badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f2cc5b..0973155 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # 弾幕 (Danmaku) -![pylint](https://img.shields.io/badge/PyLint-9.64-yellow?logo=python&logoColor=white) +![pylint](https://img.shields.io/badge/PyLint-9.57-yellow?logo=python&logoColor=white) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) ## Goal