文化の日ということでなにか作ってみることにする。
(最終的にできたものです。)
補足説明
適当なpng画像をmg.pngリネームしてみてください。jpegだと透明設定がないので修正が必要です)
ubuntu18.04のnotoフォントを使っています。56行目(56,130,131をコメントアウトでなくても動きます。)
元々は100行ぐらいですが。コメントの追加と少し形を整えています。
ーーーーーーーーーーー以下 構想というなの駄文ーーーーーーーーーーー
そもそも自分のことを俺とはほとんど言わないけどたまには勢いをつけないとということであえて俺としました。
以下はメモ書きより
11/3 12:05
俺は一日でどこまでF-ZEROに近づけるか?
初めて友達の家でスーパーファミコンを遊んだ時、俺は衝撃を受けた
F-ZEROそしてパイロットウィングスに、ほどなくしてスーパーファミコンを購入した。
入社試験と面接を受けに任天堂にもいった。残念ながら入社はしていない。
(しかし、残念ながらの報は受け取っていない。受かっていたのかもしれない(勝手な解釈です))
そしてCSKという当時SEGAの親会社に入った。AI事業部を希望したけど残念ながら違う場所へ。
(AI事業部は時代を先取りしすぎていて、すぐなくなりました。)
ということで一日でどこまでF-ZEROに挑戦できるかやってみる。
まずは構想から、
私はだいたい構想の半分ぐらいで力尽きる。
まあここまでやったという満足と破綻しかけているソースに対する疲れその両方だろう。
ということで構想をねってみる。
タイトル 正直どうでもいい
セレクト画面 正直どうでもいい
ゲームメイン
今回はマウスで操作を検討してみる。
3D画面の表現はポリゴンでいけるか?
音楽なにか作ってみよう。
敵車、できれば…
コースエディタ
作れたらいいな
リザルト画面 いいことにする。
12:14
13:52 F-ZEROを見直していてすごすぎて萎える
まずPlateクラスから作ろう
16:33 安堂ロイドをみている。画像を緑に加工している
ーーーーーー追記↓ーーーーーーー
ドラマの中に東京タワーのナノブロックがでてきたのでダイソー100円のプチブロックで作ってみる
ブロックの高さがナノブロックより少し低いようなので数段足してます。
使ったのはパンダと消防車とプロペラ機の尾翼の一部(赤は少し足りない)
最近作ったプチブロックに、お話をつけているのでお話
2040年日本は再び都市開発を行っている。
新しい発想のアクチュエータが開発され超巨大な破壊専用の重機なども作られていた。
都会の空を少しでも取り戻すため、次々と老朽化している高層建築の中層建築への建て替え需要によって景気は回復基調である。
かつて東京のシンボルであった東京タワーもとうとう解体することになった。解体工事は3日の予定である。
ーーーーーー追記↑ーーーーーーー
19:30 スペースタンディをみている。まみたすとかループとか
19:58 散髪してシャワー浴びてスッキリ
コードは40ステップほど
22:39 よしこれで、ポリゴンが...これなに??
23:59 こんな感じに(真横からならんだポリゴンをみるとこれで正解だったりする)
2:07 マウスはどうにもうまくいかないのでキースキャンにしてそこそこの速度に
11:05 再開、プレートに乗っているか判定して上下に動くようにする
11:49 そこそこ調整終わる
結果
ゲームメイン
今回はマウスで操作を検討してみる。→調整が難航してキーに
3D画面の表現はポリゴンでいけるか?→いけるのではないか
音楽なにか作ってみよう。→時間不足
敵車、できれば…→時間不足
コースエディタ
作れたらいいな→時間不足
(最終的にできたものです。)
補足説明
適当なpng画像をmg.pngリネームしてみてください。jpegだと透明設定がないので修正が必要です)
ubuntu18.04のnotoフォントを使っています。56行目(56,130,131をコメントアウトでなくても動きます。)
元々は100行ぐらいですが。コメントの追加と少し形を整えています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | import sys import math import time import pygame from pygame.locals import * from PIL import Image def inCk(n, s, e): return e >= n >= s class Plate: def __init__(sf, x, y, z, col, size): sf.x, sf.y, sf.z = x, y, z #プレートの隅の座標 sf.col = col #色 sf.size = size #サイズ sf.zb = 0 #表示順のソート用 sf.polyList = [] #ポリゴンの表示座標 def on(sf, x, y, z): #乗れているか、位置によっては機体の高さも変動 if 400 > abs(sf.y - y): if inCk(x, sf.x, sf.x+sf.size*1.1) and inCk(z, sf.z, sf.z+sf.size*1.1): return sf.y return -10000 def calc(sf, sx, sy, sz, d1, d2): #プレートの表示位置を計算 #視点による回転等もt1は平面座標回転t2は上下回転(今回未使用) #4点の設定とシフト x=[sf.x-sx, sf.x-sx+sf.size, sf.x-sx+sf.size, sf.x-sx] ty=[sf.y-sy, sf.y-sy, sf.y-sy, sf.y-sy] z=[sf.z-sz, sf.z-sz, sf.z-sz+sf.size, sf.z-sz+sf.size] #4点の回転 tx = [0,0,0,0] tz = [0,0,0,0] c = math.cos(d1 * 3.14 / 180) s = math.sin(d1 * 3.14 / 180) for i in range(4): tx[i] = x[i]*c - z[i]*s tz[i] = x[i]*s + z[i]*c sf.zb = (tz[0] + tz[2]) / 2 if 300 > sf.zb:return #表示用に3変換 sf.polyList=[] d=300 for i in range(4): sf.polyList += [( int(tx[i] * d/tz[i] + 400), int(ty[i] * d/tz[i] + 300) )] def write(sf): if 300 > sf.zb:return pygame.draw.polygon(screen, sf.col, sf.polyList) #pygameの初期化 pygame.init() pygame.display.set_caption("TARGET F") SCREEN_SIZE = (800, 600) screen = pygame.display.set_mode(SCREEN_SIZE) font = pygame.font.SysFont("notosansmonocjkjp", 16) #プレートの色用 imgbase = Image.open("./mg.png") img = imgbase.resize((100,100)) #表示プレートの初期設定1万枚 plate=[] size = 400 for x in range(100): for z in range(100): r, g, b, a = img.getpixel( (x,z) ) plate += [Plate(x*size-size*50, math.sin(x/5)*500+math.sin(z/5)*500, z*size-size*50, (r, g, b), size)] #メイン処理 def main(): global plate lasttime = 0 cx, cy, cz = 0, 0, -500 #車の座標(表示ないけど) t1 = 0 #車の向いている方向 cdy = 0 #落下時の加速度用 sp = 0 #速度 dt = 0 #車の回転用角度 dsp = 0 #車の速度増加 a = 0 #加速度 while True: startime = time.perf_counter() #キー操作 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.mixer.music.stop() sys.exit() if event.type == KEYDOWN: if event.key == K_LEFT: dt =-15 if event.key == K_RIGHT:dt = 15 if event.key == K_DOWN: dsp -= 15 if event.key == K_UP: dsp += 15 if event.type == KEYUP: dt = 0 dsp = 0 #移動 a += dsp t1 += dt sp += a sp = sp * 0.9 dsp = dsp * 0.95 a = a * 0.9 sp = max( 0, min(sp, 2000) ) cx += math.sin(t1 * 3.14 / 180) * sp cz += math.cos(t1 * 3.14 / 180) * sp #pygame.time.wait(100) #プレートの表示用変換 oy = -10000 for i in plate: o = i.on(cx, cy, cz) if o > oy: oy = o if oy == -10000: cy += cdy cdy += 10 else: cy = oy - 100 for i in plate: i.calc(0+cx, -800+cy, -5000+cz, t1, 0) #プレートの前後によりソート plate = sorted(plate, key=lambda x:x.zb, reverse = True) #画面表示 screen.fill((0, 20, 0)) for i in plate: i.write() text = font.render("SPEED:"+str(int(sp))+" "+str(int(a)) + " time:"+str(lasttime) + " on:"+str(int(oy))+" "+str(int(cy)), True, (255,255,255)) screen.blit(text, [50, 50]) pygame.display.flip() lasttime = int( (time.perf_counter() - startime) * 1000) main() |
syntax2html |
ーーーーーーーーーーー以下 構想というなの駄文ーーーーーーーーーーー
そもそも自分のことを俺とはほとんど言わないけどたまには勢いをつけないとということであえて俺としました。
以下はメモ書きより
11/3 12:05
俺は一日でどこまでF-ZEROに近づけるか?
初めて友達の家でスーパーファミコンを遊んだ時、俺は衝撃を受けた
F-ZEROそしてパイロットウィングスに、ほどなくしてスーパーファミコンを購入した。
入社試験と面接を受けに任天堂にもいった。残念ながら入社はしていない。
(しかし、残念ながらの報は受け取っていない。受かっていたのかもしれない(勝手な解釈です))
そしてCSKという当時SEGAの親会社に入った。AI事業部を希望したけど残念ながら違う場所へ。
(AI事業部は時代を先取りしすぎていて、すぐなくなりました。)
ということで一日でどこまでF-ZEROに挑戦できるかやってみる。
まずは構想から、
私はだいたい構想の半分ぐらいで力尽きる。
まあここまでやったという満足と破綻しかけているソースに対する疲れその両方だろう。
ということで構想をねってみる。
タイトル 正直どうでもいい
セレクト画面 正直どうでもいい
ゲームメイン
今回はマウスで操作を検討してみる。
3D画面の表現はポリゴンでいけるか?
音楽なにか作ってみよう。
敵車、できれば…
コースエディタ
作れたらいいな
リザルト画面 いいことにする。
12:14
13:52 F-ZEROを見直していてすごすぎて萎える
まずPlateクラスから作ろう
16:33 安堂ロイドをみている。画像を緑に加工している
ーーーーーー追記↓ーーーーーーー
ドラマの中に東京タワーのナノブロックがでてきたのでダイソー100円のプチブロックで作ってみる
ブロックの高さがナノブロックより少し低いようなので数段足してます。
使ったのはパンダと消防車とプロペラ機の尾翼の一部(赤は少し足りない)
最近作ったプチブロックに、お話をつけているのでお話
2040年日本は再び都市開発を行っている。
新しい発想のアクチュエータが開発され超巨大な破壊専用の重機なども作られていた。
都会の空を少しでも取り戻すため、次々と老朽化している高層建築の中層建築への建て替え需要によって景気は回復基調である。
かつて東京のシンボルであった東京タワーもとうとう解体することになった。解体工事は3日の予定である。
ーーーーーー追記↑ーーーーーーー
19:30 スペースタンディをみている。まみたすとかループとか
19:58 散髪してシャワー浴びてスッキリ
コードは40ステップほど
22:39 よしこれで、ポリゴンが...これなに??
23:59 こんな感じに(真横からならんだポリゴンをみるとこれで正解だったりする)
2:07 マウスはどうにもうまくいかないのでキースキャンにしてそこそこの速度に
11:05 再開、プレートに乗っているか判定して上下に動くようにする
11:49 そこそこ調整終わる
結果
ゲームメイン
今回はマウスで操作を検討してみる。→調整が難航してキーに
3D画面の表現はポリゴンでいけるか?→いけるのではないか
音楽なにか作ってみよう。→時間不足
敵車、できれば…→時間不足
コースエディタ
作れたらいいな→時間不足