chatGPTを使ってカグメイクを作る-vol4~家具の正面図がもう出来た
chatGPTと仲良くして、ノンプログラマーが昔作った家具の自動設計ソフトをUIとか作って完成させれたらいいなって思ってる、どこまで続けられるかわかんないけど頑張る特集。たった2日なのに既に第4回です。
その4です。今回は、30分程度格闘ました(ほぼ頑固なchatGPTさんに想いを伝えるのに時間を消費。。。
前回作ったcsvファイルを読み込んで、pygameで表示するところまでやりました。
前回作ったCSVファイルがこちら
天板、側板という家具屋用語は置いといて、それらのパラメタが入ってますね。これを描画したいとchatGPTにお願いします。
まずは最初の設定のお願いから
pythonCopy codeimport pygame
import csv
# Initialize Pygame
pygame.init()
# Define colors
BROWN = (150, 75, 0)
WHITE = (255, 255, 255)
# Define constants
SCALE_FACTOR = 1/5
BORDER_WIDTH = round(SCALE_FACTOR / 10)
# Load data from CSV files
shapes = []
for i in range(1, 3):
file_name = f"csv/{i}.csv"
with open(file_name, "r") as file:
reader = csv.DictReader(file)
for row in reader:
x = round(float(row["d1"]) * SCALE_FACTOR)
y = round(float(row["d2"]) * SCALE_FACTOR)
width = round(float(row["w1"]) * SCALE_FACTOR)
height = round(float(row["h1"]) * SCALE_FACTOR)
shapes.append((x, y, width, height))
以下、コードが続きます。
スケールが全部1/5になってるので、すげーちっちぇーファイルになりました。。。
1/5じゃなくていいよ
出来た!けど絶対おかしい
およそ家具じゃない(笑
なんかの属性間違えてますね。でも、四角形いっぱいあるのは共感できる
それぞれの四角形データを印刷してみよう
数値だけでname出てないのでお願いしました。すぐにnameも印刷してくれます。
ここで20分くらい格闘、全然分からん!
全然原因が分かりませんでした。が、このあとのchatGPTさんとのやり取りで僕がお願いしたリストを見ればわかるかもしれません。
以下、僕がお願いした項目
d1,d2,w1,h1が間違ってます。 w2,h2,w1,h1に変換してください
d1をw2に d2をh2に w2をw1 h2をh1に変換してください
y = int(float(row["d1"]) * 0.2) d1じゃなくてh2 そのうえも、w2 widthはw1
h2がw2、w2はh2、xとyが逆
h1がw1,w1がh1に入れ替えて
pygame.drawの部分のwidthとheightが逆ですやん。。。
width = int(float(row["h1"]) * 0.2) # h1 height = int(float(row["w1"]) * 0.2) # w1 widthとheightが相変わらず逆です
pygame.draw.rect(screen, BROWN, (x, y, height, width)) pygame.draw.rect(screen, WHITE, (x, y, height, width), BORDER_WIDTH) のwidthとheightも逆です
chatGPTは結構修正の時に頑固ちゃん
最初にさくさく作ってくれるんですが、いやそのパラメータ違うよ、とか平気であります。
関数を作る時には、w,h,width,heightで作ってるのに、関数読み込むときに、w,h,height,widthの順に読み込んでます。
wなのにd1とか読み込んでるのもなかなか。
トラップがいっぱいですが、1から自分で作るよりは遥かに早いです。ありがとう。一人でやってたら絶対出来てないもんね(汗
というわけでごちゃごちゃしながら完成~
出来たー!!
上に扉2枚、下に引き出しが10杯ある箱ですね~
ついでに、扉を取っ払いましょう
扉無しバージョンー
どうでしょうか。超簡単に出来てしまいました。
まとめ
とっかかって今で通算半日くらいでしょうか・・・
あっという間に、1.5年くらいかけて作った部分の大半が出来てしまいました。。。
数値計算はエクセルで行っていて(これもpygameにリプレースする)、それからの下工程がこれらで一気に進んでしまいます。
さあ、どうやって完成させるかな~。
サポートをお願いします!サポートいただいた分だけはお返し出来るようにアウトプットしていこうと思います!