国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

邊玩邊學(xué),13個Python小游戲(含源碼)

這篇具有很好參考價值的文章主要介紹了邊玩邊學(xué),13個Python小游戲(含源碼)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

經(jīng)常聽到有朋友說,學(xué)習(xí)編程是一件非??菰餆o味的事情。其實,大家有沒有認(rèn)真想過,可能是我們的學(xué)習(xí)方法不對?

比方說,你有沒有想過,可以通過打游戲來學(xué)編程?

今天我想跟大家分享幾個Python小游戲,教你如何通過邊打游戲邊學(xué)編程!

1、吃金幣

邊玩邊學(xué),13個Python小游戲(含源碼)

源碼分享:文章來源地址http://www.zghlxwxcb.cn/news/detail-471008.html

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]?=?images
????????else:
????????????game_images[key]?=?pygame.image.load(value)
????game_sounds?=?{}
????for?key,?value?in?cfg.AUDIO_PATHS.items():
????????if?key?==?'bgm':?continue
????????game_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)
????#?定義hero
????hero?=?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?=?0
????highest_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))
????????#?--倒計時信息
????????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?+=?1
????????if?generate_food_count?>?generate_food_freq:
????????????generate_food_freq?=?random.randint(10,?20)
????????????generate_food_count?=?0
????????????food?=?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?=?score
????????#?--畫hero
????????hero.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

?

2、打乒乓

邊玩邊學(xué),13個Python小游戲(含源碼)

源碼分享:

?
import?sys
import?cfg
import?pygame
from?modules?import?*
?
?
'''定義按鈕'''
def?Button(screen,?position,?text,?button_size=(200,?50)):
????left,?top?=?position
????bwidth,?bheight?=?button_size
????pygame.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?1
????????????????elif?button_2.collidepoint(pygame.mouse.get_pos()):
????????????????????return?2
????????clock.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:
????????????????????return
????????????????elif?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)
????#?游戲主循環(huán)
????#?--左邊球拍(ws控制,?僅雙人模式時可控制)
????score_left?=?0
????racket_left?=?Racket(cfg.RACKETPICPATH,?'LEFT',?cfg)
????#?--右邊球拍(↑↓控制)
????score_right?=?0
????racket_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_right
????????clock.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()

?

3、滑雪

邊玩邊學(xué),13個Python小游戲(含源碼)

源碼分享:

?
import?sys
import?cfg
import?pygame
import?random
?
?
'''滑雪者類'''
class?SkierClass(pygame.sprite.Sprite):
????def?__init__(self):
????????pygame.sprite.Sprite.__init__(self)
????????#?滑雪者的朝向(-2到2)
????????self.direction?=?0
????????self.imagepaths?=?cfg.SKIER_IMAGE_PATHS[:-1]
????????self.image?=?pygame.image.load(self.imagepaths[self.direction])
????????self.rect?=?self.image.get_rect()
????????self.rect.center?=?[320,?100]
????????self.speed?=?[self.direction,?6-abs(self.direction)*2]
????'''改變滑雪者的朝向.?負(fù)數(shù)為向左,正數(shù)為向右,0為向前'''
????def?turn(self,?num):
????????self.direction?+=?num
????????self.direction?=?max(-2,?self.direction)
????????self.direction?=?min(2,?self.direction)
????????center?=?self.rect.center
????????self.image?=?pygame.image.load(self.imagepaths[self.direction])
????????self.rect?=?self.image.get_rect()
????????self.rect.center?=?center
????????self.speed?=?[self.direction,?6-abs(self.direction)*2]
????????return?self.speed
????'''移動滑雪者'''
????def?move(self):
????????self.rect.centerx?+=?self.speed[0]
????????self.rect.centerx?=?max(20,?self.rect.centerx)
????????self.rect.centerx?=?min(620,?self.rect.centerx)
????'''設(shè)置為摔倒?fàn)顟B(tài)'''
????def?setFall(self):
????????self.image?=?pygame.image.load(cfg.SKIER_IMAGE_PATHS[-1])
????'''設(shè)置為站立狀態(tài)'''
????def?setForward(self):
????????self.direction?=?0
????????self.image?=?pygame.image.load(self.imagepaths[self.direction])
?
?
'''
Function:
????障礙物類
Input:
????img_path:?障礙物圖片路徑
????location:?障礙物位置
????attribute:?障礙物類別屬性
'''
class?ObstacleClass(pygame.sprite.Sprite):
????def?__init__(self,?img_path,?location,?attribute):
????????pygame.sprite.Sprite.__init__(self)
????????self.img_path?=?img_path
????????self.image?=?pygame.image.load(self.img_path)
????????self.location?=?location
????????self.rect?=?self.image.get_rect()
????????self.rect.center?=?self.location
????????self.attribute?=?attribute
????????self.passed?=?False
????'''移動'''
????def?move(self,?num):
????????self.rect.centery?=?self.location[1]?-?num
?
?
'''創(chuàng)建障礙物'''
def?createObstacles(s,?e,?num=10):
????obstacles?=?pygame.sprite.Group()
????locations?=?[]
????for?i?in?range(num):
????????row?=?random.randint(s,?e)
????????col?=?random.randint(0,?9)
????????location??=?[col*64+20,?row*64+20]
????????if?location?not?in?locations:
????????????locations.append(location)
????????????attribute?=?random.choice(list(cfg.OBSTACLE_PATHS.keys()))
????????????img_path?=?cfg.OBSTACLE_PATHS[attribute]
????????????obstacle?=?ObstacleClass(img_path,?location,?attribute)
????????????obstacles.add(obstacle)
????return?obstacles
?
?
'''合并障礙物'''
def?AddObstacles(obstacles0,?obstacles1):
????obstacles?=?pygame.sprite.Group()
????for?obstacle?in?obstacles0:
????????obstacles.add(obstacle)
????for?obstacle?in?obstacles1:
????????obstacles.add(obstacle)
????return?obstacles
?
?
''&#

到了這里,關(guān)于邊玩邊學(xué),13個Python小游戲(含源碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 用Python寫了13個小游戲,上班摸魚我能玩一天

    用Python寫了13個小游戲,上班摸魚我能玩一天

    分享13個Python小游戲,本內(nèi)容來源于網(wǎng)絡(luò)。 用Python寫個魂斗羅,另附30個Python小游戲源碼?segmentfault.com/a/1190000041782623 源碼分享: 源碼分享: 源碼分享: 源碼分享: 源碼分享: 玩法:上下控制起跳躲避 源碼分享: 玩法:三個相連就能消除 源碼分享: 玩法:童年經(jīng)典,普

    2024年02月06日
    瀏覽(57)
  • python小游戲畢設(shè) 2048小游戲設(shè)計與實現(xiàn) (源碼)

    python小游戲畢設(shè) 2048小游戲設(shè)計與實現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 2048小游戲設(shè)計與實現(xiàn) (源碼) ?? 學(xué)長根據(jù)實現(xiàn)的難度和等級對項目進行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 項目獲?。?https://

    2024年02月12日
    瀏覽(29)
  • python小游戲畢設(shè) 掃雷小游戲設(shè)計與實現(xiàn) (源碼)

    python小游戲畢設(shè) 掃雷小游戲設(shè)計與實現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 掃雷小游戲設(shè)計與實現(xiàn) (源碼) ?? 學(xué)長根據(jù)實現(xiàn)的難度和等級對項目進行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 項目獲?。?https:

    2024年02月06日
    瀏覽(34)
  • python小游戲畢設(shè) 消消樂小游戲設(shè)計與實現(xiàn) (源碼)

    python小游戲畢設(shè) 消消樂小游戲設(shè)計與實現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 消消樂小游戲設(shè)計與實現(xiàn) (源碼) ?? 學(xué)長根據(jù)實現(xiàn)的難度和等級對項目進行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 項目獲?。?htt

    2024年02月09日
    瀏覽(26)
  • python小游戲畢設(shè) 飛揚的小鳥小游戲設(shè)計與實現(xiàn) (源碼)

    python小游戲畢設(shè) 飛揚的小鳥小游戲設(shè)計與實現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 飛揚的小鳥小游戲設(shè)計與實現(xiàn) (源碼) ?? 學(xué)長根據(jù)實現(xiàn)的難度和等級對項目進行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 項目獲?。?/p>

    2024年02月08日
    瀏覽(26)
  • python小游戲畢設(shè) 吃豆人小游戲設(shè)計與實現(xiàn) (源碼)

    python小游戲畢設(shè) 吃豆人小游戲設(shè)計與實現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 吃豆人小游戲設(shè)計與實現(xiàn) (源碼) ?? 學(xué)長根據(jù)實現(xiàn)的難度和等級對項目進行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 項目獲?。?htt

    2024年02月10日
    瀏覽(33)
  • [游戲開發(fā)][Unity]Assetbundle下載篇(7)獲取運行時(邊玩邊下)下載列表

    [游戲開發(fā)][Unity]Assetbundle下載篇(7)獲取運行時(邊玩邊下)下載列表

    打包與資源加載框架目錄 啥是運行時下載清單?現(xiàn)在大多數(shù)手游都會有一個邊玩邊下功能,會提示用戶是否開啟下載,要XXX流量,如果你下載完了,可能還會有獎勵。 ? 疑問:為何要有邊玩邊下功能? 解答:為了發(fā)包的包體小,并且是越小越好! 我們的游戲想要賺錢,第一

    2024年02月08日
    瀏覽(27)
  • python游戲畢設(shè) - 打地鼠小游戲設(shè)計與實現(xiàn) (源碼)

    python游戲畢設(shè) - 打地鼠小游戲設(shè)計與實現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 打地鼠小游戲設(shè)計與實現(xiàn) (源碼) ?? 學(xué)長根據(jù)實現(xiàn)的難度和等級對項目進行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 項目獲取: htt

    2024年02月06日
    瀏覽(23)
  • python小游戲畢設(shè) 仿谷歌瀏覽器小恐龍小游戲設(shè)計與實現(xiàn) (源碼)

    python小游戲畢設(shè) 仿谷歌瀏覽器小恐龍小游戲設(shè)計與實現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 仿谷歌瀏覽器小恐龍小游戲設(shè)計與實現(xiàn) (源碼) ?? 學(xué)長根據(jù)實現(xiàn)的難度和等級對項目進行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 項

    2024年02月02日
    瀏覽(21)
  • 【附源碼】Python小游戲 ——開心消消樂

    【附源碼】Python小游戲 ——開心消消樂

    目錄 前言 開發(fā)工具 環(huán)境搭建 效果展示 選擇關(guān)卡首頁 游戲界面? 過關(guān)? ?代碼展示 模塊導(dǎo)入 主函數(shù) 聲音類 樹類 元素類 數(shù)組類 今天主要是給大家拿牌一個小游戲,開心消消樂 看看有沒有小伙伴能夠通過呀 Python版本:3.7.8 相關(guān)模塊: pygame模塊; manager模塊; sys模塊; 以及

    2024年02月11日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包