見出し画像

Retro-gaming and so on

RE: プログラミング学習日記 2022/10/29〜

星田さんの記事に対するコメント。

 うーん、データ作りがダルい!ゲーム会社でデータ作る人って大変だなぁ・・これを1日中やるんでしょ?知らんけど・・と。

そうなのよね(笑)。
実はゲーム作りとか、何が大変か、っつーと「プログラミングと全然関係ない部分」だったりするのよ(笑)。
代表的なのが「データ入力」だ。
これが一番時間がかかってメンドイ。
結果、現代的な意味だと「分業制」になるのもしゃーないんだよね。

LinuxでもフリーRPGがある。
ただ、正確に言うと、「RPGコンストラクションセット」ばっかで、「遊べる」RPGがないのはそれが理由だ(笑)。シナリオだ絵だ、を用意するのがメンドいから、だ。
またRogueライク作成品が多いのもそれが理由だよね。Rogueライクならシナリオを用意せず、「迷路自動生成アルゴリズム」さえあればゲームとしての体裁が整うから、だ。
それくらいシナリオを考えるとか、データを作るのがメンド臭いんだ・・・・・・。
古のパックマンみたいに「面が一つしかない」ゲームから僕らは随分と遠いトコに来ちまったわけ。

やっぱりMP3などの音声再生は出来ないと判明。なんか意外な感じだなぁ・・GUIのBig-bangだったら行けるのかな?とか思ってたんですけど。島本須美ボイスとか家弓家正ボイスとか入れまくってやろうと思ってたんですがw

あーなるほど。そういう事がしたいのか。
出来なくはない
Linux等のUNIX系OSでの鉄板のやり方は次のようにします。

例えばRacketで次のように打ってみる。

(system "ls")

僕のPC上だと結果は次のように表示される。



星田さんのPCでの結果とは違うがそれでいい。
実はこれ、端末で次のように打つのと結果同じなんだ。


lsってのは「フォルダに含まれるフォルダ/ファイルをリストアップせよ」って言うUNIXコマンドなんだけど、その内容はどうでもいい。
重要なのは、RacketからUNIXコマンドを呼び出して使えると言う事だ。端末からRacketを呼び出せるのならその逆も出来る、ってこった。
これはRacketに限った話じゃなくって、UNIX生まれのプログラミング言語実装ではほぼどれでも行う事が出来る。UNIX端末からある言語処理系を呼び出せるのならその逆の処理系からUNIX端末を(裏方として)呼び出す事が可能だ、って事。
もちろん、ブツによってはWindowsでも可能だ。
結果、Racketを例に取ると、

;;; UNIX
(system "UNIXコマンド")

;;; Windows
(system "DOS/PowerShellコマンド")

で端末経由でコマンドを実行可能だ、と言う事。注意点はコマンドは必ず文字列として表現されないとダメだ、と言う辺り。

例えばImageMagickを入れたかどうか知らないんだけど、こういう写真があったとする。



例によって2022年11月15日現在でのFANZA AV女優ランキング一位の小湊よつ葉嬢の写真だ。
今、彼女の写真がkominato_yotuha.jpgと言う名前で保存されてる、とする。


この写真をpngフォーマットに変換したい。
そういう場合に使うのがImageMagickと言うソフトウェアで、端末からコマンドで指令するトコ、なんだけど、Racketで次のように打ってみる。


そうすると、フォルダの中身は次のようになってるだろう。


つまり擬似的にせよ、Racketで画像フォーマットの変換が出来た、と言う事だ。

んで、なんでこんな話を?と思うかもしれないが、要するに、CLIのMP3プレイヤーがあれば、それでMP3ファイルを任意のタイミングで再生可能だ、と言う事だ。
もちろん、プログラミング言語にとある機能Xがあればそれを使うに越した事がねぇけど、無かった場合は要するに外部のソフトウェアを端末経由で呼び出して使っちまえば良い、って事だ。言い換えるとソフトウェアの連携。これが実はUNIXプログラミングの方針の根幹なんだ(※1)。
何でも自分で作る必要はない。あるものは使っちまえって事だ(※2)。そしてこれをコンピュータサイエンスでは実は教えない(苦笑)。

例えば、Ubuntuなんかではmplayerと言うCLIのmp3プレイヤーがインストールされていたりして(多分)、次のようにすれば任意のmp3ファイルがRacketから再生可能だ。

(system (format "mplayer \"~a\"" "任意のmp3ファイル名"))

antiX22はどうかは知らないけど、恐らく何らかはインストールされてるんじゃないか。無ければインストールして使ってみればいい。 => 参考:
Windowsに移植する際も、同じソフトウェアが使える場合もあるし、ない場合もあるだろう。しかし、発想としては同様の事を行う事は出来ると思う(※3)。 => 参考: 5 Free Command Line Audio Players
プログラマがGUIのソフトウェアよりもCLIのソフトウェアを好むのは、偏屈だ、と言う理由ではなく(それも否定せんが・笑)、CLIのソフトウェアの方がこういう「使い回し」が可能だ、と言うのが大きな理由だ。

これって int main( の中に入れたら良いのか?

うん。入れていい。
っつーか、前にも書いたけど、mainはエントリポイントを現してるんで、それが無いと実行出来るプログラムにならない。中途半端に書いても実行出来てしまうLispとの違いがその辺だ(またLispの優位性が分かっちゃったね!・笑)。


こういう演習も面白そうなんだけどうーん・・

回答はこう、だ。




なお、これらがPythonでは例えば


って事だ。確かに似てる、っつーか「C言語の構造そのままで」書ける。
でも何度も言うけど、それは別に「C言語が基礎」だからじゃない。単にPythonはCよりも抽象度が高いから、「C言語の書き方を受け入れる」だけだ。
当然、Pythonのエキスパートなら、


とたったの二行でケリをつけるだろう。

※1: これがUNIX系フリーOSとオープンソース/フリーソフトウェアの相性が良い理由で、逆に言うと、Windowsでこの方針が難しいのは、機能の問題、ではなくってソフトウェアのライセンス形態がこういう「飛び道具」使用を難しくするのが原因だ。Windowsでは常に「自分が作ったソフトウェアと他人が作ったソフトウェアを混在出来るのか?」と言う問題が付きまとう。

※2: UNIX系テキストエディタとして有名なオリジナルのviも、元々存在したラインエディタedを、同様に「利用して」拡張した結果、ああ言うカタチになっている。「既にある材料を」組み合わせてソフトウェアを作り上げる、と言うのがUNIX流だ。

※3: ただし、結果として、UNIX流のプログラミングには特有の弱点がある・・・・・・こういう移植の問題やら、あるいは配布の際に「別途ソフトウェアのインストールが必要」と言う、いわゆる「依存」の問題が出てくる。
ただ、とりあえずその辺の問題は後回しにしておいて、自分のPCでキチンと「動くもの」を作った後、対処を考えるしかないと思う。
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「RE: プログラミング学習日記」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事