摘要:之所以這里要添加這四行代碼,其實(shí)是為了當(dāng)你重新開(kāi)始也就是第二次及以后點(diǎn)擊按鈕游戲時(shí),計(jì)分板能正確顯示。當(dāng)?shù)谝贿\(yùn)行游戲時(shí),沒(méi)有這四行也能正確顯示計(jì)分板。
《Python編程:從入門到實(shí)踐》筆記。1. 前言
本篇是Python小游戲《外星人入侵》的最后一篇。
本篇我們將結(jié)束Pygame小游戲《外星人入侵》的開(kāi)發(fā)。在本篇中,我們將添加如下內(nèi)容:
添加一個(gè)Play按鈕,用于根據(jù)需要啟動(dòng)游戲以及在游戲結(jié)束后重啟游戲;
使玩家能提高等級(jí),并在提高等級(jí)時(shí)加快節(jié)奏;
添加一個(gè)記分系統(tǒng)
2. 添加Play按鈕首先為了通過(guò)點(diǎn)擊Play按鈕來(lái)開(kāi)始游戲,需要在GameStats類的構(gòu)造函數(shù)中將self.game_active設(shè)置為False。
2.1 Button類為了添加Play按鈕,我們需要先添加一個(gè)Button類。將這個(gè)類放在button.py模塊中:
import pygame class Button: def __init__(self, ai_settings, screen, msg): """初始化按鈕屬性""" self.screen = screen self.screen_rect = screen.get_rect() # 設(shè)置按鈕尺寸和其他屬性 self.width, self.height = 200, 50 # 解包,平行賦值 self.button_color = (0, 255, 0) self.text_color = (255, 255, 255) self.font = pygame.font.SysFont(None, 48) # 創(chuàng)建按鈕的rect對(duì)象,并使其居中 self.rect = pygame.Rect(0, 0, self.width, self.height) self.rect.center = self.screen_rect.center # 按鈕的標(biāo)簽只需創(chuàng)建一次 self.prep_msg(msg) def prep_msg(self, msg): """將msg渲染為圖像,并使其在按鈕上居中""" self.msg_image = self.font.render(msg, True, self.text_color, self.button_color) self.msg_image_rect = self.msg_image.get_rect() self.msg_image_rect.center = self.rect.center def draw_button(self): # 繪制一個(gè)用顏色填充的按鈕,再繪制文本 self.screen.fill(self.button_color, self.rect) self.screen.blit(self.msg_image, self.msg_image_rect)
pygame將字符串渲染為圖像來(lái)處理文本,通過(guò)pygame.font的render()方法來(lái)渲染文字,它的第一個(gè)參數(shù)是要渲染的字符串,第二個(gè)是抗鋸齒設(shè)定(打游戲的老鐵應(yīng)該對(duì)這個(gè)詞很熟悉~~),第三個(gè)是字體顏色,第四個(gè)是背景顏色,第四個(gè)參數(shù)如果不設(shè)定,將以透明背景的方式渲染文本。最后通過(guò)draw_button()方法在窗體中繪制Play按鈕。
2.2 修改alien_invasion.py在主程序中實(shí)例化一個(gè)Play按鈕,并添加它的響應(yīng)事件,以及將其畫出。
-- snip -- from button import Button -- snip -- def run_game(): -- snip -- pygame.display.set_caption("Alien Invasion") # 創(chuàng)建Play按鈕 play_button = Button(ai_settings, screen, "Play") -- snip -- # 開(kāi)始游戲的主循環(huán) while True: # 增加了參數(shù),為按鈕添加響應(yīng)事件 gf.check_events(ai_settings, screen, ship, bullets, stats, play_button, aliens) -- snip -- # 增加了參數(shù),在窗體中畫出按鈕 gf.update_screen(ai_settings, screen, ship, bullets, aliens, stats, play_button) run_game()
注意,不光新增了實(shí)例化按鈕的代碼,還修改了update_screen()和check_events()函數(shù)。
2.3 修改game_functions.py修改update_screen()函數(shù):在窗體中畫出Play按鈕
# 增加了參數(shù),記得修改主程序 def update_screen(ai_settings, screen, ship, bullets, aliens, stats, play_button): -- snip -- # 如果游戲沒(méi)啟動(dòng),則顯示Play按鈕 if not stats.game_active: play_button.draw_button() # 讓最近繪制的屏幕可見(jiàn) pygame.display.flip()
修改check_events()函數(shù):為Play按鈕添加響應(yīng)事件
# 增加了參數(shù),記得修改主程序 def check_events(ai_settings, screen, ship, bullets, stats, play_button, aliens): for event in pygame.event.get(): -- snip -- elif event.type == pygame.MOUSEBUTTONDOWN: mouse_x, mouse_y = pygame.mouse.get_pos() check_play_button(stats, play_button, mouse_x, mouse_y, ai_settings, screen, ship, aliens, bullets)
pygame.MOUSEBUTTONDOWN表示鼠標(biāo)按下事件;通過(guò)pygame.mouse的get_pos()來(lái)獲得鼠標(biāo)點(diǎn)擊處的坐標(biāo);最后,通過(guò)check_play_button()函數(shù)來(lái)響應(yīng)鼠標(biāo)點(diǎn)擊事件,該函數(shù)的內(nèi)容如下:
新增check_play_button()函數(shù):處理鼠標(biāo)點(diǎn)擊事件
def check_play_button(stats, play_button, mouse_x, mouse_y, ai_settings, screen, ship, aliens, bullets): """在玩家單機(jī)Play按鈕時(shí)開(kāi)始新游戲""" if play_button.rect.collidepoint(mouse_x, mouse_y) and not stats.game_active: # 隱藏光標(biāo) pygame.mouse.set_visible(False) # 重置游戲統(tǒng)計(jì)信息 stats.reset_stats() stats.game_active = True # 清空外星人列表和子彈列表 aliens.empty() bullets.empty() # 創(chuàng)建一群新的外星人,并讓飛船居中 create_fleet(ai_settings, screen, ship, aliens) ship.center_ship()
通過(guò)play_button.rect的collidepoint()方法來(lái)確定鼠標(biāo)是否點(diǎn)擊到了button,如果點(diǎn)擊到了,并且當(dāng)前游戲是“非啟動(dòng)”狀態(tài),則啟動(dòng)或者重置游戲;
如果不對(duì)stats.game_active進(jìn)行確認(rèn),則在游戲中,即使Play按鈕消失了,鼠標(biāo)點(diǎn)擊它原來(lái)所在的地方,也會(huì)重置游戲。
在游戲中,為了避免光標(biāo)的影響,游戲時(shí)我們通過(guò)pygame.mouse的set_visible()方法將其隱藏;游戲結(jié)束時(shí),重新顯示光標(biāo),為此,需要修改ship_hit()函數(shù):
def ship_hit(ai_settings, stats, screen, ship, aliens, bullets): -- snip -- else: -- snip -- pygame.mouse.set_visible(True)
最后,程序的效果如下:
3. 游戲提速每當(dāng)消滅一批艦隊(duì)后,我們就為游戲里的元素提個(gè)速,為此,需要修改settings.py和game_functions.py模塊。
3.1 修改settings.py添加一個(gè)提速倍率參數(shù),并增加兩個(gè)方法:
class Settings: def __init__(self): -- snip -- # 以什么樣的速度提節(jié)奏 self.speedup_scale = 1.1 # 前面有四個(gè)屬性放到了該方法中 self.initialize_dynamic_settings() def initialize_dynamic_settings(self): """初始化隨游戲進(jìn)行而變化的設(shè)置""" self.ship_speed_factor = 1.5 self.bullet_speed_factor = 3 self.alien_speed_factor = 1 # 外星艦隊(duì)方向標(biāo)志:1向右,-1向左 self.fleet_direction = 1 def increase_speed(self): """提高速度""" self.ship_speed_factor *= self.speedup_scale self.bullet_speed_factor *= self.speedup_scale self.alien_speed_factor *= self.speedup_scale
我們將需要修改的四個(gè)參數(shù)放到了initialize_dynamic_settings()方法中,increase_speed()方法用于動(dòng)態(tài)改變游戲參數(shù)。
3.2 修改game_functions.py每消滅一批外星艦隊(duì),就對(duì)游戲提速,需要修改check_bullet_alien_collisions()函數(shù):
def check_bullet_alien_collisions(ai_settings, screen, ship, aliens, bullets): -- snip -- if len(aliens) == 0: -- snip -- ai_settings.increase_speed() -- snip --
當(dāng)重新開(kāi)始游戲時(shí),需要將這些被修改了的參數(shù)改回默認(rèn)值,為此,需要修改check_play_button()函數(shù):
def check_play_button(stats, play_button, mouse_x, mouse_y, ai_settings, screen, ship, aliens, bullets): if play_button.rect.collidepoint(mouse_x, mouse_y) and not stats.game_active: # 重置游戲設(shè)置 ai_settings.initialize_dynamic_settings() -- snip --4. 記分板
下面我們將實(shí)現(xiàn)一個(gè)記分系統(tǒng),實(shí)時(shí)跟蹤玩家的得分,并顯示最高得分,當(dāng)前等級(jí)和余下的飛船數(shù)。首先,我們需要?jiǎng)?chuàng)建一個(gè)Scoreboard類。
4.1 新增scoreboard.py新增一個(gè)Scoreboard類,用作屏幕中的記分板,它的屏幕正中央上方部分是最高分?jǐn)?shù),屏幕右邊是當(dāng)前分?jǐn)?shù)和等級(jí),左上角是剩余的飛船數(shù)量,飛船數(shù)量用圖片表示,因此,我們還要將Ship類更改為從Sprite繼承。
import pygame from pygame.sprite import Group from ship import Ship class Scoreboard: """顯示得分信息的類""" def __init__(self, ai_settings, screen, stats): """初始化顯示得分涉及的屬性""" self.screen = screen self.screen_rect = screen.get_rect() self.ai_settings = ai_settings self.stats = stats # 顯示得分信息時(shí)使用的字體設(shè)置 self.text_color = (30, 30, 30) self.font = pygame.font.SysFont(None, 48) # 生成當(dāng)前得分、最高得分、當(dāng)前等級(jí)和當(dāng)前剩余的飛船數(shù) self.prep_score() self.prep_high_score() self.prep_level() self.prep_ships() def prep_score(self): """將得分轉(zhuǎn)換為圖片""" rounded_score = round(self.stats.score, -1) # 在得分中插入逗號(hào) score_str = "{:,}".format(rounded_score) self.score_image = self.font.render(score_str, True, self.text_color, self.ai_settings.bg_color) # 將得分放在屏幕右上角 self.score_rect = self.score_image.get_rect() self.score_rect.right = self.screen_rect.right - 20 self.score_rect.top = 20 def prep_high_score(self): """將最高得分轉(zhuǎn)化為圖像""" high_score = round(self.stats.high_score, -1) high_score_str = "{:,}".format(high_score) self.high_score_image = self.font.render(high_score_str, True, self.text_color, self.ai_settings.bg_color) # 將最高得分放在屏幕頂部中央 self.high_score_rect = self.high_score_image.get_rect() self.high_score_rect.centerx = self.screen_rect.centerx self.high_score_rect.top = self.score_rect.top def prep_level(self): """將等級(jí)轉(zhuǎn)化為圖像""" self.level_image = self.font.render(str(self.stats.level), True, self.text_color, self.ai_settings.bg_color) # 將等級(jí)放在得分下方 self.level_rect = self.level_image.get_rect() self.level_rect.right = self.score_rect.right self.level_rect.top = self.score_rect.bottom + 10 def prep_ships(self): """顯示還余下多少艘飛船""" self.ships = Group() for ship_number in range(self.stats.ships_left): ship = Ship(self.ai_settings, self.screen) ship.rect.x = 10 + ship_number * ship.rect.width ship.rect.y = 10 self.ships.add(ship) def show_score(self): """在屏幕上顯示得分板""" self.screen.blit(self.score_image, self.score_rect) self.screen.blit(self.high_score_image, self.high_score_rect) self.screen.blit(self.level_image, self.level_rect) # 繪制飛船 self.ships.draw(self.screen)4.2 修改settings.py
設(shè)置外星人的分?jǐn)?shù),外星人分?jǐn)?shù)增長(zhǎng)的速度:
class Settings: def __init__(self): -- snip -- # 外星人點(diǎn)數(shù)的提高速度 self.score_scale = 1.5 self.initialize_dynamic_settings() def initialize_dynamic_settings(self): -- snip -- # 記分, 每一個(gè)外星人的分?jǐn)?shù) self.alien_points = 50 def increase_speed(self): -- snip -- # 動(dòng)態(tài)增加每個(gè)外星人的分?jǐn)?shù) self.alien_points = int(self.alien_points * self.score_scale)4.3 修改game_stats.py
在GameStats中設(shè)置一個(gè)用于記錄最高分的屬性,也正因此,應(yīng)該將它放在構(gòu)造函數(shù)中,它只會(huì)變大,在沒(méi)有重新運(yùn)行游戲前,它不會(huì)被重置為0;在reset_stats()方法中,初始化score和level兩個(gè)屬性,這兩個(gè)屬性每點(diǎn)一次Play按鈕都會(huì)被重置。對(duì)于level這個(gè)屬性,每消滅一批艦隊(duì),level就加1.
class GameStats: def __init__(self, ai_settings): -- snip -- # 在任何情況下都不應(yīng)重置最高得分 self.high_score = 0 def reset_stats(self): -- snip -- self.score = 0 self.level = 14.4 修改主程序alien_invasion.py
-- snip -- from scoreboard import Scoreboard def run_game(): -- snip -- # 創(chuàng)建計(jì)分板 score = Scoreboard(ai_settings, screen, stats) # 開(kāi)始游戲的主循環(huán) while True: # 添加score參數(shù) gf.check_events(ai_settings, screen, ship, bullets, stats, play_button, aliens, score) if stats.game_active: ship.update() # 添加score參數(shù) gf.update_bullets(bullets, aliens, ship, screen, ai_settings, stats, score) # 添加score參數(shù) gf.update_aliens(ai_settings, aliens, ship, screen, bullets, stats, score) # 添加score參數(shù) gf.update_screen(ai_settings, screen, ship, bullets, aliens, stats, play_button, score)
從上面的注釋可以看出,我們生成了一個(gè)計(jì)分板的實(shí)例score;game_functions.py中的四個(gè)函數(shù)都要添加score參數(shù),換句話說(shuō),這四個(gè)函數(shù)都要修改,下面我們逐一修改這四個(gè)函數(shù)。
4.5 修改game_functions.py 4.5.1 修改參數(shù)有幾個(gè)函數(shù)只需要在參數(shù)列表中增加score參數(shù):
# 增加score參數(shù) def check_events(ai_settings, screen, ship, bullets, stats, play_button, aliens, score): for event in pygame.event.get(): -- snip -- elif event.type == pygame.MOUSEBUTTONDOWN: mouse_x, mouse_y = pygame.mouse.get_pos() # 增加score參數(shù), 該函數(shù)有所改動(dòng) check_play_button(stats, play_button, mouse_x, mouse_y, ai_settings, screen, ship, aliens, bullets, score) # 增加score參數(shù) def update_bullets(bullets, aliens, ship, screen, ai_settings, stats, score): -- snip -- # 增加score參數(shù),該函數(shù)有所改動(dòng) check_bullet_alien_collisions(ai_settings, screen, ship, aliens, bullets, stats, score) # 增加score參數(shù) def update_aliens(ai_settings, aliens, ship, screen, bullets, stats, score): -- snip -- if pygame.sprite.spritecollideany(ship, aliens): # 增加score參數(shù),該函數(shù)有所改動(dòng) ship_hit(ai_settings, stats, screen, ship, aliens, bullets, score) # 增加score參數(shù),該函數(shù)有所改動(dòng) check_aliens_bottom(ai_settings, stats, screen, ship, aliens, bullets, score) # 增加score參數(shù),該函數(shù)有所改動(dòng) def update_screen(ai_settings, screen, ship, bullets, aliens, stats, play_button, score): -- snip -- aliens.draw(screen) # 在if語(yǔ)句前面添加繪制計(jì)分板的代碼 # 顯示得分 score.show_score() if not stats.game_active: play_button.draw_button() -- snip --
接下來(lái)是改動(dòng)較多的函數(shù)。
4.5.2 修改check_play_button()函數(shù)# 添加了score參數(shù) def check_play_button(stats, play_button, mouse_x, mouse_y, ai_settings, screen, ship, aliens, bullets, score): """在玩家單機(jī)Play按鈕時(shí)開(kāi)始新游戲""" if play_button.rect.collidepoint(mouse_x, mouse_y) and not stats.game_active: -- snip -- stats.game_active = True # 這一句不是新增的 # 以下四行是新增的 score.prep_score() score.prep_high_score() score.prep_level() score.prep_ships() # 清空外星人列表和子彈列表 -- snip --
首先參數(shù)列表添加了score參數(shù),if判斷中還添加了四行生成計(jì)分板的代碼。之所以這里要添加這四行代碼,其實(shí)是為了當(dāng)你重新開(kāi)始(也就是第二次及以后點(diǎn)擊Play按鈕)游戲時(shí),計(jì)分板能正確顯示。
當(dāng)?shù)谝贿\(yùn)行游戲時(shí),沒(méi)有這四行也能正確顯示計(jì)分板。但是從第二次點(diǎn)擊Play開(kāi)始,如果沒(méi)有這四行,游戲的各個(gè)參數(shù)雖然更新了(通過(guò)check_play_button()中的各種重置函數(shù)得到了更新),可這些更新還沒(méi)有讓記分板中這四個(gè)參數(shù)的圖像得到重新繪制,即屬性的更新沒(méi)有自動(dòng)觸發(fā)score的這四個(gè)函數(shù)。所以顯示會(huì)不正確,因此必須在這里添加這四行代碼。
4.5.3 修改update_screen()函數(shù)# 增加了score參數(shù) def update_screen(ai_settings, screen, ship, bullets, aliens, stats, play_button, score): -- snip -- # 增加顯示得分的代碼 score.show_score() if not stats.game_active: -- snip --4.5.4 修改update_bullets()和update_aliens()函數(shù)
這倆函數(shù)只是增加參數(shù)而已。
# 增加了score參數(shù) def update_bullets(bullets, aliens, ship, screen, ai_settings, stats, score): -- snip -- # 增加了score參數(shù), 函數(shù)有改動(dòng) check_bullet_alien_collisions(ai_settings, screen, ship, aliens, bullets, stats, score) # 增加了score參數(shù) def update_aliens(ai_settings, aliens, ship, screen, bullets, stats, score): -- snip -- # 檢測(cè)外星人和飛船之間的碰撞 if pygame.sprite.spritecollideany(ship, aliens): # 增加了score參數(shù), 函數(shù)有改動(dòng) ship_hit(ai_settings, stats, screen, ship, aliens, bullets, score) # 增加了score參數(shù) check_aliens_bottom(ai_settings, stats, screen, ship, aliens, bullets, score)
check_aliens_bottom()內(nèi)也變化也不大,該函數(shù)的變化不再以代碼的形式多帶帶列出:
該函數(shù)增加了一個(gè)score參數(shù),它內(nèi)部調(diào)用了ship_hit()函數(shù),為這個(gè)調(diào)用也增加score參數(shù)。這就是全部變化。
4.5.5 修改check_bullet_alien_collisions()函數(shù)# 增加了score參數(shù) def check_bullet_alien_collisions(ai_settings, screen, ship, aliens, bullets, stats, score): collisions = pygame.sprite.groupcollide(bullets, aliens, True, True) if collisions: for aliens in collisions.values(): stats.score += ai_settings.alien_points * len(aliens) # 其實(shí)這里可以將其放到for循環(huán)之外,應(yīng)為并不能立刻就呈現(xiàn)分?jǐn)?shù)變化 # 要等到主程序中的update_screen()中才能呈現(xiàn) score.prep_score() # 該函數(shù)是新增的 check_high_score(stats, score) if len(aliens) == 0: # 刪除現(xiàn)有的子彈并創(chuàng)建新的艦隊(duì) bullets.empty() ai_settings.increase_speed() # 提高等級(jí) stats.level += 1 score.prep_level() create_fleet(ai_settings, screen, ship, aliens)
首先我們?cè)黾恿艘粋€(gè)判斷語(yǔ)句,用于根據(jù)消滅的外星人來(lái)增加分?jǐn)?shù),由于有可能一顆子彈打到多個(gè)外星人但只算了一個(gè)外星人的分?jǐn)?shù),所有用循環(huán)來(lái)確保消滅掉的每一個(gè)外星人都得到了統(tǒng)計(jì)。collisions是一個(gè)字典,這里子彈是鍵,該子彈消滅的外星人對(duì)象為值(是個(gè)列表)。
我們還新增了一個(gè)更新最高積分的函數(shù)check_high_score(),它的代碼如下:
def check_high_score(stats, score): """檢查是否誕生了新的最高得分""" if stats.score > stats.high_score: stats.high_score = stats.score score.prep_high_score()
第二個(gè)if中,添加了增加等級(jí)的語(yǔ)句,緊跟著的是重新在計(jì)分板中繪制等級(jí)圖像。
4.5.6 修改ship_hit()和check_aliens_bottom()函數(shù)# 增加了score參數(shù) def ship_hit(ai_settings, stats, screen, ship, aliens, bullets, score): if stats.ships_left > 0: stats.ships_left -= 1 # 更新記分牌 score.prep_ships() # 清空外星人列表和子彈列表 -- snip --4.6 最后運(yùn)行效果
至此所有的添加都已經(jīng)結(jié)束,下圖是游戲的最終效果:
5. 小結(jié)Python小游戲告一段落,一共三篇文章。本文中講述了:
如何創(chuàng)建用于開(kāi)始新游戲的Play按鈕;
如何檢測(cè)鼠標(biāo)點(diǎn)擊事件;
如何在游戲處于活動(dòng)狀態(tài)時(shí)隱藏光標(biāo);
如何隨游戲的進(jìn)行調(diào)整節(jié)奏;
如何實(shí)現(xiàn)記分系統(tǒng);
以及如何以文本和非文本方式顯示信息。
后三篇文章將是使用Python來(lái)進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析、繪圖等內(nèi)容。
迎大家關(guān)注我的微信公眾號(hào)"代碼港" & 個(gè)人網(wǎng)站 www.vpointer.net ~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41788.html
摘要:如果你的目標(biāo)是成為數(shù)據(jù)科學(xué)家或機(jī)器學(xué)習(xí)工程師研究員,那么有博士學(xué)位會(huì)給你加分不少。當(dāng)然,有些人更喜歡學(xué)術(shù)研究,而不是在行業(yè)中運(yùn)用數(shù)據(jù)科學(xué)或機(jī)器學(xué)習(xí)。二碩士學(xué)位入行數(shù)據(jù)科學(xué)需要碩士學(xué)位嗎視情況而定。 showImg(https://segmentfault.com/img/bVbm5Mw?w=850&h=566);作者 | Jeremie Harris翻譯 | MikaCDA 數(shù)據(jù)分析師...
摘要:商業(yè)軟件聯(lián)盟周三稱,一些歐洲國(guó)家和快速增長(zhǎng)的發(fā)展中國(guó)家如巴西和中國(guó)擔(dān)心美國(guó)將輕易獲取新興的云計(jì)算市場(chǎng)。因此,這些國(guó)家建立了一些屏障阻止數(shù)據(jù)跨越其國(guó)境,從而阻礙了全球云計(jì)算市場(chǎng)的發(fā)展。 商業(yè)軟件聯(lián)盟周三稱,一些歐洲國(guó)家和快速增長(zhǎng)的發(fā)展中國(guó)家(如巴西和中國(guó))擔(dān)心美國(guó)將輕易獲取新興的云計(jì)算市場(chǎng)。因此,這些國(guó)家建立了一些屏障阻止數(shù)據(jù)跨越其國(guó)境,從而阻礙了全球云計(jì)算市場(chǎng)的發(fā)展。 ? 商業(yè)軟件聯(lián)盟CE...
摘要:好啦,首先讓我們先搞明白基礎(chǔ)定義,到底是什么表達(dá)了中用于創(chuàng)建匿名函數(shù)的特殊語(yǔ)法。其實(shí)總結(jié)起來(lái),可以理解為一個(gè)小的匿名函數(shù),函數(shù)可以使用任意數(shù)量的參數(shù),但只能有一個(gè)表達(dá)式。 lambda是什么 大家好,今天給大家?guī)?lái)的是有關(guān)于Python里面的lambda表達(dá)式詳細(xì)解析。lambda在Python里面的用處很廣,但說(shuō)實(shí)話,我個(gè)人認(rèn)為有關(guān)于lambda的討論不是如何使用的問(wèn)題,而是該不該用...
摘要:所謂遞歸其實(shí)就是函數(shù)本身調(diào)用函數(shù),直到滿足指定條件之后一層層退出函數(shù),例如從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢故事是什么呢從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢故事是什么呢從前有座山,山里有座廟 所謂遞歸其實(shí)就是函數(shù)本身調(diào)用函數(shù),直到滿足指定條件之后一層層退出函數(shù), 例如 從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢!故事是...
閱讀 2041·2021-11-24 09:39
閱讀 1901·2019-08-30 15:55
閱讀 2195·2019-08-30 15:53
閱讀 620·2019-08-29 13:16
閱讀 1009·2019-08-26 12:20
閱讀 2411·2019-08-26 11:58
閱讀 3176·2019-08-26 10:19
閱讀 3339·2019-08-23 18:31