📃個人主頁:互聯(lián)網(wǎng)阿星🧐
💬格言:選擇有時候會大于努力,但你不努力就沒得選
🔥簡介:大家好我是互聯(lián)網(wǎng)阿星,和我一起合理使用Python,努力做時間的主人
🏆如果覺得博主的文章還不錯,請點贊👍+收藏??+留言📝支持一下博主🤞
行業(yè)資料:PPT模板、簡歷模板、行業(yè)經(jīng)典書籍PDF
面試題庫:歷年經(jīng)典、熱乎的大廠面試真題,持續(xù)更新…
學(xué)習(xí)資料:Python、爬蟲、數(shù)據(jù)分析、算法等學(xué)習(xí)視頻和文檔
Tips:以上資料+全套游戲源碼阿星已備好>>戳我,空投直達(dá)🪂
Python小游戲·目錄
- 前言
- 10套Python小游戲
- 小游戲1:飛機大戰(zhàn)
- 小游戲2:吃金幣游戲
- 小游戲3:24點小游戲
- 小游戲4:打乒乓(單/雙人)
- 小游戲5:小恐龍?zhí)惶?/li>
- 小游戲6:控制平衡木
- 小游戲7:超級炸彈人
- 小游戲8:保衛(wèi)森林塔防
- 小游戲9:吃飯睡覺打豆豆
- 小游戲10:水果忍者切水果
- 小結(jié)
前言
昨天,阿星給大家?guī)?8個Python小游戲,有老鐵覺得游戲難度有點大了吖。今天,阿星就整上10套輕松休閑的Python小游戲,這波必須得??收藏起來😎
小游戲的全套源碼戳我,空投直達(dá)🪂拿來就能玩😆爽歪歪
話不多說,今日份的Python小游戲,ta來了
10套Python小游戲
小游戲1:飛機大戰(zhàn)
玩法:支持單雙人模式,控制飛機躲避障礙物
源碼分享
import sys
import cfg
import pygame
from modules
import *'''游戲界面'''
def GamingInterface(num_player
, screen
):pygame
.mixer
.music
.load
(cfg
.SOUNDPATHS
['Cool Space Music'])pygame
.mixer
.music
.set_volume
(0.4)pygame
.mixer
.music
.play
(-1)explosion_sound
= pygame
.mixer
.Sound
(cfg
.SOUNDPATHS
['boom'])fire_sound
= pygame
.mixer
.Sound
(cfg
.SOUNDPATHS
['shot'])font
= pygame
.font
.Font
(cfg
.FONTPATH
, 20)bg_imgs
= [cfg
.IMAGEPATHS
['bg_big'], cfg
.IMAGEPATHS
['seamless_space'], cfg
.IMAGEPATHS
['space3']]bg_move_dis
= 0bg_1
= pygame
.image
.load
(bg_imgs
[0]).convert
()bg_2
= pygame
.image
.load
(bg_imgs
[1]).convert
()bg_3
= pygame
.image
.load
(bg_imgs
[2]).convert
()player_group
= pygame
.sprite
.Group
()bullet_group
= pygame
.sprite
.Group
()asteroid_group
= pygame
.sprite
.Group
()asteroid_ticks
= 90for i
in range(num_player
):player_group
.add
(Ship
(i
+1, cfg
))clock
= pygame
.time
.Clock
()score_1
, score_2
= 0, 0while True:for event
in pygame
.event
.get
():if event
.type == pygame
.QUIT
:pygame
.quit
()sys
.exit
()pressed_keys
= pygame
.key
.get_pressed
()for idx
, player
in enumerate(player_group
):direction
= Noneif idx
== 0:if pressed_keys
[pygame
.K_UP
]:direction
= 'up'elif pressed_keys
[pygame
.K_DOWN
]:direction
= 'down'elif pressed_keys
[pygame
.K_LEFT
]:direction
= 'left'elif pressed_keys
[pygame
.K_RIGHT
]:direction
= 'right'if direction
:player
.move
(direction
)if pressed_keys
[pygame
.K_j
]:if player
.cooling_time
== 0:fire_sound
.play
()bullet_group
.add
(player
.shot
())player
.cooling_time
= 20elif idx
== 1:if pressed_keys
[pygame
.K_w
]:direction
= 'up'elif pressed_keys
[pygame
.K_s
]:direction
= 'down'elif pressed_keys
[pygame
.K_a
]:direction
= 'left'elif pressed_keys
[pygame
.K_d
]:direction
= 'right'if direction
:player
.move
(direction
)if pressed_keys
[pygame
.K_SPACE
]:if player
.cooling_time
== 0:fire_sound
.play
()bullet_group
.add
(player
.shot
())player
.cooling_time
= 20if player
.cooling_time
> 0:player
.cooling_time
-= 1if (score_1
+ score_2
) < 500:background
= bg_1
elif (score_1
+ score_2
) < 1500:background
= bg_2
else:background
= bg_3screen
.blit
(background
, (0, -background
.get_rect
().height
+ bg_move_dis
))screen
.blit
(background
, (0, bg_move_dis
))bg_move_dis
= (bg_move_dis
+ 2) % background
.get_rect
().height
if asteroid_ticks
== 0:asteroid_ticks
= 90asteroid_group
.add
(Asteroid
(cfg
))else:asteroid_ticks
-= 1for player
in player_group
:if pygame
.sprite
.spritecollide
(player
, asteroid_group
, True, None):player
.explode_step
= 1explosion_sound
.play
()elif player
.explode_step
> 0:if player
.explode_step
> 3:player_group
.remove
(player
)if len(player_group
) == 0:returnelse:player
.explode
(screen
)else:player
.draw
(screen
)for bullet
in bullet_group
:bullet
.move
()if pygame
.sprite
.spritecollide
(bullet
, asteroid_group
, True, None):bullet_group
.remove
(bullet
)if bullet
.player_idx
== 1:score_1
+= 1else:score_2
+= 1else:bullet
.draw
(screen
)for asteroid
in asteroid_group
:asteroid
.move
()asteroid
.rotate
()asteroid
.draw
(screen
)score_1_text
= '玩家一得分: %s' % score_1score_2_text
= '玩家二得分: %s' % score_2text_1
= font
.render
(score_1_text
, True, (0, 0, 255))text_2
= font
.render
(score_2_text
, True, (255, 0, 0))screen
.blit
(text_1
, (2, 5))screen
.blit
(text_2
, (2, 35))pygame
.display
.update
()clock
.tick
(60)'''主函數(shù)'''
def main():pygame
.init
()pygame
.font
.init
()pygame
.mixer
.init
()screen
= pygame
.display
.set_mode
(cfg
.SCREENSIZE
)pygame
.display
.set_caption
('飛機大戰(zhàn) —— 九歌')num_player
= StartInterface
(screen
, cfg
)if num_player
== 1:while True:GamingInterface
(num_player
=1, screen
=screen
)EndInterface
(screen
, cfg
)else:while True:GamingInterface
(num_player
=2, screen
=screen
)EndInterface
(screen
, cfg
)'''run'''
if __name__
== '__main__':main
()
還有游戲圖片素材等,全套游戲源碼已備好戳我,空投直達(dá)🪂
小游戲2:吃金幣游戲
玩法:在倒計時結(jié)束前,控制底部小人物吃到金幣,和阿星的比一下,看你能玩到多少分😎
源碼分享
import os
import cfg
import sys
import pygame
import random
from modules
import *'''游戲初始化'''
def initGame():pygame
.init
()screen
= pygame
.display
.set_mode
(cfg
.SCREENSIZE
)pygame
.display
.set_caption
('catch coins —— 九歌')game_images
= {}for key
, value
in cfg
.IMAGE_PATHS
.items
():if isinstance(value
, list):images
= []for item
in value
: images
.append
(pygame
.image
.load
(item
))game_images
[key
] = images
else:game_images
[key
] = pygame
.image
.load
(value
)game_sounds
= {}for key
, value
in cfg
.AUDIO_PATHS
.items
():if key
== 'bgm': continuegame_sounds
[key
] = pygame
.mixer
.Sound
(value
)return screen
, game_images
, game_sounds
'''主函數(shù)'''
def main():screen
, game_images
, game_sounds
= initGame
()pygame
.mixer
.music
.load
(cfg
.AUDIO_PATHS
['bgm'])pygame
.mixer
.music
.play
(-1, 0.0)font
= pygame
.font
.Font
(cfg
.FONT_PATH
, 40)hero
= Hero
(game_images
['hero'], position
=(375, 520))food_sprites_group
= pygame
.sprite
.Group
()generate_food_freq
= random
.randint
(10, 20)generate_food_count
= 0score
= 0highest_score
= 0 if not os
.path
.exists
(cfg
.HIGHEST_SCORE_RECORD_FILEPATH
) else int(open(cfg
.HIGHEST_SCORE_RECORD_FILEPATH
).read
())clock
= pygame
.time
.Clock
()while True:screen
.fill
(0)screen
.blit
(game_images
['background'], (0, 0))countdown_text
= 'Count down: ' + str((90000 - pygame
.time
.get_ticks
()) // 60000) + ":" + str((90000 - pygame
.time
.get_ticks
()) // 1000 % 60).zfill
(2)countdown_text
= font
.render
(countdown_text
, True, (0, 0, 0))countdown_rect
= countdown_text
.get_rect
()countdown_rect
.topright
= [cfg
.SCREENSIZE
[0]-30, 5]screen
.blit
(countdown_text
, countdown_rect
)for event
in pygame
.event
.get
():if event
.type == pygame
.QUIT
:pygame
.quit
()sys
.exit
()key_pressed
= pygame
.key
.get_pressed
()if key_pressed
[pygame
.K_a
] or key_pressed
[pygame
.K_LEFT
]:hero
.move
(cfg
.SCREENSIZE
, 'left')if key_pressed
[pygame
.K_d
] or key_pressed
[pygame
.K_RIGHT
]:hero
.move
(cfg
.SCREENSIZE
, 'right')generate_food_count
+= 1if generate_food_count
> generate_food_freq
:generate_food_freq
= random
.randint
(10, 20)generate_food_count
= 0food
= Food
(game_images
, random
.choice
(['gold',] * 10 + ['apple']), cfg
.SCREENSIZE
)food_sprites_group
.add
(food
)for food
in food_sprites_group
:if food
.update
(): food_sprites_group
.remove
(food
)for food
in food_sprites_group
:if pygame
.sprite
.collide_mask
(food
, hero
):game_sounds
['get'].play
()food_sprites_group
.remove
(food
)score
+= food
.score
if score
> highest_score
: highest_score
= scorehero
.draw
(screen
)food_sprites_group
.draw
(screen
)score_text
= f'Score: {score}, Highest: {highest_score}'score_text
= font
.render
(score_text
, True, (0, 0, 0))score_rect
= score_text
.get_rect
()score_rect
.topleft
= [5, 5]screen
.blit
(score_text
, score_rect
)if pygame
.time
.get_ticks
() >= 90000:breakpygame
.display
.flip
()clock
.tick
(cfg
.FPS
)fp
= open(cfg
.HIGHEST_SCORE_RECORD_FILEPATH
, 'w')fp
.write
(str(highest_score
))fp
.close
()return showEndGameInterface
(screen
, cfg
, score
, highest_score
)'''run'''
if __name__
== '__main__':while main
():pass
還有游戲圖片素材等,全套游戲源碼已備好戳我,空投直達(dá)🪂
小游戲3:24點小游戲
玩法:將給出的數(shù)字通過加減乘除湊成24點
源碼分享
import os
import sys
import pygame
from cfg
import *
from modules
import *
from fractions
import Fraction
'''檢查控件是否被點擊'''
def checkClicked(group
, mouse_pos
, group_type
='NUMBER'):selected
= []if group_type
== GROUPTYPES
[0] or group_type
== GROUPTYPES
[1]:max_selected
= 2 if group_type
== GROUPTYPES
[0] else 1num_selected
= 0for each
in group
:num_selected
+= int(each
.is_selected
)for each
in group
:if each
.rect
.collidepoint
(mouse_pos
):if each
.is_selected
:each
.is_selected
= not each
.is_selectednum_selected
-= 1each
.select_order
= Noneelse:if num_selected
< max_selected
:each
.is_selected
= not each
.is_selectednum_selected
+= 1each
.select_order
= str(num_selected
)if each
.is_selected
:selected
.append
(each
.attribute
)elif group_type
== GROUPTYPES
[2]:for each
in group
:if each
.rect
.collidepoint
(mouse_pos
):each
.is_selected
= Trueselected
.append
(each
.attribute
)else:raise ValueError
('checkClicked.group_type unsupport %s, expect %s, %s or %s...' % (group_type
, *GROUPTYPES
))return selected
'''獲取數(shù)字精靈組'''
def getNumberSpritesGroup(numbers
):number_sprites_group
= pygame
.sprite
.Group
()for idx
, number
in enumerate(numbers
):args
= (*NUMBERCARD_POSITIONS
[idx
], str(number
), NUMBERFONT
, NUMBERFONT_COLORS
, NUMBERCARD_COLORS
, str(number
))number_sprites_group
.add
(Card
(*args
))return number_sprites_group
'''獲取運算符精靈組'''
def getOperatorSpritesGroup(operators
):operator_sprites_group
= pygame
.sprite
.Group
()for idx
, operator
in enumerate(operators
):args
= (*OPERATORCARD_POSITIONS
[idx
], str(operator
), OPERATORFONT
, OPREATORFONT_COLORS
, OPERATORCARD_COLORS
, str(operator
))operator_sprites_group
.add
(Card
(*args
))return operator_sprites_group
'''獲取按鈕精靈組'''
def getButtonSpritesGroup(buttons
):button_sprites_group
= pygame
.sprite
.Group
()for idx
, button
in enumerate(buttons
):args
= (*BUTTONCARD_POSITIONS
[idx
], str(button
), BUTTONFONT
, BUTTONFONT_COLORS
, BUTTONCARD_COLORS
, str(button
))button_sprites_group
.add
(Button
(*args
))return button_sprites_group
'''計算'''
def calculate(number1
, number2
, operator
):operator_map
= {'+': '+', '-': '-', '×': '*', '÷': '/'}try:result
= str(eval(number1
+operator_map
[operator
]+number2
))return result
if '.' not in result
else str(Fraction
(number1
+operator_map
[operator
]+number2
))except:return None'''在屏幕上顯示信息'''
def showInfo(text
, screen
):rect
= pygame
.Rect
(200, 180, 400, 200)pygame
.draw
.rect
(screen
, PAPAYAWHIP
, rect
)font
= pygame
.font
.Font
(FONTPATH
, 40)text_render
= font
.render
(text
, True, BLACK
)font_size
= font
.size
(text
)screen
.blit
(text_render
, (rect
.x
+(rect
.width
-font_size
[0])/2, rect
.y
+(rect
.height
-font_size
[1])/2))'''主函數(shù)'''
def main():pygame
.init
()pygame
.mixer
.init
()screen
= pygame
.display
.set_mode
(SCREENSIZE
)pygame
.display
.set_caption
('24 point —— 九歌')win_sound
= pygame
.mixer
.Sound
(AUDIOWINPATH
)lose_sound
= pygame
.mixer
.Sound
(AUDIOLOSEPATH
)warn_sound
= pygame
.mixer
.Sound
(AUDIOWARNPATH
)pygame
.mixer
.music
.load
(BGMPATH
)pygame
.mixer
.music
.play
(-1, 0.0)game24_gen
= game24Generator
()game24_gen
.generate
()number_sprites_group
= getNumberSpritesGroup
(game24_gen
.numbers_now
)operator_sprites_group
= getOperatorSpritesGroup
(OPREATORS
)button_sprites_group
= getButtonSpritesGroup
(BUTTONS
)clock
= pygame
.time
.Clock
()selected_numbers
= []selected_operators
= []selected_buttons
= []is_win
= Falsewhile True:for event
in pygame
.event
.get
():if event
.type == pygame
.QUIT
:pygame
.quit
()sys
.exit
(-1)elif event
.type == pygame
.MOUSEBUTTONUP
:mouse_pos
= pygame
.mouse
.get_pos
()selected_numbers
= checkClicked
(number_sprites_group
, mouse_pos
, 'NUMBER')selected_operators
= checkClicked
(operator_sprites_group
, mouse_pos
, 'OPREATOR')selected_buttons
= checkClicked
(button_sprites_group
, mouse_pos
, 'BUTTON')screen
.fill
(AZURE
)if len(selected_numbers
) == 2 and len(selected_operators
) == 1:noselected_numbers
= []for each
in number_sprites_group
:if each
.is_selected
:if each
.select_order
== '1':selected_number1
= each
.attribute
elif each
.select_order
== '2':selected_number2
= each
.attribute
else:raise ValueError
('Unknow select_order %s, expect 1 or 2...' % each
.select_order
)else:noselected_numbers
.append
(each
.attribute
)each
.is_selected
= Falsefor each
in operator_sprites_group
:each
.is_selected
= Falseresult
= calculate
(selected_number1
, selected_number2
, *selected_operators
)if result
is not None:game24_gen
.numbers_now
= noselected_numbers
+ [result
]is_win
= game24_gen
.check
()if is_win
:win_sound
.play
()if not is_win
and len(game24_gen
.numbers_now
) == 1:lose_sound
.play
()else:warn_sound
.play
()selected_numbers
= []selected_operators
= []number_sprites_group
= getNumberSpritesGroup
(game24_gen
.numbers_now
)for each
in number_sprites_group
:each
.draw
(screen
, pygame
.mouse
.get_pos
())for each
in operator_sprites_group
:each
.draw
(screen
, pygame
.mouse
.get_pos
())for each
in button_sprites_group
:if selected_buttons
and selected_buttons
[0] in ['RESET', 'NEXT']:is_win
= Falseif selected_buttons
and each
.attribute
== selected_buttons
[0]:each
.is_selected
= Falsenumber_sprites_group
= each
.do
(game24_gen
, getNumberSpritesGroup
, number_sprites_group
, button_sprites_group
)selected_buttons
= []each
.draw
(screen
, pygame
.mouse
.get_pos
())if is_win
:showInfo
('Congratulations', screen
)if not is_win
and len(game24_gen
.numbers_now
) == 1:showInfo
('Game Over', screen
)pygame
.display
.flip
()clock
.tick
(30)'''run'''
if __name__
== '__main__':main
()
還有游戲圖片素材等,全套游戲源碼已備好戳我,空投直達(dá)🪂
小游戲4:打乒乓(單/雙人)
玩法:控制滑塊接住乒乓球
源碼分享
import sys
import cfg
import pygame
from modules
import *'''定義按鈕'''
def Button(screen
, position
, text
, button_size
=(200, 50)):left
, top
= positionbwidth
, bheight
= button_sizepygame
.draw
.line
(screen
, (150, 150, 150), (left
, top
), (left
+bwidth
, top
), 5)pygame
.draw
.line
(screen
, (150, 150, 150), (left
, top
-2), (left
, top
+bheight
), 5)pygame
.draw
.line
(screen
, (50, 50, 50), (left
, top
+bheight
), (left
+bwidth
, top
+bheight
), 5)pygame
.draw
.line
(screen
, (50, 50, 50), (left
+bwidth
, top
+bheight
), (left
+bwidth
, top
), 5)pygame
.draw
.rect
(screen
, (100, 100, 100), (left
, top
, bwidth
, bheight
))font
= pygame
.font
.Font
(cfg
.FONTPATH
, 30)text_render
= font
.render
(text
, 1, (255, 235, 205))return screen
.blit
(text_render
, (left
+50, top
+10))'''
Function:開始界面
Input:--screen: 游戲界面
Return:--game_mode: 1(單人模式)/2(雙人模式)
'''
def startInterface(screen
):clock
= pygame
.time
.Clock
()while True:screen
.fill
((41, 36, 33))button_1
= Button
(screen
, (150, 175), '1 Player')button_2
= Button
(screen
, (150, 275), '2 Player')for event
in pygame
.event
.get
():if event
.type == pygame
.QUIT
:pygame
.quit
()sys
.exit
()if event
.type == pygame
.MOUSEBUTTONDOWN
:if button_1
.collidepoint
(pygame
.mouse
.get_pos
()):return 1elif button_2
.collidepoint
(pygame
.mouse
.get_pos
()):return 2clock
.tick
(10)pygame
.display
.update
()'''結(jié)束界面'''
def endInterface(screen
, score_left
, score_right
):clock
= pygame
.time
.Clock
()font1
= pygame
.font
.Font
(cfg
.FONTPATH
, 30)font2
= pygame
.font
.Font
(cfg
.FONTPATH
, 20)msg
= 'Player on left won!' if score_left
> score_right
else 'Player on right won!'texts
= [font1
.render
(msg
, True, cfg
.WHITE
),font2
.render
('Press ESCAPE to quit.', True, cfg
.WHITE
),font2
.render
('Press ENTER to continue or play again.', True, cfg
.WHITE
)]positions
= [[120, 200], [155, 270], [80, 300]]while True:screen
.fill
((41, 36, 33))for event
in pygame
.event
.get
():if event
.type == pygame
.QUIT
:pygame
.quit
()sys
.exit
()if event
.type == pygame
.KEYDOWN
:if event
.key
== pygame
.K_RETURN
:returnelif event
.key
== pygame
.K_ESCAPE
:sys
.exit
()pygame
.quit
()for text
, pos
in zip(texts
, positions
):screen
.blit
(text
, pos
)clock
.tick
(10)pygame
.display
.update
()'''運行游戲Demo'''
def runDemo(screen
):hit_sound
= pygame
.mixer
.Sound
(cfg
.HITSOUNDPATH
)goal_sound
= pygame
.mixer
.Sound
(cfg
.GOALSOUNDPATH
)pygame
.mixer
.music
.load
(cfg
.BGMPATH
)pygame
.mixer
.music
.play
(-1, 0.0)font
= pygame
.font
.Font
(cfg
.FONTPATH
, 50)game_mode
= startInterface
(screen
)score_left
= 0racket_left
= Racket
(cfg
.RACKETPICPATH
, 'LEFT', cfg
)score_right
= 0racket_right
= Racket
(cfg
.RACKETPICPATH
, 'RIGHT', cfg
)ball
= Ball
(cfg
.BALLPICPATH
, cfg
)clock
= pygame
.time
.Clock
()while True:for event
in pygame
.event
.get
():if event
.type == pygame
.QUIT
:pygame
.quit
()sys
.exit
(-1)screen
.fill
((41, 36, 33))pressed_keys
= pygame
.key
.get_pressed
()if pressed_keys
[pygame
.K_UP
]:racket_right
.move
('UP')elif pressed_keys
[pygame
.K_DOWN
]:racket_right
.move
('DOWN')if game_mode
== 2:if pressed_keys
[pygame
.K_w
]:racket_left
.move
('UP')elif pressed_keys
[pygame
.K_s
]:racket_left
.move
('DOWN')else:racket_left
.automove
(ball
)scores
= ball
.move
(ball
, racket_left
, racket_right
, hit_sound
, goal_sound
)score_left
+= scores
[0]score_right
+= scores
[1]pygame
.draw
.rect
(screen
, cfg
.WHITE
, (247, 0, 6, 500))ball
.draw
(screen
)racket_left
.draw
(screen
)racket_right
.draw
(screen
)screen
.blit
(font
.render
(str(score_left
), False, cfg
.WHITE
), (150, 10))screen
.blit
(font
.render
(str(score_right
), False, cfg
.WHITE
), (300, 10))if score_left
== 11 or score_right
== 11:return score_left
, score_rightclock
.tick
(100)pygame
.display
.update
()'''主函數(shù)'''
def main():pygame
.init
()pygame
.mixer
.init
()screen
= pygame
.display
.set_mode
((cfg
.WIDTH
, cfg
.HEIGHT
))pygame
.display
.set_caption
('pingpong —— 九歌')while True:score_left
, score_right
= runDemo
(screen
)endInterface
(screen
, score_left
, score_right
)'''run'''
if __name__
== '__main__':main
()
還有游戲圖片素材等,全套游戲源碼已備好戳我,空投直達(dá)🪂
小游戲5:小恐龍?zhí)惶?/h2>
玩法:控制小恐龍上下起跳躲避,速度挺快😂看你能撐多少秒
源碼分享
import cfg
import sys
import random
import pygame
from modules
import *'''main'''
def main(highest_score
):pygame
.init
()screen
= pygame
.display
.set_mode
(cfg
.SCREENSIZE
)pygame
.display
.set_caption
('九歌')sounds
= {}for key
, value
in cfg
.AUDIO_PATHS
.items
():sounds
[key
] = pygame
.mixer
.Sound
(value
)GameStartInterface
(screen
, sounds
, cfg
)score
= 0score_board
= Scoreboard
(cfg
.IMAGE_PATHS
['numbers'], position
=(534, 15), bg_color
=cfg
.BACKGROUND_COLOR
)highest_score
= highest_scorehighest_score_board
= Scoreboard
(cfg
.IMAGE_PATHS
['numbers'], position
=(435, 15), bg_color
=cfg
.BACKGROUND_COLOR
, is_highest
=True)dino
= Dinosaur
(cfg
.IMAGE_PATHS
['dino'])ground
= Ground
(cfg
.IMAGE_PATHS
['ground'], position
=(0, cfg
.SCREENSIZE
[1]))cloud_sprites_group
= pygame
.sprite
.Group
()cactus_sprites_group
= pygame
.sprite
.Group
()ptera_sprites_group
= pygame
.sprite
.Group
()add_obstacle_timer
= 0score_timer
= 0clock
= pygame
.time
.Clock
()while True:for event
in pygame
.event
.get
():if event
.type == pygame
.QUIT
:pygame
.quit
()sys
.exit
()elif event
.type == pygame
.KEYDOWN
:if event
.key
== pygame
.K_SPACE
or event
.key
== pygame
.K_UP
:dino
.jump
(sounds
)elif event
.key
== pygame
.K_DOWN
:dino
.duck
()elif event
.type == pygame
.KEYUP
and event
.key
== pygame
.K_DOWN
:dino
.unduck
()screen
.fill
(cfg
.BACKGROUND_COLOR
)if len(cloud_sprites_group
) < 5 and random
.randrange
(0, 300) == 10:cloud_sprites_group
.add
(Cloud
(cfg
.IMAGE_PATHS
['cloud'], position
=(cfg
.SCREENSIZE
[0], random
.randrange
(30, 75))))add_obstacle_timer
+= 1if add_obstacle_timer
> random
.randrange
(50, 150):add_obstacle_timer
= 0random_value
= random
.randrange
(0, 10)if random_value
>= 5 and random_value
<= 7:cactus_sprites_group
.add
(Cactus
(cfg
.IMAGE_PATHS
['cacti']))else:position_ys
= [cfg
.SCREENSIZE
[1]*0.82, cfg
.SCREENSIZE
[1]*0.75, cfg
.SCREENSIZE
[1]*0.60, cfg
.SCREENSIZE
[1]*0.20]ptera_sprites_group
.add
(Ptera
(cfg
.IMAGE_PATHS
['ptera'], position
=(600, random
.choice
(position_ys
))))dino
.update
()ground
.update
()cloud_sprites_group
.update
()cactus_sprites_group
.update
()ptera_sprites_group
.update
()score_timer
+= 1if score_timer
> (cfg
.FPS
//12):score_timer
= 0score
+= 1score
= min(score
, 99999)if score
> highest_score
:highest_score
= score
if score
% 100 == 0:sounds
['point'].play
()if score
% 1000 == 0:ground
.speed
-= 1for item
in cloud_sprites_group
:item
.speed
-= 1for item
in cactus_sprites_group
:item
.speed
-= 1for item
in ptera_sprites_group
:item
.speed
-= 1for item
in cactus_sprites_group
:if pygame
.sprite
.collide_mask
(dino
, item
):dino
.die
(sounds
)for item
in ptera_sprites_group
:if pygame
.sprite
.collide_mask
(dino
, item
):dino
.die
(sounds
)dino
.draw
(screen
)ground
.draw
(screen
)cloud_sprites_group
.draw
(screen
)cactus_sprites_group
.draw
(screen
)ptera_sprites_group
.draw
(screen
)score_board
.set(score
)highest_score_board
.set(highest_score
)score_board
.draw
(screen
)highest_score_board
.draw
(screen
)pygame
.display
.update
()clock
.tick
(cfg
.FPS
)if dino
.is_dead
:breakreturn GameEndInterface
(screen
, cfg
), highest_score
'''run'''
if __name__
== '__main__':highest_score
= 0while True:flag
, highest_score
= main
(highest_score
)if not flag
: break
還有游戲圖片素材等,全套游戲源碼已備好戳我,空投直達(dá)🪂
小游戲6:控制平衡木
玩法:小時候的經(jīng)典游戲,控制左右就行,到后面才有一點點難度
源碼分享
import cfg
from modules
import breakoutClone
'''主函數(shù)'''
def main():game
= breakoutClone
(cfg
)game
.run
()'''run'''
if __name__
== '__main__':main
()
還有配置文件戳我,空投直達(dá)🪂
小游戲7:超級炸彈人
體驗:小時候的又一經(jīng)典游戲,小時候很多次都被自己炸死了
游戲源碼(含配置文件、圖片素材等)拿來就能玩戳我,空投直達(dá)🪂
小游戲8:保衛(wèi)森林塔防
玩法:類似保衛(wèi)蘿卜,塔防類的小游戲,布局一定要合理,考慮射程屬性等等
整套游戲源碼已備好,拿來就能玩😎戳我,空投直達(dá)🪂
小游戲9:吃飯睡覺打豆豆
體驗:考驗手速和操作和走位,打開這個游戲,阿星仿佛感覺到我的鼠標(biāo)在顫抖
源碼已備好,拿來就能玩🥳戳我,空投直達(dá)🪂
小游戲10:水果忍者切水果
體驗:切水果風(fēng)靡一時的游戲,不知道為啥總是切到炸彈🤣挺解壓的游戲
爽歪歪🤗整套源碼已備好,拿來就能玩😆戳我,空投直達(dá)🪂
小結(jié)
學(xué)習(xí)資料:含Python、爬蟲、數(shù)據(jù)分析、算法等學(xué)習(xí)視頻和文檔
行業(yè)資料:添加即可領(lǐng)取PPT模板、簡歷模板、行業(yè)經(jīng)典書籍PDF
面試題庫:歷年經(jīng)典,熱乎的大廠面試真題,持續(xù)更新中…
阿星的資料已備好,戳文末名片領(lǐng)…
🐌以上學(xué)習(xí)資料+全套源碼+玩法詳解🐱?💻戳名片領(lǐng)
總結(jié)
以上是生活随笔為你收集整理的下篇丨月薪3w还能天天摸鱼?再整10个Python小游戏【附源码】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。