いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

プログラミング

0.4から0.6くらいの乱数が他より多めに欲しいときどうするか

いろんなプログラミング言語にRandom()といった名前の関数があります。乱数を発生させます。仕様はいろいろですが、例えば0以上1以下の乱数が欲しいときにはRandom(0, 1)などと書けばよいのです。ゲームでランダムな場所に敵を発生させたいときなどに使えま…

Unityでスクリーン座標から空間内の座標を求める

3Dのシューティングゲームを作るとき、敵機が視界(スクリーン)から消えたときにその敵機を削除するようにプログラミングします(削除せずに放っておくと、見えないだけで存在し続けます。実際にはちょっと見えなくなって、軌道の関係ですぐまた視界に入る…

シューティングゲーム作成中。敵を表示して動かしました。

とりあえず……敵を出して動かしてみました。下の写真です。敵キャラは暫定でこの形。いずれもう少し変えますが。移動のコースは、敵キャラの生成場所と経過時間によって空間内の場所が決まるように数式を決めてやっています。キャラクタはもちろん正面が進行…

ブログ管理者が本を出します

ようやく出版まで漕ぎ着けました。準備を始めたのは昨年の6月です。ちゃんとした原稿になったのが1月半ばでした。Pythonでインタプリタを作る コンピュータ言語を設計・実装してインタプリタの動作を理解しよう (OnDeck Books(NextPublishing))作者:吉田 …

Unityで環境光の強弱をコントロールする、今と昔のゲームプログラミング

Unityでゲーム作成中!……なんですが、細かなところであちこちつまずきます。 「環境光」というのがあります。ゲームの世界を照らす灯りが必要ですが、直接光、環境光と2種類あります。直接光は光源から直に当たる光です。環境光は、光源からの光が直に当たら…

昔あった、コピーツール

昔、20年か30年くらい前にはコピーツールというジャンルのソフトウェアがありました。記録メディアはフロッピーディスクというやつが主流で、直径5.25インチのものをよく使っていました。縦横13cmか14cmくらいです。しかも容量は1Mバイト、今に比べ…

Unityでビルボードを作る!(2) Unityの書籍紹介

前回、Unityでビルボードを実現、という話を書きました。 www.omoshiro-suugaku.com 調べると、オブジェクトには、それを構成する点が4点しかない、本当の平面みたいなものがあるようです。3DオブジェクトのQuadというやつです。実験してみました。これに絵…

Unityでビルボードを作る!

ちゃんとした定義は知りませんが、ゲームプログラミングの技術の中に「ビルボード」というのがあります。3Dのゲームで、例えば道ばたの木など、ちゃんとモデリング(PC上で立体として木を作る。幹、枝、場合によっては葉などのパーツもしっかり)したものを…

ゲームプログラミング雑感、時間を確保して勉強しましょう

大きく勤務状況が変わり、とにかく時間の余裕ができました。好きなことをいろいろやっています。何回か触れていますが、最近はUnity(ゲームを書くための開発環境)、C#で3Dのゲームを書く準備をしています。Unity、気に入りました。スマホでテストすると…

スマホでゲーム作り(4)

UnityC#ゲームプログラミング入門 2020対応 作者:津耶乃, 掌田 発売日: 2020/10/30 メディア: 単行本 Unityを使ったゲームプログラミングの本です。目次は以下の通りです。 Chapter 1 ゲームで使うUnityの基本機能 1-1 ゲームの機能を考える 1-2 ゲームオブ…

スマホでゲーム作り(3)

2D、3Dのスマホゲームを書くための本です。よい本でした。 Unityの教科書 Unity 2020完全対応版 2D&3Dスマートフォンゲーム入門講座 作者:北村 愛実 発売日: 2020/08/29 メディア: Kindle版 一応最後まで、実験しながら読み終わりました。説明がとにかく丁…

スマホでゲーム作り(2)

www.omoshiro-suugaku.com 前々回、Unity+C#でゲームプログラミングする本を紹介しました。PCで書いたプログラムは実機テストしなければなりません(動作の確認などはPCでできますし、通常はPCでのみ作業)。つまりスマホに送って実際に動作させないといけ…

将棋ソフトのミニマックス法、αβ法

将棋を指すソフトなどが手を考えるときに使うミニマックス法、αβ法について簡単に説明しましょう。ことによるとディープラーニング全盛の今、違う部分もあるかも知れませんが、大事さは変わらないと思います。 まず基礎知識として将棋ソフトの大体の仕組み。…

スマホでゲーム作り

Unityの教科書 Unity 2020完全対応版 2D&3Dスマートフォンゲーム入門講座 作者:北村 愛実 発売日: 2020/08/29 メディア: Kindle版 ↑ これはkindle版ですが、紙の本を買いました。いよいよスマホのゲームプログラミングに手を出しました。プログラミングにつ…

昔のプログラミング、割込み、……

手元に『インターフェース』1989年1月号のおかむらみちお氏(多分「岡村」)の割り込みに関する記事の一部のコピーがあります。ファイルに綴じてずっと持っています。章、節は次の通りです。 3 アセンブラでの割込み 3.1 アセンブラの問題点 3.2 割込み用テ…

バブルソートとは何か

バブルソートについて書きましょう。これは数値の組を大小順に並べ替える方法のひとつです。前回クイックソートの話をしました。クイックソートは「最速」ということになっています。 www.omoshiro-suugaku.com しかしバブルソートは遅いのです。バブルソー…

クイックソートとは何か

データを大小順に並べ替える作業、ソートはデータ処理の様々な場面で使われ、アルゴリズム(算法。明確な手順)はたくさんあります。バブルソート、基本選択法、ヒープソート、クイックソート、……。バブルソートなどはロジックは分かりやすいけれど効率が悪…

シューティングゲーム作成準備~! 効果音、BGMを鳴らす。

勉強と並行してシューティングゲームでも作るかな……と、少しずつ準備しています。pythonにはpygameという2Dゲーム作成のためのモジュールがあり、ゲームを書くのに使えます。3Dは扱えないみたいですが、スプライトは使えるし、3Dっぽく見せる感じ(疑似3D)…

コンピュータ言語作成のすすめ。再帰コールの不思議。

再帰的なプログラムというのがあります。プログラムを書き始めたばかりの頃、そういうものがあるとは全く知らなかったときに再帰的なプログラムに出会ったときの衝撃は大きかったです。大学では情報処理の授業でFORTRANを習いましたが、今はどうか知りません…

Pythonで円周率を小数第100位まで求める(3)

今度は引き算を試してみます。関数 minus() を書きました。繰り下がりは、あれば cf = 1とし、なければ cf = 0 で処理します。各桁ごとに1桁の数の引き算をし、結果が負になったら繰り下がりありとして引き算の結果には10を加えます。これを繰り返します。 i…

Pythonで円周率を小数第100位まで求める(2)

まずリスト同士の足し算の関数を作ります。5831.6591 + 6019.4723 を計算します。リストAUに5831.6591の整数部分を、ADに小数部分を入れます。同様にBU、BDにも値をセットし、plus(AU, AD, BU, BD, CU, CD)をコールするとCU, CDに計算結果が入ります。Uはup…

Pythonで円周率を小数第100位まで求める(1)

円周率を試しに計算してみることにしました。今はPythonをよく使っているので、Pythonで。何回かに分けてやってみます。世の中には50兆桁まで計算した人がいるそうです(ウィキペディア)!! 頑張ったなあ……。でも、ここでは計算の理屈を整理し、実験をやっ…

さて次に何を勉強しようか……(2)

Pythonでインタプリタを作る、ということで頑張っていました。仕事もあったし結構時間はかかりましたがようやく完成。関数機能はもちろん、1次元ですが配列も装備! インタプリタ作成は1回目にはC++で、2回目にはC#で、今回は3回目です。C++からC#のときに…

Pythonのforループのカウンタについて。ちょっと驚きました……。

Pythonの話です。次のプログラム、実行結果はどうなるかご存じですか? for i in range(10): print('i = ', i) if i == 3: i = 8変数 i の値を0,1,2,……と1刻みで増やしながら表示します。3になったら i の値は8にセット。そのまま、i が9になるまで繰り返…

ハッシュ値を試す

ハッシュ値について前、簡単に説明しました。 www.omoshiro-suugaku.com 「このデータは誰か改ざんしていないだろうか?」という疑問に対して、ハッシュ関数が答えてくれます。ハッシュ関数はチェックサムのようなものです。チェックサムとは、データ(数値…

四元数(しげんすう、クオータニオン)を使ってみる(5)

せっかく四元数が使えるようになったので、いくつか実験しておきます。高校では今は複素数が表す図形などについて少し勉強するようになっていますが、前は行列をやっていました。ぼくも行列を習いました。数学BとかCとかいろんな科目の間をいろんな単元が…

四元数(しげんすう、クオータニオン)を使ってみる(4)

前回までに四元数を使って空間の点を回転する方法について調べました。再度載せておきます。 試してみましょう……と言いたいのですが、手作業だと絶望的な気分になります。4項の和×3項の和×4項の和 で、勘弁です。Pythonで計算できるみたいなので、調べてやっ…

雑記 Pythonは使いやすい? OSによる改行コードの違い

最近は使うプログラミング言語はPythonばかりです。さすがに慣れてきて、一応手元に辞書っぽいものを置き、ネットも使って分からないことを調べながらですが、あまり困らずに書いています。でもfor文などは多分C言語みたいな書き方をしてしまっている場面が…

インタプリタ作りは面白い!

架空のコンピュータ言語です。文法はぼくが決めました。BASICに近いですが、適当です。 とにかくこれをコンピュータに渡すと…… 1から100までの自然数の総和 = 5050.0 と表示されます。今回、上のような「プログラム」を渡すとそれに従っていろいろ作業してく…

インタプリタを作る(7)雑談

中高生の夏休みは終わりですが、勉強は進んだでしょうか……。学生はみんなかわいそうだけれど一番は特に受験生です……。コロナは自然界のことだから仕方ないとしても、受験の制度など、勉強とは関係のない部分で人災に遭ったようなものです。 www.omoshiro-suu…