體驗用ai做了個python小游戲
- 寫在前面
- 使用的工具
- 2.增加功能
- 1.要求增加視頻作為背景。
- 2.我讓增加了一個歡迎頁面。
- 3.我發現中文顯示有問題。
- 4.我提出了背景修改意見,歡迎頁面和結束頁面背景是視頻,游戲頁面背景是靜態圖片。
- 5.提出增加更多游戲元素。
- 總結:
寫在前面
最近ai確實比較火。各種生成式AI,包括文字、圖片、視頻。之前聽說ai生產代碼能力比較強,一直想試試。所以及就有了本問
使用的工具
deepinseek :用來生成python代碼
即夢:用來生成圖片素材
Remove.bg:用來對生成的圖片素材去除背景
pixabay.com:用來下載音樂素材
#游戲建立步驟
##1.設立游戲建立背景
我使用了深度思考
整個深度思索的過程,讓我了解到deepseek為啥選擇pygame庫,為啥選擇收集物品得分的模式。主要是我前面的提示詞:小學生。我覺得符合我預期。
很快他就生成了python代碼
import pygame
import random# 初始化游戲
pygame.init()
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("哈爾濱冰雪大冒險")
clock = pygame.time.Clock()# 加載哈爾濱元素素材
bg = pygame.image.load("snow_bg.jpg") # 冰雪大世界背景
player_img = pygame.image.load("skier.png") # 滑雪運動員
ice_img = pygame.image.load("ice_block.png") # 冰障礙物
flag_img = pygame.image.load("finish_flag.png") # 終點旗# 顏色定義
WHITE = (255, 255, 255)
BLUE = (0, 100, 255)# 玩家類
class Skier:def __init__(self):self.image = pygame.transform.scale(player_img, (60, 60))self.rect = self.image.get_rect(center=(WIDTH//2, HEIGHT-100))self.speed = 8def move(self, direction):if direction == "left" and self.rect.left > 0:self.rect.x -= self.speedelif direction == "right" and self.rect.right < WIDTH:self.rect.x += self.speed# 障礙物類
class Obstacle:def __init__(self):self.type = random.choice(["ice", "flag"])self.image = ice_img if self.type == "ice" else flag_imgself.image = pygame.transform.scale(self.image, (40, 40))self.rect = self.image.get_rect(center=(random.randint(20, WIDTH-20), -20))self.speed = 5def move(self):self.rect.y += self.speed# 游戲主循環
def main():skier = Skier()obstacles = []score = 0font = pygame.font.Font(None, 36)game_active = Truewhile True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()returnif game_active:keys = pygame.key.get_pressed()if keys[pygame.K_LEFT]:skier.move("left")if keys[pygame.K_RIGHT]:skier.move("right")# 生成障礙物if random.random() < 0.05: # 5%概率生成obstacles.append(Obstacle())# 移動障礙物for obstacle in obstacles:obstacle.move()if skier.rect.colliderect(obstacle.rect):if obstacle.type == "ice":game_active = Falseelse:score += 50obstacles.remove(obstacle)if obstacle.rect.top > HEIGHT:obstacles.remove(obstacle)if obstacle.type == "ice":score += 10# 更新界面screen.blit(bg, (0, 0))screen.blit(skier.image, skier.rect)for obstacle in obstacles:screen.blit(obstacle.image, obstacle.rect)# 顯示得分score_text = font.render(f"得分: {score}", True, WHITE)screen.blit(score_text, (10, 10))else:# 游戲結束界面screen.fill(BLUE)end_text = font.render("游戲結束!最終得分: " + str(score), True, WHITE)screen.blit(end_text, (WIDTH//2-150, HEIGHT//2))restart_text = font.render("按R重新開始", True, WHITE)screen.blit(restart_text, (WIDTH//2-100, HEIGHT//2+50))keys = pygame.key.get_pressed()if keys[pygame.K_r]:game_active = Truescore = 0obstacles = []skier = Skier()pygame.display.update()clock.tick(60)if __name__ == "__main__":main()
代碼的完整度非常好,拷貝圖片素材基本就可以運行了。代碼中有注釋,方便閱讀代碼。他還給出了后續的建議。游戲就是避障,然后接住游戲元素得分。碰到障礙物游戲結束,提示分數,提示按R鍵繼續游戲。邏輯比較簡單。
2.增加功能
在這個基礎上,我對deepseek提了一些要求,或者覺得有問題的讓他解決。總體上都解決了。而且效果我認為滿意。
1.要求增加視頻作為背景。
因為pygame是不支持視頻元素的。我 看看deepseek怎么解決的哦,他比較了opencv和moviepy庫,在小學生這個條件下,給出opencv更適合。這段深度思考部分,我覺得給出moviepy和opencv的比較邏輯有點欠缺。但是實際的思路還是比較清晰的使用第三方庫從視頻中取幀,然后繪制到pygame的surface上。
它還貼心的給出了如何安裝opencv庫,怎么引用素材
2.我讓增加了一個歡迎頁面。
它的思路,通過設置變量,把游戲過程分為歡迎頁,游戲進行中,游戲結束3個狀態。邏輯沒毛病。還貼心的提供修改說明和建議。
3.我發現中文顯示有問題。
提出了問題,deepseek也給出可行的解決方案,我使用了他給的方案2 ,因為自定義字體可以使得游戲畫面更優。還貼心的給出了注意事項。
4.我提出了背景修改意見,歡迎頁面和結束頁面背景是視頻,游戲頁面背景是靜態圖片。
5.提出增加更多游戲元素。
deepseek增加了加速道具,護盾道具,磁鐵道具,減速道具。
總結:
deepseek的代碼輸出能力完全沒有問題,對于需求的分析也很精確。給出的修改提示和建議也非常有用。我的結論,deepseek完全可以作為生產力工具給程序員提供更快的代碼輸出,也可以幫助程序員學習新的知識點,通過項目一點點增加功能打磨代碼。
最后給出我最終的代碼(我沒有加上更多元素)
鏈接: https://github.com/edzjx/snows-deepseek