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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

独一无二的《斗罗大陆》小游戏火爆上线,玩家闯关等你来~(等级有点儿难)

發布時間:2025/3/21 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 独一无二的《斗罗大陆》小游戏火爆上线,玩家闯关等你来~(等级有点儿难) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

大家好!我是梨子同學!

希望大家多多支持我!哈哈

為了感謝每一個關注我的小可愛:💓每篇文章的項目源碼都是無償分享滴💓👇👇👇👇

點這里藍色這行字體自取,需要什么源碼記得說標題名字哈!私信我也可!

很多csdn的功能還在研究中,還有小編的文筆不好勿怪,會慢慢進步跟大家一起學習的

小編也一直在學習編程,如果代碼小程序出現錯誤歡迎大家評論區留言哈!

最后——如果文章有幫助到你,記得“關注”、“點贊”、“評論”三連哦~

正文

對于《斗羅大陸》動畫粉絲而言,春節即將到來,除了蘊藏對新年的憧憬外,還承載著更多期盼。

小編最希望的就是導演能每個星期多更新一集,這部動畫作品帶給粉絲無數難忘的回憶。(當然也

包括我啦~)嗯哼~今天的話也給大家帶來一款斗羅小拼圖游戲給大家。希望大家喜歡~💖💖

一、素材環境

1)準備好相應的素材圖片,這里是隨機到網上尋找的斗羅的背景圖片,記得設置好小程序的屏幕

大小跟素材大小大概一致,能一致更好!不然圖片顯示不全的哈!

2)環境安裝準備好Python版本基本上都可以、小編用的Python3.7、Pycharm2021的,然后寫游

戲的話基本上用的都是Pygame專屬游戲模塊寫的,然后一些自帶的不用管 直接導入即可。

安裝模塊也就是第三方模塊的小編經常用的方法是:pip install +模塊名或者提速需要用到鏡像源,

百度下或者csdn搜下就會出來很多安裝模塊的鏡像源這里就不一一介紹了!

二、代碼演示

完整的源碼展示,主要分為2個py小源碼。

主程序game.py

import os import sys import cfg import random import pygame'''判斷游戲是否結束''' def isGameOver(board, size):assert isinstance(size, int)num_cells = size * sizefor i in range(num_cells-1):if board[i] != i: return Falsereturn True'''將空白Cell左邊的Cell右移到空白Cell位置''' def moveR(board, blank_cell_idx, num_cols):if blank_cell_idx % num_cols == 0: return blank_cell_idxboard[blank_cell_idx-1], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx-1]return blank_cell_idx - 1'''將空白Cell右邊的Cell左移到空白Cell位置''' def moveL(board, blank_cell_idx, num_cols):if (blank_cell_idx+1) % num_cols == 0: return blank_cell_idxboard[blank_cell_idx+1], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx+1]return blank_cell_idx + 1'''將空白Cell上邊的Cell下移到空白Cell位置''' def moveD(board, blank_cell_idx, num_cols):if blank_cell_idx < num_cols: return blank_cell_idxboard[blank_cell_idx-num_cols], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx-num_cols]return blank_cell_idx - num_cols'''將空白Cell下邊的Cell上移到空白Cell位置''' def moveU(board, blank_cell_idx, num_rows, num_cols):if blank_cell_idx >= (num_rows-1) * num_cols: return blank_cell_idxboard[blank_cell_idx+num_cols], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx+num_cols]return blank_cell_idx + num_cols'''獲得打亂的拼圖''' def CreateBoard(num_rows, num_cols, num_cells):board = []for i in range(num_cells): board.append(i)# 去掉右下角那塊blank_cell_idx = num_cells - 1board[blank_cell_idx] = -1for i in range(cfg.NUMRANDOM):# 0: left, 1: right, 2: up, 3: downdirection = random.randint(0, 3)if direction == 0: blank_cell_idx = moveL(board, blank_cell_idx, num_cols)elif direction == 1: blank_cell_idx = moveR(board, blank_cell_idx, num_cols)elif direction == 2: blank_cell_idx = moveU(board, blank_cell_idx, num_rows, num_cols)elif direction == 3: blank_cell_idx = moveD(board, blank_cell_idx, num_cols)return board, blank_cell_idx'''隨機選取一張圖片''' def GetImagePath(rootdir):imagenames = os.listdir(rootdir)assert len(imagenames) > 0return os.path.join(rootdir, random.choice(imagenames))'''顯示游戲結束界面''' def ShowEndInterface(screen, width, height):screen.fill(cfg.BACKGROUNDCOLOR)font = pygame.font.Font(cfg.FONTPATH, width//15)title = font.render('恭喜! 你成功完成了拼圖!', True, (233, 150, 122))rect = title.get_rect()rect.midtop = (width/2, height/2.5)screen.blit(title, rect)pygame.display.update()while True:for event in pygame.event.get():if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):pygame.quit()sys.exit()pygame.display.update()'''顯示游戲開始界面''' def ShowStartInterface(screen, width, height):screen.fill(cfg.BACKGROUNDCOLOR)tfont = pygame.font.Font(cfg.FONTPATH, width//4)cfont = pygame.font.Font(cfg.FONTPATH, width//20)title = tfont.render('斗羅大陸', True, cfg.RED)content1 = cfont.render('按H、M、L開始游戲', True, cfg.BLUE)content2 = cfont.render('H為難度模式, M為中級模式, L簡易模式', True, cfg.BLUE)trect = title.get_rect()trect.midtop = (width/2, height/10)crect1 = content1.get_rect()crect1.midtop = (width/2, height/2.2)crect2 = content2.get_rect()crect2.midtop = (width/2, height/1.8)screen.blit(title, trect)screen.blit(content1, crect1)screen.blit(content2, crect2)while True:for event in pygame.event.get():if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):pygame.quit()sys.exit()elif event.type == pygame.KEYDOWN:if event.key == ord('l'): return 3elif event.key == ord('m'): return 4elif event.key == ord('h'): return 5pygame.display.update()'''主函數''' def main():# 初始化pygame.init()clock = pygame.time.Clock()# 加載圖片game_img_used = pygame.image.load(GetImagePath(cfg.PICTURE_ROOT_DIR))game_img_used = pygame.transform.scale(game_img_used, cfg.SCREENSIZE)game_img_used_rect = game_img_used.get_rect()# 設置窗口screen = pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption('王者拼圖小游戲')# 游戲開始界面size = ShowStartInterface(screen, game_img_used_rect.width, game_img_used_rect.height)assert isinstance(size, int)num_rows, num_cols = size, sizenum_cells = size * size# 計算Cell大小cell_width = game_img_used_rect.width // num_colscell_height = game_img_used_rect.height // num_rows# 避免初始化為原圖while True:game_board, blank_cell_idx = CreateBoard(num_rows, num_cols, num_cells)if not isGameOver(game_board, size):break# 游戲主循環is_running = Truewhile is_running:# --事件捕獲for event in pygame.event.get():# ----退出游戲if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):pygame.quit()sys.exit()# ----鍵盤操作elif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT or event.key == ord('a'):blank_cell_idx = moveL(game_board, blank_cell_idx, num_cols)elif event.key == pygame.K_RIGHT or event.key == ord('d'):blank_cell_idx = moveR(game_board, blank_cell_idx, num_cols)elif event.key == pygame.K_UP or event.key == ord('w'):blank_cell_idx = moveU(game_board, blank_cell_idx, num_rows, num_cols)elif event.key == pygame.K_DOWN or event.key == ord('s'):blank_cell_idx = moveD(game_board, blank_cell_idx, num_cols)# ----鼠標操作elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:x, y = pygame.mouse.get_pos()x_pos = x // cell_widthy_pos = y // cell_heightidx = x_pos + y_pos * num_colsif idx == blank_cell_idx-1:blank_cell_idx = moveR(game_board, blank_cell_idx, num_cols)elif idx == blank_cell_idx+1:blank_cell_idx = moveL(game_board, blank_cell_idx, num_cols)elif idx == blank_cell_idx+num_cols:blank_cell_idx = moveU(game_board, blank_cell_idx, num_rows, num_cols)elif idx == blank_cell_idx-num_cols:blank_cell_idx = moveD(game_board, blank_cell_idx, num_cols)# --判斷游戲是否結束if isGameOver(game_board, size):game_board[blank_cell_idx] = num_cells - 1is_running = False# --更新屏幕screen.fill(cfg.BACKGROUNDCOLOR)for i in range(num_cells):if game_board[i] == -1:continuex_pos = i // num_colsy_pos = i % num_colsrect = pygame.Rect(y_pos*cell_width, x_pos*cell_height, cell_width, cell_height)img_area = pygame.Rect((game_board[i]%num_cols)*cell_width, (game_board[i]//num_cols)*cell_height, cell_width, cell_height)screen.blit(game_img_used, rect, img_area)for i in range(num_cols+1):pygame.draw.line(screen, cfg.BLACK, (i*cell_width, 0), (i*cell_width, game_img_used_rect.height))for i in range(num_rows+1):pygame.draw.line(screen, cfg.BLACK, (0, i*cell_height), (game_img_used_rect.width, i*cell_height))pygame.display.update()clock.tick(cfg.FPS)# 游戲結束界面ShowEndInterface(screen, game_img_used_rect.width, game_img_used_rect.height)

配置文件定義一些屏幕大小等。

'''配置文件''' import os'''屏幕大小''' SCREENSIZE = (1080, 700) '''圖片素材根目錄''' PICTURE_ROOT_DIR = os.path.join(os.getcwd(), 'resources/pictures') '''字體路徑''' FONTPATH = os.path.join(os.getcwd(), 'resources/font/FZSTK.TTF') '''定義一些顏色''' BACKGROUNDCOLOR = (255, 255, 255) RED = (255, 0, 0) BLUE = (0, 0, 255) BLACK = (0, 0, 0) '''FPS''' FPS = 40 '''隨機打亂拼圖次數''' NUMRANDOM = 100

三、效果展示

1)第一組隨機展示唐三原圖VS效果圖

?

?2)第二組隨機展示唐三原圖VS效果?

3)前面都是簡單L的3*3模式,這里開始中級模式

?

?o_o ....好了不多說了,我先攻克中級模式去了......最難的等你們慢慢發掘了~

?總結

嘿,最后來欣賞下小舞的美貌~百看不厭,當然斗羅建模人物都挺精致的。棒棒~

關注小編獲取更多精彩內容!

?制作不易,記得一鍵三連哦!!?如需打包好的源碼+素材免費分享滴!傳送門

?

總結

以上是生活随笔為你收集整理的独一无二的《斗罗大陆》小游戏火爆上线,玩家闯关等你来~(等级有点儿难)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。