日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

下篇丨月薪3w还能天天摸鱼?再整10个Python小游戏【附源码】

發(fā)布時(shí)間:2023/12/20 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 下篇丨月薪3w还能天天摸鱼?再整10个Python小游戏【附源码】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

📃個(gè)人主頁(yè):互聯(lián)網(wǎng)阿星🧐
💬格言:選擇有時(shí)候會(huì)大于努力,但你不努力就沒得選
🔥簡(jiǎn)介:大家好我是互聯(lián)網(wǎng)阿星,和我一起合理使用Python,努力做時(shí)間的主人
🏆如果覺得博主的文章還不錯(cuò),請(qǐng)點(diǎn)贊👍+收藏??+留言📝支持一下博主🤞


行業(yè)資料:PPT模板、簡(jiǎn)歷模板、行業(yè)經(jīng)典書籍PDF
面試題庫(kù):歷年經(jīng)典、熱乎的大廠面試真題,持續(xù)更新…
學(xué)習(xí)資料:Python、爬蟲、數(shù)據(jù)分析、算法等學(xué)習(xí)視頻和文檔
Tips:以上資料+全套游戲源碼阿星已備好>>戳我,空投直達(dá)🪂


Python小游戲·目錄

  • 前言
  • 10套Python小游戲
    • 小游戲1:飛機(jī)大戰(zhàn)
    • 小游戲2:吃金幣游戲
    • 小游戲3:24點(diǎn)小游戲
    • 小游戲4:打乒乓(單/雙人)
    • 小游戲5:小恐龍?zhí)惶?/li>
    • 小游戲6:控制平衡木
    • 小游戲7:超級(jí)炸彈人
    • 小游戲8:保衛(wèi)森林塔防
    • 小游戲9:吃飯睡覺打豆豆
    • 小游戲10:水果忍者切水果
  • 小結(jié)


前言

昨天,阿星給大家?guī)?8個(gè)Python小游戲,有老鐵覺得游戲難度有點(diǎn)大了吖。今天,阿星就整上10套輕松休閑的Python小游戲,這波必須得??收藏起來😎

小游戲的全套源碼戳我,空投直達(dá)🪂拿來就能玩😆爽歪歪

話不多說,今日份的Python小游戲,ta來了

10套Python小游戲

小游戲1:飛機(jī)大戰(zhàn)

玩法:支持單雙人模式,控制飛機(jī)躲避障礙物

源碼分享

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()# 產(chǎn)生小行星的時(shí)間間隔asteroid_ticks = 90for i in range(num_player):player_group.add(Ship(i+1, cfg))clock = pygame.time.Clock()# 分?jǐn)?shù)score_1, score_2 = 0, 0# 游戲主循環(huán)while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()# --玩家一: ↑↓←→控制, j射擊; 玩家二: wsad控制, 空格射擊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_1elif (score_1 + score_2) < 1500:background = bg_2else:background = bg_3# --向下移動(dòng)背景圖實(shí)現(xiàn)飛船向上移動(dòng)的效果screen.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 -= 1# --畫飛船for 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)# --顯示分?jǐn)?shù)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('飛機(jī)大戰(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:吃金幣游戲

玩法:在倒計(jì)時(shí)結(jié)束前,控制底部小人物吃到金幣,和阿星的比一下,看你能玩到多少分😎

源碼分享

import os import cfg import sys import pygame import random from modules import *'''游戲初始化''' def initGame():# 初始化pygame, 設(shè)置展示窗口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] = imageselse: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)# 返回初始化數(shù)據(jù)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)# 定義herohero = Hero(game_images['hero'], position=(375, 520))# 定義食物組food_sprites_group = pygame.sprite.Group()generate_food_freq = random.randint(10, 20)generate_food_count = 0# 當(dāng)前分?jǐn)?shù)/歷史最高分score = 0highest_score = 0 if not os.path.exists(cfg.HIGHEST_SCORE_RECORD_FILEPATH) else int(open(cfg.HIGHEST_SCORE_RECORD_FILEPATH).read())# 游戲主循環(huán)clock = pygame.time.Clock()while True:# --填充背景screen.fill(0)screen.blit(game_images['background'], (0, 0))# --倒計(jì)時(shí)信息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)# --按鍵檢測(cè)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')# --隨機(jī)生成食物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)# --碰撞檢測(cè)for food in food_sprites_group:if pygame.sprite.collide_mask(food, hero):game_sounds['get'].play()food_sprites_group.remove(food)score += food.scoreif score > highest_score: highest_score = score# --畫herohero.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)# --判斷游戲是否結(jié)束if pygame.time.get_ticks() >= 90000:break# --更新屏幕pygame.display.flip()clock.tick(cfg.FPS)# 游戲結(jié)束, 記錄最高分并顯示游戲結(jié)束畫面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點(diǎn)小游戲

玩法:將給出的數(shù)字通過加減乘除湊成24點(diǎn)

源碼分享

import os import sys import pygame from cfg import * from modules import * from fractions import Fraction'''檢查控件是否被點(diǎn)擊''' def checkClicked(group, mouse_pos, group_type='NUMBER'):selected = []# 數(shù)字卡片/運(yùn)算符卡片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'''獲取運(yùn)算符精靈組''' 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'''計(jì)算''' 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():# 初始化, 導(dǎo)入必要的游戲素材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)# 24點(diǎn)游戲生成器game24_gen = game24Generator()game24_gen.generate()# 精靈組# --數(shù)字number_sprites_group = getNumberSpritesGroup(game24_gen.numbers_now)# --運(yùn)算符operator_sprites_group = getOperatorSpritesGroup(OPREATORS)# --按鈕button_sprites_group = getButtonSpritesGroup(BUTTONS)# 游戲主循環(huán)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)# 更新數(shù)字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.attributeelif each.select_order == '2':selected_number2 = each.attributeelse: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)# 精靈都畫到screen上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()'''運(yùn)行游戲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)# 游戲主循環(huán)# --左邊球拍(ws控制, 僅雙人模式時(shí)可控制)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)# 球運(yùn)動(dòng)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('九歌')# 導(dǎo)入所有聲音文件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 = 0# 游戲主循環(huán)clock = 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)# --隨機(jī)添加云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))))# --隨機(jī)添加仙人掌/飛龍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 = scoreif 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 -= 1# --碰撞檢測(cè)for 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)# --游戲是否結(jié)束if dino.is_dead:break# 游戲結(jié)束界面return 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:控制平衡木

玩法:小時(shí)候的經(jīng)典游戲,控制左右就行,到后面才有一點(diǎn)點(diǎn)難度

源碼分享

import cfg from modules import breakoutClone'''主函數(shù)''' def main():game = breakoutClone(cfg)game.run()'''run''' if __name__ == '__main__':main()

還有配置文件戳我,空投直達(dá)🪂

小游戲7:超級(jí)炸彈人

體驗(yàn):小時(shí)候的又一經(jīng)典游戲,小時(shí)候很多次都被自己炸死了


游戲源碼(含配置文件、圖片素材等)拿來就能玩戳我,空投直達(dá)🪂

小游戲8:保衛(wèi)森林塔防

玩法:類似保衛(wèi)蘿卜,塔防類的小游戲,布局一定要合理,考慮射程屬性等等


整套游戲源碼已備好,拿來就能玩😎戳我,空投直達(dá)🪂

小游戲9:吃飯睡覺打豆豆

體驗(yàn):考驗(yàn)手速和操作和走位,打開這個(gè)游戲,阿星仿佛感覺到我的鼠標(biāo)在顫抖


源碼已備好,拿來就能玩🥳戳我,空投直達(dá)🪂

小游戲10:水果忍者切水果

體驗(yàn):切水果風(fēng)靡一時(shí)的游戲,不知道為啥總是切到炸彈🤣挺解壓的游戲


爽歪歪🤗整套源碼已備好,拿來就能玩😆戳我,空投直達(dá)🪂


小結(jié)


學(xué)習(xí)資料:含Python、爬蟲、數(shù)據(jù)分析、算法等學(xué)習(xí)視頻和文檔
行業(yè)資料:添加即可領(lǐng)取PPT模板、簡(jiǎn)歷模板、行業(yè)經(jīng)典書籍PDF
面試題庫(kù):歷年經(jīng)典,熱乎的大廠面試真題,持續(xù)更新中…
阿星的資料已備好,戳文末名片領(lǐng)…


🐌以上學(xué)習(xí)資料+全套源碼+玩法詳解🐱?💻戳名片領(lǐng)

總結(jié)

以上是生活随笔為你收集整理的下篇丨月薪3w还能天天摸鱼?再整10个Python小游戏【附源码】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。