溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在Pygame游戲中放置平臺(tái)

發(fā)布時(shí)間:2021-12-04 15:13:04 來(lái)源:億速云 閱讀:144 作者:柒染 欄目:編程語(yǔ)言

怎么在Pygame游戲中放置平臺(tái),很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

在 Pygame 中,平臺(tái)本身也是個(gè)妖精,正像你那個(gè)可玩的妖精。這一點(diǎn)是重要的,因?yàn)橛袀€(gè)是對(duì)象的平臺(tái),可以使你的玩家妖精更容易與之互動(dòng)。

創(chuàng)建平臺(tái)有兩個(gè)主要步驟。首先,你必須給該對(duì)象編寫(xiě)代碼,然后,你必須映射出你希望該對(duì)象出現(xiàn)的位置。

編碼平臺(tái)對(duì)象

要構(gòu)建一個(gè)平臺(tái)對(duì)象,你要?jiǎng)?chuàng)建一個(gè)名為 Platform 的類。它是一個(gè)妖精,正像你的 Player 妖精 一樣,帶有很多相同的屬性。

你的 Platform 類需要知道很多平臺(tái)類型的信息,它應(yīng)該出現(xiàn)在游戲世界的哪里、它應(yīng)該包含的什么圖片等等。這其中很多信息可能還尚不存在,這要看你為你的游戲計(jì)劃了多少,但是沒(méi)有關(guān)系。正如直到移動(dòng)你的游戲角色那篇文章結(jié)束時(shí),你都沒(méi)有告訴你的玩家妖精移動(dòng)速度有多快,你不必事先告訴 Platform 每一件事。

在這系列中你所寫(xiě)的腳本的開(kāi)頭附近,創(chuàng)建一個(gè)新的類。在這個(gè)代碼示例中前三行是用于說(shuō)明上下文,因此在注釋的下面添加代碼:

import pygameimport sysimport os## 新代碼如下: class Platform(pygame.sprite.Sprite):# x location, y location, img width, img height, img file    def __init__(self,xloc,yloc,imgw,imgh,img):    pygame.sprite.Sprite.__init__(self)    self.image = pygame.image.load(os.path.join('images',img)).convert()    self.image.convert_alpha()    self.image.set_colorkey(ALPHA)    self.rect = self.image.get_rect()    self.rect.y = yloc    self.rect.x = xloc

當(dāng)被調(diào)用時(shí),這個(gè)類在某個(gè) X 和 Y 位置上創(chuàng)建一個(gè)屏上對(duì)象,具有某種寬度和高度,并使用某種圖像作為紋理。這與如何在屏上繪制出玩家或敵人非常類似。

平臺(tái)的類型

下一步是繪制出你的平臺(tái)需要出現(xiàn)的地方。

瓷磚方式

實(shí)現(xiàn)平臺(tái)類游戲世界有幾種不同的方法。在最初的橫向滾軸游戲中,例如,馬里奧超級(jí)兄弟和刺猬索尼克,這個(gè)技巧是使用“瓷磚”方式,也就是說(shuō)有幾個(gè)代表地面和各種平臺(tái)的塊,并且這些塊被重復(fù)使用來(lái)制作一個(gè)關(guān)卡。你只能有  8 或 12  種不同的塊,你可以將它們排列在屏幕上來(lái)創(chuàng)建地面、浮動(dòng)的平臺(tái),以及你游戲中需要的一切其它的事物。有人發(fā)現(xiàn)這是制作游戲最容易的方法了,因?yàn)槟阒恍枰谱鳎ɑ蛳螺d)一小組關(guān)卡素材就能創(chuàng)建很多不同的關(guān)卡。然而,這里的代碼需要一點(diǎn)數(shù)學(xué)知識(shí)。

怎么在Pygame游戲中放置平臺(tái)

SuperTux ,一個(gè)基于瓷磚的電腦游戲。

手工繪制方式

另一種方法是將每個(gè)素材作為一個(gè)整體圖像。如果你喜歡為游戲世界創(chuàng)建素材,那你會(huì)在用圖形應(yīng)用程序構(gòu)建游戲世界的每個(gè)部分上花費(fèi)很多時(shí)間。這種方法不需要太多的數(shù)學(xué)知識(shí),因?yàn)樗械钠脚_(tái)都是整體的、完整的對(duì)象,你只需要告訴 Python 將它們放在屏幕上的什么位置。

每種方法都有優(yōu)勢(shì)和劣勢(shì),并且根據(jù)于你選擇使用的方式,代碼稍有不同。我將覆蓋這兩方面,所以你可以在你的工程中使用一種或另一種,甚至兩者的混合。

關(guān)卡繪制

總的來(lái)說(shuō),繪制你的游戲世界是關(guān)卡設(shè)計(jì)和游戲編程中的一個(gè)重要的部分。這需要數(shù)學(xué)知識(shí),但是沒(méi)有什么太難的,而且 Python 擅長(zhǎng)數(shù)學(xué),它會(huì)有所幫助。

你也許發(fā)現(xiàn)先在紙張上設(shè)計(jì)是有用的。拿一張表格紙,并繪制一個(gè)方框來(lái)代表你的游戲窗體。在方框中繪制平臺(tái),并標(biāo)記其每一個(gè)平臺(tái)的 X 和 Y  坐標(biāo),以及它的寬度和高度。在方框中的實(shí)際位置沒(méi)有必要是精確的,你只要保持?jǐn)?shù)字合理即可。譬如,假設(shè)你的屏幕是 720  像素寬,那么你不能在一個(gè)屏幕上放 8 塊 100 像素的平臺(tái)。

當(dāng)然,不是你游戲中的所有平臺(tái)都必須容納在一個(gè)屏幕大小的方框里,因?yàn)槟愕挠螒驅(qū)㈦S著你的玩家行走而滾動(dòng)。所以,可以繼續(xù)繪制你的游戲世界到***屏幕的右側(cè),直到關(guān)卡結(jié)束。

如果你更喜歡精確一點(diǎn),你可以使用方格紙。當(dāng)設(shè)計(jì)一個(gè)瓷磚類的游戲時(shí),這是特別有用的,因?yàn)槊總€(gè)方格可以代表一個(gè)瓷磚。

怎么在Pygame游戲中放置平臺(tái)

一個(gè)關(guān)卡地圖示例。

坐標(biāo)系

你可能已經(jīng)在學(xué)校中學(xué)習(xí)過(guò)笛卡爾坐標(biāo)系。你學(xué)習(xí)的東西也適用于 Pygame,除了在 Pygame 中你的游戲世界的坐標(biāo)系的原點(diǎn) 0,0 是放置在你的屏幕的左上角而不是在中間,是你在地理課上用過(guò)的坐標(biāo)是在中間的。

怎么在Pygame游戲中放置平臺(tái)

在 Pygame 中的坐標(biāo)示例。

X 軸起始于最左邊的 0,向右***增加。Y 軸起始于屏幕頂部的 0,向下延伸。

圖片大小

如果你不知道你的玩家、敵人、平臺(tái)是多大的,繪制出一個(gè)游戲世界是毫無(wú)意義的。你可以在圖形程序中找到你的平臺(tái)或瓷磚的尺寸。例如在 Krita 中,單擊“圖像”菜單,并選擇“屬性”。你可以在“屬性”窗口的最頂部處找到它的尺寸。

另外,你也可以創(chuàng)建一個(gè)簡(jiǎn)單的 Python 腳本來(lái)告訴你的一個(gè)圖像的尺寸。打開(kāi)一個(gè)新的文本文件,并輸入這些代碼到其中:

#!/usr/bin/env python3 from PIL import Imageimport os.pathimport sys if len(sys.argv) > 1:    print(sys.argv[1])else:    sys.exit('Syntax: identify.py [filename]') pic = sys.argv[1]dim = Image.open(pic)X   = dim.size[0]Y   = dim.size[1] print(X,Y)

保存該文本文件為 identify.py。

要使用這個(gè)腳本,你必須安裝一些額外的 Python 模塊,它們包含了這個(gè)腳本中新使用的關(guān)鍵字:

$ pip3 install Pillow --user

一旦安裝好,在你游戲工程目錄中運(yùn)行這個(gè)腳本:

$ python3 ./identify.py images/ground.png(1080, 97)

在這個(gè)示例中,地面平臺(tái)的圖形的大小是 1080 像素寬和 97 像素高。

平臺(tái)塊

如果你選擇單獨(dú)地繪制每個(gè)素材,你必須創(chuàng)建想要插入到你的游戲世界中的幾個(gè)平臺(tái)和其它元素,每個(gè)素材都放在它自己的文件中。換句話說(shuō),你應(yīng)該讓每個(gè)素材都有一個(gè)文件,像這樣:

怎么在Pygame游戲中放置平臺(tái)

每個(gè)對(duì)象一個(gè)圖形文件。

你可以按照你希望的次數(shù)重復(fù)使用每個(gè)平臺(tái),只要確保每個(gè)文件僅包含一個(gè)平臺(tái)。你不能使用一個(gè)文件包含全部素材,像這樣:

怎么在Pygame游戲中放置平臺(tái)

你的關(guān)卡不能是一個(gè)圖形文件。

當(dāng)你完成時(shí),你可能希望你的游戲看起來(lái)像這樣,但是如果你在一個(gè)大文件中創(chuàng)建你的關(guān)卡,你就沒(méi)有方法從背景中區(qū)分出一個(gè)平臺(tái),因此,要么把對(duì)象繪制在它們自己的文件中,要么從一個(gè)更大的文件中裁剪出它們,并保存為單獨(dú)的副本。

注意: 如同你的其它素材,你可以使用 GIMP、Krita、MyPaint,或 Inkscape 來(lái)創(chuàng)建你的游戲素材。

平臺(tái)出現(xiàn)在每個(gè)關(guān)卡開(kāi)始的屏幕上,因此你必須在你的 Level 類中添加一個(gè) platform 函數(shù)。在這里特例是地面平臺(tái),它重要到應(yīng)該擁有它自己的一個(gè)組。通過(guò)把地面看作一組特殊類型的平臺(tái),你可以選擇它是否滾動(dòng),或它上面是否可以站立,而其它平臺(tái)可以漂浮在它上面。這取決于你。

添加這兩個(gè)函數(shù)到你的 Level 類:

def ground(lvl,x,y,w,h):    ground_list = pygame.sprite.Group()    if lvl == 1:        ground = Platform(x,y,w,h,'block-ground.png')        ground_list.add(ground)     if lvl == 2:        print("Level " + str(lvl) )     return ground_list def platform( lvl ):    plat_list = pygame.sprite.Group()    if lvl == 1:        plat = Platform(200, worldy-97-128, 285,67,'block-big.png')        plat_list.add(plat)        plat = Platform(500, worldy-97-320, 197,54,'block-small.png')        plat_list.add(plat)    if lvl == 2:        print("Level " + str(lvl) )           return plat_list

ground 函數(shù)需要一個(gè) X 和 Y 位置,以便 Pygame 知道在哪里放置地面平臺(tái)。它也需要知道平臺(tái)的寬度和高度,這樣 Pygame 知道地面延伸到每個(gè)方向有多遠(yuǎn)。該函數(shù)使用你的 Platform 類來(lái)生成一個(gè)屏上對(duì)象,然后將這個(gè)對(duì)象添加到 ground_list 組。

platform 函數(shù)本質(zhì)上是相同的,除了其有更多的平臺(tái)。在這個(gè)示例中,僅有兩個(gè)平臺(tái),但是你可以想有多少就有多少。在進(jìn)入一個(gè)平臺(tái)后,在列出另一個(gè)前你必須添加它到 plat_list 中。如果你不添加平臺(tái)到組中,那么它將不出現(xiàn)在你的游戲中。

提示: 很難想象你的游戲世界的 0 是在頂部,因?yàn)樵谡鎸?shí)世界中發(fā)生的情況是相反的;當(dāng)估計(jì)你有多高時(shí),你不會(huì)從上往下測(cè)量你自己,而是從腳到頭頂來(lái)測(cè)量。

如果對(duì)你來(lái)說(shuō)從“地面”上來(lái)構(gòu)建你的游戲世界更容易,將 Y 軸值表示為負(fù)數(shù)可能有幫助。例如,你知道你的游戲世界的底部是 worldy 的值。因此 worldy  減去地面的高度(在這個(gè)示例中是 97)是你的玩家正常站立的位置。如果你的角色是 64 像素高,那么地面減去 128  正好是你的玩家的兩倍高。事實(shí)上,一個(gè)放置在 128 像素處平臺(tái)大約是相對(duì)于你的玩家的兩層樓高度。一個(gè)平臺(tái)在 -320 處比三層樓更高。等等。

正像你現(xiàn)在可能所知的,如果你不使用它們,你的類和函數(shù)是沒(méi)有價(jià)值的。添加這些代碼到你的設(shè)置部分(***行只是上下文,所以添加***兩行):

enemy_list  = Level.bad( 1, eloc )ground_list = Level.ground( 1,0,worldy-97,1080,97 )plat_list   = Level.platform( 1 )

并把這些行加到你的主循環(huán)(再一次,***行僅用于上下文):

enemy_list.draw(world)  # 刷新敵人ground_list.draw(world)  # 刷新地面plat_list.draw(world)  # 刷新平臺(tái)

瓷磚平臺(tái)

瓷磚類游戲世界更容易制作,因?yàn)槟阒恍枰谇懊胬L制一些塊,就能在游戲中一再使用它們創(chuàng)建每個(gè)平臺(tái)。在像 OpenGameArt.org 這樣的網(wǎng)站上甚至有一套瓷磚供你來(lái)使用。

Platform 類與在前面部分中的類是相同的。

groundplatformLevel 類中,然而,必須使用循環(huán)來(lái)計(jì)算使用多少塊來(lái)創(chuàng)建每個(gè)平臺(tái)。

如果你打算在你的游戲世界中有一個(gè)堅(jiān)固的地面,這種地面是很簡(jiǎn)單的。你只需要從整個(gè)窗口的一邊到另一邊“克隆”你的地面瓷磚。例如,你可以創(chuàng)建一個(gè)  X 和 Y 值的列表來(lái)規(guī)定每個(gè)瓷磚應(yīng)該放置的位置,然后使用一個(gè)循環(huán)來(lái)獲取每個(gè)值并繪制每一個(gè)瓷磚。這僅是一個(gè)示例,所以不要添加這到你的代碼:

# Do not add this to your codegloc = [0,656,64,656,128,656,192,656,256,656,320,656,384,656]

不過(guò),如果你仔細(xì)看,你可以看到所有的 Y 值是相同的,X 值以 64 的增量不斷地增加 —— 這就是瓷磚的大小。這種重復(fù)是精確地,是計(jì)算機(jī)擅長(zhǎng)的,因此你可以使用一點(diǎn)數(shù)學(xué)邏輯來(lái)讓計(jì)算機(jī)為你做所有的計(jì)算:

添加這些到你的腳本的設(shè)置部分:

gloc = []tx   = 64ty   = 64 i=0while i <= (worldx/tx)+tx:    gloc.append(i*tx)    i=i+1 ground_list = Level.ground( 1,gloc,tx,ty )

現(xiàn)在,不管你的窗口的大小,Python 會(huì)通過(guò)瓷磚的寬度分割游戲世界的寬度,并創(chuàng)建一個(gè)數(shù)組列表列出每個(gè) X 值。這里不計(jì)算 Y 值,因?yàn)樵谄降牡孛嫔线@個(gè)從不會(huì)變化。

為了在一個(gè)函數(shù)中使用數(shù)組,使用一個(gè) while 循環(huán),查看每個(gè)條目并在適當(dāng)?shù)奈恢锰砑右粋€(gè)地面瓷磚:

def ground(lvl,gloc,tx,ty):    ground_list = pygame.sprite.Group()    i=0    if lvl == 1:        while i < len(gloc):            ground = Platform(gloc[i],worldy-ty,tx,ty,'tile-ground.png')            ground_list.add(ground)            i=i+1     if lvl == 2:        print("Level " + str(lvl) )     return ground_list

除了 while 循環(huán),這幾乎與在上面一部分中提供的瓷磚類平臺(tái)的 ground 函數(shù)的代碼相同。

對(duì)于移動(dòng)的平臺(tái),原理是相似的,但是這里有一些技巧可以使它簡(jiǎn)單。

你可以通過(guò)它的起始像素(它的 X 值)、距地面的高度(它的 Y 值)、繪制多少瓷磚來(lái)定義一個(gè)平臺(tái),而不是通過(guò)像素繪制每個(gè)平臺(tái)。這樣,你不必操心每個(gè)平臺(tái)的寬度和高度。

這個(gè)技巧的邏輯有一點(diǎn)復(fù)雜,因此請(qǐng)仔細(xì)復(fù)制這些代碼。有一個(gè) while 循環(huán)嵌套在另一個(gè) while 循環(huán)的內(nèi)部,因?yàn)檫@個(gè)函數(shù)必須考慮每個(gè)數(shù)組項(xiàng)的三個(gè)值來(lái)成功地建造一個(gè)完整的平臺(tái)。在這個(gè)示例中,這里僅有三個(gè)平臺(tái)以 ploc.append 語(yǔ)句定義,但是你的游戲可能需要更多,因此你需要多少就定義多少。當(dāng)然,有一些不會(huì)出現(xiàn),因?yàn)樗鼈冞h(yuǎn)在屏幕外,但是一旦當(dāng)你進(jìn)行滾動(dòng)時(shí),它們將呈現(xiàn)在眼前。

def platform(lvl,tx,ty):    plat_list = pygame.sprite.Group()    ploc = []    i=0    if lvl == 1:        ploc.append((200,worldy-ty-128,3))        ploc.append((300,worldy-ty-256,3))        ploc.append((500,worldy-ty-128,4))        while i < len(ploc):            j=0            while j <= ploc[i][2]:                plat = Platform((ploc[i][0]+(j*tx)),ploc[i][1],tx,ty,'tile.png')                plat_list.add(plat)                j=j+1            print('run' + str(i) + str(ploc[i]))            i=i+1               if lvl == 2:        print("Level " + str(lvl) )     return plat_list

要讓這些平臺(tái)出現(xiàn)在你的游戲世界,它們必須出現(xiàn)在你的主循環(huán)中。如果你還沒(méi)有這樣做,添加這些行到你的主循環(huán)(再一次,***行僅被用于上下文)中:

        enemy_list.draw(world)  # 刷新敵人        ground_list.draw(world) # 刷新地面        plat_list.draw(world)   # 刷新平臺(tái)

啟動(dòng)你的游戲,根據(jù)需要調(diào)整你的平臺(tái)的放置位置。如果你看不見(jiàn)屏幕外產(chǎn)生的平臺(tái),不要擔(dān)心;你不久后就可以修復(fù)它。

到目前為止,這是游戲的圖片和代碼:

怎么在Pygame游戲中放置平臺(tái)

到目前為止,我們的 Pygame 平臺(tái)。

#!/usr/bin/env python3# draw a world# add a player and player control# add player movement# add enemy and basic collision# add platform # GNU All-Permissive License# Copying and distribution of this file, with or without modification,# are permitted in any medium without royalty provided the copyright# notice and this notice are preserved.  This file is offered as-is,# without any warranty. import pygameimport sysimport os '''Objects''' class Platform(pygame.sprite.Sprite):    # x location, y location, img width, img height, img file        def __init__(self,xloc,yloc,imgw,imgh,img):        pygame.sprite.Sprite.__init__(self)        self.image = pygame.image.load(os.path.join('images',img)).convert()        self.image.convert_alpha()        self.rect = self.image.get_rect()        self.rect.y = yloc        self.rect.x = xloc class Player(pygame.sprite.Sprite):    '''    Spawn a player    '''    def __init__(self):        pygame.sprite.Sprite.__init__(self)        self.movex = 0        self.movey = 0        self.frame = 0        self.health = 10        self.score = 1        self.images = []        for i in range(1,9):            img = pygame.image.load(os.path.join('images','hero' + str(i) + '.png')).convert()            img.convert_alpha()            img.set_colorkey(ALPHA)            self.images.append(img)            self.image = self.images[0]            self.rect  = self.image.get_rect()     def control(self,x,y):        '''        control player movement        '''        self.movex += x        self.movey += y     def update(self):        '''        Update sprite position        '''         self.rect.x = self.rect.x + self.movex        self.rect.y = self.rect.y + self.movey         # moving left        if self.movex < 0:            self.frame += 1            if self.frame > ani*3:                self.frame = 0            self.image = self.images[self.frame//ani]         # moving right        if self.movex > 0:            self.frame += 1            if self.frame > ani*3:                self.frame = 0            self.image = self.images[(self.frame//ani)+4]         # collisions        enemy_hit_list = pygame.sprite.spritecollide(self, enemy_list, False)        for enemy in enemy_hit_list:            self.health -= 1            print(self.health)         ground_hit_list = pygame.sprite.spritecollide(self, ground_list, False)        for g in ground_hit_list:            self.health -= 1            print(self.health)  class Enemy(pygame.sprite.Sprite):    '''    Spawn an enemy    '''    def __init__(self,x,y,img):        pygame.sprite.Sprite.__init__(self)        self.image = pygame.image.load(os.path.join('images',img))        #self.image.convert_alpha()        #self.image.set_colorkey(ALPHA)        self.rect = self.image.get_rect()        self.rect.x = x        self.rect.y = y        self.counter = 0     def move(self):        '''        enemy movement        '''        distance = 80        speed = 8         if self.counter >= 0 and self.counter <= distance:            self.rect.x += speed        elif self.counter >= distance and self.counter <= distance*2:            self.rect.x -= speed        else:            self.counter = 0         self.counter += 1 class Level():    def bad(lvl,eloc):        if lvl == 1:            enemy = Enemy(eloc[0],eloc[1],'yeti.png') # spawn enemy            enemy_list = pygame.sprite.Group() # create enemy group            enemy_list.add(enemy)              # add enemy to group         if lvl == 2:            print("Level " + str(lvl) )         return enemy_list     def loot(lvl,lloc):        print(lvl)     def ground(lvl,gloc,tx,ty):        ground_list = pygame.sprite.Group()        i=0        if lvl == 1:            while i < len(gloc):                print("blockgen:" + str(i))                ground = Platform(gloc[i],worldy-ty,tx,ty,'ground.png')                ground_list.add(ground)                i=i+1         if lvl == 2:            print("Level " + str(lvl) )         return ground_list '''Setup'''worldx = 960worldy = 720 fps = 40 # frame rateani = 4  # animation cyclesclock = pygame.time.Clock()pygame.init()main = True BLUE  = (25,25,200)BLACK = (23,23,23 )WHITE = (254,254,254)ALPHA = (0,255,0) world = pygame.display.set_mode([worldx,worldy])backdrop = pygame.image.load(os.path.join('images','stage.png')).convert()backdropbox = world.get_rect()player = Player() # spawn playerplayer.rect.x = 0player.rect.y = 0player_list = pygame.sprite.Group()player_list.add(player)steps = 10 # how fast to move eloc = []eloc = [200,20]gloc = []#gloc = [0,630,64,630,128,630,192,630,256,630,320,630,384,630]tx = 64 #tile sizety = 64 #tile size i=0while i <= (worldx/tx)+tx:    gloc.append(i*tx)    i=i+1    print("block: " + str(i)) enemy_list = Level.bad( 1, eloc )ground_list = Level.ground( 1,gloc,tx,ty ) '''Main loop'''while main == True:    for event in pygame.event.get():        if event.type == pygame.QUIT:            pygame.quit(); sys.exit()            main = False         if event.type == pygame.KEYDOWN:            if event.key == pygame.K_LEFT or event.key == ord('a'):                player.control(-steps,0)            if event.key == pygame.K_RIGHT or event.key == ord('d'):                player.control(steps,0)            if event.key == pygame.K_UP or event.key == ord('w'):                print('jump')         if event.type == pygame.KEYUP:            if event.key == pygame.K_LEFT or event.key == ord('a'):                player.control(steps,0)            if event.key == pygame.K_RIGHT or event.key == ord('d'):                player.control(-steps,0)            if event.key == ord('q'):                pygame.quit()                sys.exit()                main = False #    world.fill(BLACK)    world.blit(backdrop, backdropbox)    player.update()    player_list.draw(world) #refresh player position    enemy_list.draw(world)  # refresh enemies    ground_list.draw(world)  # refresh enemies    for e in enemy_list:        e.move()    pygame.display.flip()    clock.tick(fps)

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI