最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

噪聲生成地形 v1.0 v1.1 v2.0 v2.1

2022-09-06 22:45 作者:ICE27182  | 我要投稿

寫到第四版才想起來(lái)還沒(méi)發(fā)(雖然第一版很水很水)


第一版

很水 v1.0
毫無(wú)效果圖 v1.0

#噪聲算法 自己先寫寫玩玩唄

#介紹

print('噪聲地形生成v1.0')

print('''生成一個(gè)區(qū)塊內(nèi)的地形(其實(shí)就是條直線XD)

兩端點(diǎn)數(shù)值可手動(dòng)輸入或隨機(jī) 有檢錯(cuò)功能

''')


#輸入


print('輸入一個(gè)區(qū)塊的大小, 按回車則默認(rèn)為16')

while True:

? ? try:

? ? ? ? chunk = input()

? ? ? ? if chunk == '':

? ? ? ? ? ? chunk = 16

? ? ? ? if float(chunk) <= 1:

? ? ? ? ? ? print(float(chunk))

? ? ? ? ? ? chunk = ''

? ? ? ? chunk = int(chunk)

? ? ? ? break

? ? except ValueError:

? ? ? ? print('輸入大于1的數(shù)字')

print('輸入?yún)^(qū)塊兩端點(diǎn)大小, 按回車則隨機(jī)')

while True:

? ? try:

? ? ? ? val_1 = input('val_1 = ')

? ? ? ? if val_1 == '':

? ? ? ? ? ? import random

? ? ? ? ? ? val_1 = random.randint(0,chunk-1)

? ? ? ? ? ? print('val_1 = ', val_1)

? ? ? ? if float(val_1) < 0:

? ? ? ? ? ? print(float(val_1))

? ? ? ? ? ? val_1 = ''

? ? ? ? val_1 = int(float(val_1))

? ? ? ? break

? ? except ValueError:

? ? ? ? print('輸入大于0的數(shù)字')

while True:

? ? try:

? ? ? ? val_2 = input('val_2 = ')

? ? ? ? if val_2 == '':

? ? ? ? ? ? import random

? ? ? ? ? ? val_2 = random.randint(0,chunk-1)

? ? ? ? ? ? print('val_2 = ', val_2)

? ? ? ? if float(val_2) < 0:

? ? ? ? ? ? print(float(val_2))

? ? ? ? ? ? val_2 = ''

? ? ? ? val_2 = int(float(val_2))

? ? ? ? break

? ? except ValueError:

? ? ? ? print('輸入大于0的數(shù)字')


#計(jì)算

noise = [val_1]

for x in range(1,chunk):

? ? noise.append(int(val_2*x/chunk+val_1*(chunk-x)/chunk))

noise.append(val_2)

print(noise)

for x in noise:

? ? print('██'*x)

print('\n\n\n')

for x in noise:

? ? print(' ?'*(x-1),end='')

? ? print('██')





第二版

v1.1
有點(diǎn)樣子了的效果圖 v1.1

#噪聲算法 自己先寫寫玩玩唄

print('噪聲地形生成v1.1')

print('1 隨機(jī)生成區(qū)塊大小 各區(qū)塊大小不一樣')

print('2 隨機(jī)生成端點(diǎn)大小')

print('3 一定程度上減小了過(guò)大的斜率')

print('4 對(duì)于不同高度的地形加以改變組成的字符 可以生成 水 地面 山 有雪的高山')

print('5 會(huì)無(wú)限繪制區(qū)塊 每行時(shí)間間隔0.02s')

print('6 刪除了輸入界面')


#輸入

import random,time

chunk = random.randint(12,32)

val_1 = random.randint(0,72)

val_2 = random.randint(0,72)


while True:

? ? #生成端點(diǎn)

? ? k1 = (val_2-val_1)/chunk

? ? chunk = random.randint(12,32)

? ? if val_2 > 64:

? ? ? ? chunk = random.randint(2,24)

? ? val_3 = val_2

? ? val_2 = random.randint(0,72)

? ? n = 0

? ? while n < 5:

? ? ? ? if val_2 > 64 or val_2 <32 or (val_2-val_3)*(val_3-val_1) < -0.2 or ((val_2-val_3)*(val_3-val_1) < -0.2 and val_2-val_3 > 0):

? ? ? ? ? ? val_2 = random.randint(0,72)

? ? ? ? n+=1

? ? if k1 < -1:

? ? ? ? chunk = random.randint(4,16)

? ? ? ? val_2 = random.randint(val_3-10,val_3+10)

? ? if val_3 <= 30 and val_2-val_3 > 30:

? ? ? ? val_2 = random.randint(val_3-10,val_3+30)


? ? #計(jì)算 int(val_2*x/chunk+val_1*(chunk-x)/chunk)

? ? val_1 = val_3

? ? noise = [val_1]

? ? for x in range(1,chunk):

? ? ? ? noise.append(int(val_2*x/chunk+val_1*(chunk-x)/chunk))

? ? noise.append(val_2)

? ?

? ? #繪圖 ?██ ??? ??? ?▓▓ ???

? ? for x in noise:

? ? ? ? if x <= 20:

? ? ? ? ? ? print('~~'*2,end='')

? ? ? ? ? ? print('~~'*(x-2),end='')

? ? ? ? ? ? print('||'*(20-x))

? ? ? ? elif x <= 40:

? ? ? ? ? ? print('~~'*x)

? ? ? ? elif x <= 60:

? ? ? ? ? ? print('~~'*40,end='')

? ? ? ? ? ? print('**'*(x-40))

? ? ? ? else:

? ? ? ? ? ? print('~~'*40,end='')

? ? ? ? ? ? print('**'*20,end='')

? ? ? ? ? ? print('██'*(x-60))

? ? ? ? time.sleep(0.02)





第三版

平緩曲線 好函數(shù) v2.0
好多了不是嗎(可能看不太出來(lái)?建議自己跑一下看看) v2.0

#通過(guò)緩和曲線加權(quán)

import random,time

print('噪聲地形生成v2.0')

print('1 將加權(quán)方式由原來(lái)的線性改為 6x?-15x?+10x3,x∈[0,1] 使圖像更平滑')

print('2 加快了刷新速度 約為每秒66.67行')

print('3 固定了區(qū)塊大小為16 且每個(gè)區(qū)塊的后一個(gè)端點(diǎn)值與該區(qū)塊后一個(gè)區(qū)塊的前一個(gè)端點(diǎn)的值相同')

print('4 地面 水 山 有雪的高山 的高度不在固定 而是受預(yù)設(shè)的高度限制影響 盡管高度限制只能在代碼里改')


chunk,len = 16,72

val_1,val_2 = random.randint(int(len/72),len),random.randint(int(len/72),len)


def smth(x,chunk): ?

? ? return(chunk*(6*(x/chunk)**5-15*(x/chunk)**4+10*(x/chunk)**3))


while True:

? ? val_3 = val_2

? ? val_2 = random.randint(int(len/36),len)

? ? val_1 = val_3

? ?

? ? noise = [val_1]

? ? for x in range(1,chunk):

? ? ? ? noise.append(int(val_1*(chunk-smth(x,chunk))/chunk+val_2*smth(x,chunk)/chunk))

? ? ? ? noise.append(int(val_2*smth(x,chunk)/chunk+val_1*(chunk-smth(x,chunk))/chunk))

? ? noise.append(val_2)


? ? for x in noise:

? ? ? ? if x <= int(len/3): ?#24

? ? ? ? ? ? print('~~'*x, end='')

? ? ? ? ? ? print('||'*int(len/3-x))

? ? ? ? elif x <= int(len*4/9): ?#32

? ? ? ? ? ? print('~~'*x)

? ? ? ? elif x <= int(len*7/9): ?#56

? ? ? ? ? ? print('~~'*(int(len*4/9)), end='')

? ? ? ? ? ? print('**'*(x-int(len*4/9)))

? ? ? ? else:

? ? ? ? ? ? print('~~'*int(len*4/9), end='')

? ? ? ? ? ? print('**'*(int(len*7/9)-int(len*4/9)), end='')

? ? ? ? ? ? print('██'*(x-int(len*7/9)))

? ?

? ? ? ? time.sleep(0.015)





第四版

關(guān)鍵在于mis變量吧 v2.1
可能感覺(jué)和2.0沒(méi)什么區(qū)別對(duì)吧 主要還是細(xì)節(jié)吧 v2.1
一些細(xì)節(jié)吧主要是 v2.1

#通過(guò)緩和曲線加權(quán)

import random,time

print('噪聲地形生成v2.1')

print('1 增加了自定義 區(qū)塊大小 高度限制 刷新速度 的功能')

print('2 使山?jīng)]那么平淡 連接處變得粗糙')

print('3 使生成平均斜率大于30度的地形的概率減半 即增加了平地的量')

print('4 我寫代碼注釋了')


#輸入

def TypeIn(default):

? ? while True:

? ? ? ? try:

? ? ? ? ? ? v = input('')

? ? ? ? ? ? if v == '':

? ? ? ? ? ? ? ? v = default

? ? ? ? ? ? if float(v) <= 1 or float(v) != int(float(v)):

? ? ? ? ? ? ? ? v = ''

? ? ? ? ? ? v = int(float(v))

? ? ? ? ? ? break

? ? ? ? except ValueError:

? ? ? ? ? ? print('輸入大于1的整數(shù)')

? ? return(v)

print('輸入?yún)^(qū)塊兩端點(diǎn)大小, 按回車則默認(rèn)16 (不確定就默認(rèn))')

chunk = TypeIn(16)

print('輸入高度限制大小, 按回車則默認(rèn)72 (如果圖像有錯(cuò)誤應(yīng)減小)')

len = TypeIn(72)

print('輸入每秒刷新的行數(shù), 按回車則默認(rèn) 50 行/s')

speed = TypeIn(50)


#取隨機(jī)數(shù)

val_1,val_2 = random.randint(int(len/72),len),random.randint(int(len/72),len)


def smth(x,chunk):

? ? return(chunk*(6*(x/chunk)**5-15*(x/chunk)**4+10*(x/chunk)**3))


while True:

? ? val_3 = val_2

? ? val_2 = random.randint(int(len/36),len)

? ?

? ? if ((val_2-val_3)/chunk)**2 >= 1/3: ? #讓地形平一點(diǎn) 平均斜率超過(guò)30°就再嘗試一次生成

? ? ? ? val_2 = random.randint(int(len/36),len)


? ? val_1 = val_3


? ? #計(jì)算值

? ? noise = [val_1]

? ? for x in range(1,chunk):

? ? ? ? noise.append(int(val_1*(chunk-smth(x,chunk))/chunk+val_2*smth(x,chunk)/chunk))

? ? ? ? noise.append(int(val_2*smth(x,chunk)/chunk+val_1*(chunk-smth(x,chunk))/chunk))

? ? noise.append(val_2)


? ? #顯示圖像

? ? for x in noise:

? ? ? ? mis = random.randint(0,int(round(len/18,0))) ? #讓圖像沒(méi)那么平淡

? ? ? ? if x <= int(len/3): ?#24

? ? ? ? ? ? print('~~'*x, end='')

? ? ? ? ? ? print('||'*int(len/3-x))

? ? ? ? elif x <= int(len*4/9): ?#32

? ? ? ? ? ? print('~~'*x)

? ? ? ? elif x <= int(len*7/9): ?#56

? ? ? ? ? ? print('~~'*(int(len*4/9)-1), end='')

? ? ? ? ? ? print('~'*mis, end='')

? ? ? ? ? ? print('**'*(x-int(int(len*4/9)-1+0.5*mis)))

? ? ? ? else:

? ? ? ? ? ? print('~~'*(int(len*4/9)-1), end='')

? ? ? ? ? ? print('~'*mis, end='')

? ? ? ? ? ? print('**'*(int(len*7/9)-int(int(len*4/9)-1+0.5*mis)), end='')

? ? ? ? ? ? print('██'*(x-int(len*7/9)))

? ?

? ? ? ? time.sleep(1/speed)


噪聲生成地形 v1.0 v1.1 v2.0 v2.1的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
昭通市| 旬邑县| 赞皇县| 东明县| 临泉县| 石嘴山市| 泽普县| 道真| 房山区| 宜兰市| 府谷县| 大石桥市| 巴林左旗| 游戏| 蓬安县| 泽普县| 遂川县| 静安区| 昔阳县| 柯坪县| 县级市| 鹤庆县| 甘德县| 九寨沟县| 织金县| 西吉县| 龙江县| 城固县| 柞水县| 泸西县| 蒲江县| 荔浦县| 长沙市| 河南省| 十堰市| 长泰县| 桐梓县| 元阳县| 罗江县| 龙游县| 江油市|