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

Python 一步一步教你用pyglet制作漢諾塔游戲(終篇)

這篇具有很好參考價(jià)值的文章主要介紹了Python 一步一步教你用pyglet制作漢諾塔游戲(終篇)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?Python 一步一步教你用pyglet制作漢諾塔游戲(終篇),Python,python,pyglet

目錄

漢諾塔游戲

完整游戲

后期展望


漢諾塔游戲

漢諾塔(Tower of Hanoi),是一個(gè)源于印度古老傳說的益智玩具。這個(gè)傳說講述了大梵天創(chuàng)造世界的時(shí)候,他做了三根金剛石柱子,并在其中一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門將這些圓盤從下面開始按大小順序重新擺放在另一根柱子上,并規(guī)定在小圓盤上不能放大圓盤,同時(shí)在三根柱子之間一次只能移動(dòng)一個(gè)圓盤。當(dāng)盤子的數(shù)量增加時(shí),移動(dòng)步驟的數(shù)量會(huì)呈指數(shù)級增長,圓盤數(shù)為n時(shí),總步驟數(shù)steps為2^n - 1。

n = 64, steps = 2^64 - 1 = 18446744073709551616 ≈ 1.845 x 10^19

漢諾塔問題是一個(gè)遞歸問題,也可以使用非遞歸法來解決,例如使用棧來模擬遞歸過程。這個(gè)問題不僅是一個(gè)數(shù)學(xué)和邏輯問題,也是一個(gè)很好的教學(xué)工具,可以用來教授遞歸、算法和邏輯思考等概念。同時(shí),漢諾塔游戲也具有一定的娛樂性,人們可以通過解決不同規(guī)模的漢諾塔問題來挑戰(zhàn)自己的智力和耐心。

本篇接著上期講下去,前2篇的鏈接地址:

Python 一步一步教你用pyglet制作漢諾塔游戲(續(xù))-CSDN博客

Python 一步一步教你用pyglet制作漢諾塔游戲-CSDN博客


完整游戲

前2期代碼的基礎(chǔ)上,添加了完整的提示功能,一個(gè)漢諾塔游戲作品終于完工了,效果如下:

Python 一步一步教你用pyglet制作漢諾塔游戲(終篇),Python,python,pyglet

信息提示功能都放在了鼠標(biāo)事件中:

@window.event
def on_mouse_press(x, y, dx, dy):
? ? global xy, hanns, gamecompleted
? ? if not hanns.success():
? ? ? ? pole = hanns.on_mouse_over(x, y)
? ? ? ? if pole is not None:
? ? ? ? ? ? xy.append(pole)
? ? ? ? ? ? if len(xy)==1:
? ? ? ? ? ? ? ? hanns.setdiskcolor(xy[0], (255,0,0))
? ? ? ? ? ? ? ? if not hanns.array[pole]:
? ? ? ? ? ? ? ? ? ? hanns.setdiskcolor(xy[0])
? ? ? ? ? ? ? ? ? ? xy.pop()
? ? ? ? ? ? ? ? ? ? return
? ? ? ? if len(xy)==2:
? ? ? ? ? ? if xy[0]!=xy[1]:
? ? ? ? ? ? ? ? info = hanns.move(*xy)
? ? ? ? ? ? ? ? hanns.setdiskcolor(xy[0])
? ? ? ? ? ? ? ? if info is False:
? ? ? ? ? ? ? ? ? ? info1.text = '起始圓盤大于目標(biāo)位置的圓盤'
? ? ? ? ? ? ? ? elif info is None:
? ? ? ? ? ? ? ? ? ? info1.text = '所選起始位置的塔架不能為空'
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? info1.text = f'{hanns.order-hanns.array[xy[1]][-1]}號圓盤從{xy[0]+1}號塔架移動(dòng)到{xy[1]+1}號塔架'
? ? ? ? ? ? hanns.setdiskcolor(xy[0])
? ? ? ? ? ? xy.clear()
? ? ? ? ? ? info2.text = f'當(dāng)前層數(shù):{hanns.order}\t最佳步數(shù):{2**hanns.order-1}\t當(dāng)前步數(shù):{hanns.steps}'
? ? ? ? if hanns.success():
? ? ? ? ? ? if hanns.order<24:
? ? ? ? ? ? ? ? info1.text = f'恭喜您完成 {hanns.order} 層漢諾塔!任意點(diǎn)擊層數(shù)加一!'
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? info1.text = f'太棒了!您已完成 {hanns.order} 層漢諾塔,游戲結(jié)束!'
? ? ? ? ? ? ? ? gamecompleted = True
? ? ? ? ? ? ? ? return
? ? elif not gamecompleted:
? ? ? ? hanns = Hann(window.width/2, 120, hanns.order+1)
? ? ? ? info1.text = f' {hanns.order} 層漢諾塔,游戲開始!'
? ? ? ? info2.text = f'當(dāng)前層數(shù):{hanns.order}\t最佳步數(shù):{2**hanns.order-1}\t當(dāng)前步數(shù):{hanns.steps}'

Hann 類中增加一個(gè)改色的方法,用于標(biāo)注被點(diǎn)擊的要移動(dòng)的源塔架:

? def setdiskcolor(self, n, color=Color[0]):
? ? ? ? self.disk[n].cir1.color = color
? ? ? ? self.disk[n].cir2.color = color
? ? ? ? self.disk[n].rect.color = color

完整代碼:?

import pyglet
 
window = pyglet.window.Window(800, 500, caption='漢諾塔')
pyglet.gl.glClearColor(1, 1, 1, 1)
batch = pyglet.graphics.Batch()
 
Color = (182,128,18),(25,65,160),(56,170,210),(16,188,78),(20,240,20),(240,240,20),(255,128,20),(240,20,20),(245,60,138)
 
class Disk:
    def __init__(self, x, y, color=(0,0,0), width=200, height=20):
        self.cir1 = pyglet.shapes.Circle(x+width/2-height/2, y, radius=height/2, color=color, batch=batch)
        self.cir2 = pyglet.shapes.Circle(x-width/2+height/2, y, radius=height/2, color=color, batch=batch)
        self.rect = pyglet.shapes.Rectangle(x-width/2+height/2, y-height/2, width-height, height, color=color, batch=batch)
    def move(self, dx, dy):
        self.cir1.x += dx; self.cir1.y += dy
        self.cir2.x += dx; self.cir2.y += dy
        self.rect.x += dx; self.rect.y += dy
 
class Hann:
    def __init__(self, x, y, order=2, space=250, thickness=20, width=200, height=300):
        assert(order>1)
        self.pole = [pyglet.shapes.Line(x-i*space, y, x-i*space, y+height, width=thickness, color=Color[0], batch=batch) for i in range(-1,2)]
        self.disk = [Disk(x+i*space, y, color=Color[0], width=width+thickness, height=thickness) for i in range(-1,2)]
        self.x, self.y = x, y
        self.order = order
        self.space = space
        self.thickness = thickness
        self.width = width
        self.poleheight = height
        self.beadheight = (height-thickness*2)/order
        self.step = (width-thickness)/(order+1)
        self.steps = 0
        self.macro = []
        coordinates = [(self.x-space, self.y+(i+1)*self.beadheight-(self.beadheight-thickness)/2) for i in range(order)]
        self.beads = [Disk(*xy, Color[i%8+1], width=self.width-i*self.step, height=self.beadheight) for i,xy in enumerate(coordinates)]
        self.array = [[*range(order)], [], []]
    def move(self, pole1, pole2):
        if self.array[pole1]:
            bead = self.array[pole1].pop()
            if self.array[pole2] and bead<self.array[pole2][-1]:
                self.array[pole1].append(bead)
                return False
        else:
            return None
        self.beads[bead].move((pole2-pole1)*self.space, (len(self.array[pole2])-len(self.array[pole1]))*self.beadheight)
        self.array[pole2].append(bead)
        self.steps += 1
        self.macro.append((pole1, pole2))
        return True
    def setdiskcolor(self, n, color=Color[0]):
        self.disk[n].cir1.color = color
        self.disk[n].cir2.color = color
        self.disk[n].rect.color = color
    def on_mouse_over(self, x, y):
        for i in range(-1,2):
            if hanns.x-hanns.width/2 < x-i*hanns.space < hanns.x+hanns.width/2 and hanns.y-hanns.thickness/2 < y < hanns.y+hanns.poleheight:
                return i+1
    def success(self):
        return len(self.array[2]) == self.order
 
@window.event
def on_draw():
    window.clear()
    batch.draw()
 
@window.event
def on_mouse_press(x, y, dx, dy):
    global xy, hanns, gamecompleted
    if not hanns.success():
        pole = hanns.on_mouse_over(x, y)
        if pole is not None:
            xy.append(pole)
            if len(xy)==1:
                hanns.setdiskcolor(xy[0], (255,0,0))
                if not hanns.array[pole]:
                    hanns.setdiskcolor(xy[0])
                    xy.pop()
                    return
        if len(xy)==2:
            if xy[0]!=xy[1]:
                info = hanns.move(*xy)
                hanns.setdiskcolor(xy[0])
                if info is False:
                    info1.text = '起始圓盤大于目標(biāo)位置的圓盤'
                elif info is None:
                    info1.text = '所選起始位置的塔架不能為空'
                else:
                    info1.text = f'{hanns.order-hanns.array[xy[1]][-1]}號圓盤從{xy[0]+1}號塔架移動(dòng)到{xy[1]+1}號塔架'
            hanns.setdiskcolor(xy[0])
            xy.clear()
            info2.text = f'當(dāng)前層數(shù):{hanns.order}\t最佳步數(shù):{2**hanns.order-1}\t當(dāng)前步數(shù):{hanns.steps}'
        if hanns.success():
            if hanns.order<24:
                info1.text = f'恭喜您完成 {hanns.order} 層漢諾塔!任意點(diǎn)擊層數(shù)加一!'
            else:
                info1.text = f'太棒了!您已完成 {hanns.order} 層漢諾塔,游戲結(jié)束!'
                gamecompleted = True
                return
    elif not gamecompleted:
        hanns = Hann(window.width/2, 120, hanns.order+1)
        info1.text = f' {hanns.order} 層漢諾塔,游戲開始!'
        info2.text = f'當(dāng)前層數(shù):{hanns.order}\t最佳步數(shù):{2**hanns.order-1}\t當(dāng)前步數(shù):{hanns.steps}'
 
xy = []
order = 2
hanns = Hann(window.width/2, 120, order)
info1 = pyglet.text.Label('操作方法:鼠標(biāo)先后點(diǎn)擊起始和目標(biāo)位置就能移動(dòng)圓盤', font_size=21, color=(0,0,0,255), x=window.width/2, y=50, anchor_x='center', batch=batch)
info2 = pyglet.text.Label(f'當(dāng)前層數(shù):{order}\t最佳步數(shù):{2**order-1}\t當(dāng)前步數(shù):0', font_size=18, color=(0,0,0,255), x=80, y=450, batch=batch)
gamecompleted = False

pyglet.app.run()

后期展望

之后有空再優(yōu)化一下代碼,再添加上音效、回放等功能,游戲效果會(huì)理想些。還能把上期的自動(dòng)演示功能也加進(jìn)去,就更加完美了。


本文完,以下僅為湊字?jǐn)?shù),請忽略:

自動(dòng)演示功能,即把以下遞歸函數(shù)的結(jié)果展現(xiàn)出來即可:

def hanoi(n, start, mid, end, moves=None):
? ? if moves is None:
? ? ? ? moves = []
? ? if n == 1:
? ? ? ? moves.append((start, end))
? ? else:
? ? ? ? hanoi(n-1, start, end, mid, moves)
? ? ? ? moves.append((start, end))
? ? ? ? hanoi(n-1, mid, start, end, moves)
? ? return moves
?
for order in (4,7,8):
? ? moves = hanoi(order, 0, 1, 2)
? ? print(len(moves)==2**order-1)
? ? print(moves)

運(yùn)行結(jié)果:

True
[(0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2)]
True
[(0, 2), (0, 1), (2, 1), (0, 2), (1, 0), (1, 2), (0, 2), (0, 1), (2, 1), (2, 0), (1, 0), (2, 1), (0, 2), (0, 1), (2, 1), (0, 2), (1, 0), (1, 2), (0, 2), (1, 0), (2, 1), (2, 0), (1, 0), (1, 2), (0, 2), (0, 1), (2, 1), (0, 2), (1, 0), (1, 2), (0, 2), (0, 1), (2, 1), (2, 0), (1, 0), (2, 1), (0, 2), (0, 1), (2, 1), (2, 0), (1, 0), (1, 2), (0, 2), (1, 0), (2, 1), (2, 0), (1, 0), (2, 1), (0, 2), (0, 1), (2, 1), (0, 2), (1, 0), (1, 2), (0, 2), (0, 1), (2, 1), (2, 0), (1, 0), (2, 1), (0, 2), (0, 1), (2, 1), (0, 2), (1, 0), (1, 2), (0, 2), (1, 0), (2, 1), (2, 0), (1, 0), (1, 2), (0, 2), (0, 1), (2, 1), (0, 2), (1, 0), (1, 2), (0, 2), (1, 0), (2, 1), (2, 0), (1, 0), (2, 1), (0, 2), (0, 1), (2, 1), (2, 0), (1, 0), (1, 2), (0, 2), (1, 0), (2, 1), (2, 0), (1, 0), (1, 2), (0, 2), (0, 1), (2, 1), (0, 2), (1, 0), (1, 2), (0, 2), (0, 1), (2, 1), (2, 0), (1, 0), (2, 1), (0, 2), (0, 1), (2, 1), (0, 2), (1, 0), (1, 2), (0, 2), (1, 0), (2, 1), (2, 0), (1, 0), (1, 2), (0, 2), (0, 1), (2, 1), (0, 2), (1, 0), (1, 2), (0, 2)]
True
[(0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (2, 1), (0, 1), (2, 0), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2), (0, 1), (2, 0), (2, 1), (0, 1), (0, 2), (1, 2), (1, 0), (2, 0), (1, 2), (0, 1), (0, 2), (1, 2)]文章來源地址http://www.zghlxwxcb.cn/news/detail-840218.html

到了這里,關(guān)于Python 一步一步教你用pyglet制作漢諾塔游戲(終篇)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Python 一步一步教你用pyglet制作可播放音樂的揚(yáng)聲器類

    Python 一步一步教你用pyglet制作可播放音樂的揚(yáng)聲器類

    目錄 揚(yáng)聲器類 1. 繪制喇叭 2. 揚(yáng)聲器類 3. 禁音狀態(tài)? 4. 設(shè)置狀態(tài) 5. 切換狀態(tài) 6. 播放音樂 本篇將教你用pyglet畫一個(gè)小喇叭,如上圖。這里要用到pyglety庫shapes模塊中的圓弧Arc和多邊形Pylygon畫出這個(gè)揚(yáng)聲器的圖片: Arc(x, y, radius, segments=None, angle=6.283185307179586, start_angle=0, closed=

    2024年03月10日
    瀏覽(36)
  • Python 一步一步教你用pyglet仿制鴻蒙系統(tǒng)里的時(shí)鐘

    Python 一步一步教你用pyglet仿制鴻蒙系統(tǒng)里的時(shí)鐘

    目錄 鴻蒙時(shí)鐘 1. 繪制圓盤 2. 創(chuàng)建表類 3. 繪制刻度 4. 刻度數(shù)值 5. 添加指針 6. 轉(zhuǎn)動(dòng)指針 7. 聯(lián)動(dòng)時(shí)間 8. 時(shí)鐘走動(dòng) 本篇將用python pyglet庫復(fù)刻華為手機(jī)鴻蒙系統(tǒng)鬧鐘程序的時(shí)鐘,先在上圖中抓取出時(shí)分秒針及刻度、表盤的顏色RGB值: bHour = (42, 43, 48, 255) bMinute = (70, 71, 75, 255) rSe

    2024年03月12日
    瀏覽(29)
  • FastAPI + NGINX + Gunicorn:一步一步教你部署一個(gè)高性能的Python網(wǎng)頁應(yīng)用

    FastAPI + NGINX + Gunicorn:一步一步教你部署一個(gè)高性能的Python網(wǎng)頁應(yīng)用

    部署一個(gè) FastAPI 應(yīng)用到你的服務(wù)器是一項(xiàng)復(fù)雜的任務(wù)。如果你對 NGINX 、 Gunicorn 和 Uvicorn 這些技術(shù)不熟悉,可能會(huì)浪費(fèi)大量的時(shí)間。如果你是剛接觸 Python 語言不久或者希望利用 Python 構(gòu)建自己的Web應(yīng)用程序,本文的內(nèi)容可能會(huì)讓你第一次部署時(shí)更節(jié)省時(shí)間。 FastAPI 是用于開發(fā)

    2024年02月05日
    瀏覽(24)
  • Android一步一步教你實(shí)現(xiàn)Emoji表情鍵盤

    Android一步一步教你實(shí)現(xiàn)Emoji表情鍵盤

    背景: 說到聊天,就離不開文字、表情和圖片,表情和圖片增加了聊天的趣味性,讓原本無聊的文字瞬間用表情動(dòng)了起來,今天給大家?guī)淼氖潜砬殒I盤,教你一步一步實(shí)現(xiàn),先來看下效果圖: 效果圖 功能: 1、如何控制表情鍵盤與輸入法的切換 2、如何解析表情 3、如何處

    2024年02月16日
    瀏覽(17)
  • GitHub入門指南:一步一步教你使用GitHub

    GitHub入門指南:一步一步教你使用GitHub

    引言: GitHub是一個(gè)流行的代碼托管平臺,它提供了強(qiáng)大的版本控制和協(xié)作功能,對于開發(fā)者來說是一個(gè)不可或缺的工具。本文將一步一步地教你如何使用GitHub,從注冊賬號到代碼同步,讓你能夠快速上手并充分利用這個(gè)平臺。 打開GitHub官網(wǎng)(github.com)。 點(diǎn)擊右上角的\\\"Sign

    2024年02月15日
    瀏覽(21)
  • Midjourney:一步一步教你如何使用 AI 繪畫 MJ

    Midjourney:一步一步教你如何使用 AI 繪畫 MJ

    一步一步如何使用 Midjourney 教程:教學(xué)怎么用 MJ? 原文:如何使用 Midjourney 教程 https://bysocket.com/saas-digital-marketing-channel/ Midjourney是一款使用文字描述來生成高質(zhì)量圖像的AI繪畫工具。這篇文章主要介紹了Midjourney及其用途,并針對Midjourney的使用提供了一些指南。該工具可以幫

    2023年04月21日
    瀏覽(25)
  • 文本轉(zhuǎn)語音-微軟Azure-一步一步教你從注冊到使用

    文本轉(zhuǎn)語音-微軟Azure-一步一步教你從注冊到使用

    牙叔教程 簡單易懂 他們的中文也許還行, 但是英文我試了都不滿意, 我再網(wǎng)上搜到的我認(rèn)為最好的是 但是丫真貴 Best Free Text To Speech Voice Reader | Speechify 現(xiàn)在的匯率是 139 × 6.91 = 960.49 一年一千塊, 好像還行哈, 但是沒卡呀, 擦, 比來比去, 還是微軟Azure性價(jià)比最高, 沒有微軟Azure的

    2024年02月07日
    瀏覽(27)
  • 一步一步教你如何使用 Visual Studio Code 編譯一段 C# 代碼

    一步一步教你如何使用 Visual Studio Code 編譯一段 C# 代碼

    以下是一步一步教你如何使用 Visual Studio Code 編寫使用 C# 語言輸出當(dāng)前日期和時(shí)間的代碼: 1、下載并安裝 .NET SDK。您可以從 Microsoft 官網(wǎng)下載并安裝它。 2、打開 Visual Studio Code,并安裝 C# 擴(kuò)展。您可以在 Visual Studio Code 中通過擴(kuò)展菜單安裝它。 3、打開 Visual Studio Code 中的文

    2024年02月11日
    瀏覽(34)
  • 【沐風(fēng)老師】一步一步教你在3dMax中進(jìn)行UVW貼圖和展開UVW的方法

    【沐風(fēng)老師】一步一步教你在3dMax中進(jìn)行UVW貼圖和展開UVW的方法

    將簡單或程序材質(zhì)應(yīng)用于對象并不難。但是當(dāng)表面需要在其上顯示某種紋理時(shí),它會(huì)變得更加復(fù)雜。任何紋理貼圖都放在材質(zhì)的 Diffuse 插槽中,但渲染的結(jié)果可能無法預(yù)測。這就是為什么我們需要了解 3DMAX 如何將紋理應(yīng)用于 3D 對象,什么是 UVW 貼圖,以及為什么要“展開”它

    2024年02月04日
    瀏覽(23)
  • 一步一步教你如何白嫖谷歌云Google Cloud服務(wù)器$300美金羊毛

    一步一步教你如何白嫖谷歌云Google Cloud服務(wù)器$300美金羊毛

    我們都知道,Depay(現(xiàn)在改名為Dupay了)卡平??梢杂糜谖⑿?,支付寶,美團(tuán)消費(fèi),直接用USDT做日常小額消費(fèi),還免收手續(xù)費(fèi),小額的話,這點(diǎn)還是很舒服的。 但其實(shí),Depay卡的用途遠(yuǎn)不止此,平??梢远嗤诰蛲诰颉=裉旖檀蠹胰绾斡肈epay卡白嫖谷歌云服務(wù)器。申請成功后隨即可

    2024年02月04日
    瀏覽(33)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包