クラブに入るまで新中学生は,ひまなのだ。かずは,なんとなくモラトリアムな時間の多くをHSP (Hot Soup Processor)によるプログラミングに割いている。
前回(155話),紹介したパソコンの使用時間を記録するプログラム「使用時間チェッカー」のほかに,151話から始めた魚雷船ゲームのプログラミングも地道に続けている。
敵である潜水艦は勝手に,どんどんミサイルを打ち上げる。スペース・キーを押すと,船から対潜用魚雷が投下され,潜水艦に命中すると,潜水艦が消えるようになっている。
「あとは,ダメージを計算しないといけないな…」と自力でプログラミングを進めるかずの思考に,私はついていっていない。休日のHSPタイムも「やってみるちゃ」と相談もなく進めるので,今何を考えているのか,わからない。
強力な命令が用意されているHSPだから,150ステップ(行数)ぐらいで上記の処理を実現できるのだが,gosubであっちこっちに飛ぶのと,変数名が短くて,変数の目的がはた目にはわかりにくい。そんなわけで,父はもうソースコードを追うのをあきらめてしまった。
ざっと,目を通してみてください。
---------------------------------------------------------------
;------初期処理------
buffer 1,,,1 ;ウィンドウID1を用意
picload "senkan2.bmp" ;グラフィックの読み込み
screen 0,640,480, 1 ;画面サイズの設定
palcopy 1 ;パレットをグラフィックに合わせる
randomize
px=600 :py=40 ;自艦の初期位置
hp=3 ;自艦の耐久値
ex=1 ;敵の初期位置
dim ey,20 ;敵位置の配列変数を用意
dim ex,20
e=0
etmx=6 ;敵弾の表示の最大数
ecn=20
dim etf,etmx ;敵弾の情報の配列変数を用意
dim etx,etmx
dim ety,etmx
dim s,20
i=0
repeat etmx ;敵弾の表示状況の設定
etf.i=0
i+=1
loop
i=0
repeat 20 ;敵艦が弾を表示してからどれだけ時間が経っているかの情報を入れる変数の初期設定
s.i=100
i+=1
loop
gmode 2 ;透明色を有効にしたコピーモードを指定
;------メインループ------
*main ;ラベル
redraw 2 ;メイン画面に反映させない
gosub *haikei ;背景設定にとぶ
i=0
repeat e
if ex.i=640{
emx-=1 ;ゲーム終了に跳ぶ
}
i+=1
loop
stick ky,15 ;キー入力
if ky=1{ ;自艦の移動
px-=8
if px<8{
px=8
}
}
if ky=4{
px+=8
if px>600{
px=600
}
}
if tf=0 { ;自艦弾が発射されていたら以下の5行を実行
if ky&16 { ;スペースキーが押されているかの判定
tx=px+8 ;自弾の位置を自艦の下に合わせる
ty=py+16
tf=1 ;自弾が出ているか判定する変数に1を代入
}
}
else { ;自弾が発射されていなかったら以下の4行を実行
ty+=16 ;自弾の移動
if ty>480 { ;自弾が画面から出ていたら以下の1行を実行
tf=0 ;自弾が出ているか判定する変数をリセットする
}
}
if tf=1 {
gosub *hitto
}
if tf=1 { ;自弾が出ていたら以下の1行を実行
pos tx,ty ;自弾の表示
gcopy 1,64,0,16,16
}
pos px,py ;自艦の表示
gcopy 1,0,0,32,32
rnd z,50 ;変数zに0~49の数を代入
if a>10{ ;前回敵が表示されてから1秒以上経ってるか
if e<20{ ;敵の数が20機以下かの判定
if z=49{ ;乱数が49の時に敵を増やす
gosub *newe ;敵の出現にとぶ
}
}
}
a+=1 ;変数aに1を足す
i=0 ;変数iの値を0にする
repeat e ;敵の数だけループさせる
ex.i+=4 ;敵の移動
pos ex.i,ey.i ;敵の表示
gcopy 1,32,0,32,32
i+=1 ;変数iに1を足す
loop
if e>0 { ;敵艦が表示されていたら以下を実行
rnd z,e ;ランダムに敵艦を1つ選択する
rnd r,etmx ;ランダムに敵弾を1つ選択する
if s.z>99 { ;選択した敵艦が前回に弾を表示してから一定時間経っていたら以下を実行
if etf.r=0 { ;選択した敵弾が画面に表示されていなかったら以下を実行
etx.r=ex.z+8 ;選択した敵艦の位置に選択した敵弾の位置を合わせる
ety.r=ey.z
etf.r=1 ;敵弾の表示状況の更新
s.z=0
}
}
i=0
repeat etmx
if etf.i=1 {
pos etx.i,ety.i
gcopy 1,80,0,16,16
etx.i+=2
ety.i-=4
s.i+=10
if (etx.i<0)|(etx.i>624)|(ety.i<60) {
etf.i=0
}
}
i+=1
loop
}
if emx>1 {
goto *owari
}
redraw 1 ;メイン画面の更新
await 1 ;0.01秒待つ
goto *main ;*mainに戻る
;------背景の設定------
*haikei ;ラベル
color 0,255,255 ;画面を水色に塗りつぶす
boxf 0,0,639,479
color 0,0,255 ;画面の下を青色に塗る
boxf 0,60,639,479
return ;メインループに戻る
;------敵の出現------
*newe ;ラベル
rnd ey.e,340 ;乱数でy軸に値を設定
ey.e+=100
a=0 ;変数aのリセット
e+=1 ;変数eに1を足す
return ;メインループに戻る
;------ゲームの終了------
*owari
color 0,0,0
boxf 0,0,639,479
color 255,0,0
font "MS ゴシック",60,1
pos 150,200
mes "ゲームクリア"
redraw 1
stop
;------当たり判定------
*hitto
i=0
repeat e
x=ex.i
y=ey.i
if (x+32>tx)&(tx+16>x)&(y+32>ty)&(ty>y) {
ex.i=640
tf=0
}
i+=1
loop
return
---------------------------------------------------------------
面倒くさくなったでしょ。私にとって,わかりやすくするために「適当にコメントを入れて」と注文を出すのだが,かずがテキトーに入れたコメントは,もうひとつわかりにくい。
「変数の数が多くて,わかりにくいだろう。ムダなものもあるかもしれないから,変数の一覧をコメントにして書き出して,変数の目的を書き添えるとわかりやすくなるよ」などと猫なで声で誘導するのだが,先に進みたくてならないかずには届かない。
この夜は1時間半ぶっつづけでプログラムを作っていた。私の役目は,かずがにっちもさっちもいかなくなった時に,「ウィンドウタイトルに文字列を表示するtitleコマンドで変数の値を表示させてごらん」とか,「全部一度に解決しようとしないで,//を入れてコメントにして,どこがちゃんと動いて,どこを実行するとおかしくなるのか,少しずつ確かめていかれ。」などと,かずが途方にくれないようにサポートするだけになってしまっている。
プログラミングにおける彼の自立を(少し早すぎるようで,危ぶまれる),喜ぶべきか寂しがるべきか,あるいはソースをちゃんと理解して,ついていくべきか,それが問題である。
第156話 魚雷船ゲームも作成中
あなたにお薦め
今日のピックアップ
-
不要な製品の購入を強いられる、ブロードコムのVMware買収で悪影響
-
米GitHubが「Workspace」を開始、ソフト開発の課題をAIが自動解決
-
Core Ultra搭載の「dynabook R9」、35時間駆動の実力
-
パスワード管理や不正サイト対策はEdgeもChromeも充実、複数機器の同期は選べる
-
コメント関連が使いやすくなった新Acrobat Reader、「クイックツールバー」に集約
-
M3搭載「MacBook Air」とM2搭載モデルを比較、外付けディスプレー2台接続も試す
-
有名人になりすまして投資広告を掲載、SNSで接触してみた結果
-
NECが受注したe-Govのガバクラ移行が大幅遅延、構築手法の途中変更が影響か
-
IIJ公式サイトのPVがある日突然13倍に、バズったわけでも炎上したわけでもない裏側
-
アリババのデジタル人材育成プログラム、世界の起業家や若者4千人以上にノウハウ提供
-
縦長のWebページ全体を画像で保存、メニューから選べるEdgeがChromeより便利
-
「四重苦」で伸び悩む日本市場、なぜ海外スマホメーカーが開拓に本腰を入れるのか
注目記事
おすすめのセミナー
-
DX時代のベーシックスキル
わかりやすい構成のeラーニングで、DX時代の働き方の基本となるビジネススキルを、先人の知見、先進...
-
1級建築施工管理技士 第1次検定対策(オンラインサービス)
本サービスは、1次検定突破に向けて不可欠な知識を学べる「動画講義」と、実力と知識の定着を測るため...
-
2024年度 技術士 建設部門 第二次試験対策「個別指導」講座
本講座は、効率的な勉強を通じて、2023年度 技術士 建設部門 第二次試験合格を目指される方向け...
-
技術士 建設部門 第二次試験対策 動画速修コース(オンラインサービス)
本コースは、“点が取れる論文の書き方”に絞った講義となっており、各問題の特徴から基本的な文章の書...
-
1級土木施工管理技士 第1次検定試験対策(オンラインサービス)
本サービスは、オンラインで1次検定突破に向けて不可欠な基本知識を学べる「動画講義」と過去問を繰り...
-
生成AIモデル学習を実現するチップレットパッケージ
スケーラブルなチップレットパッケージの傾向と課題を解説。光電融合技術に基づくCPOによるシステム...
-
自動車未来サミット2024
100年に1度といわれる変革期にある自動車業界。最近は電動化トレンドに変化が見られます。自動車業...
-
「仮説立案」実践講座
例えば「必要な人材育成ができていない」といった課題に、あなたならどう取り組みますか? このセミナ...
注目のイベント
-
日経クロステックNEXT 関西 2024
2024年5月16日(木)~5月17日(金)
-
日経ビジネスCEOカウンシル
2024年5月16日(木)17:00~19:50
-
WEURO DIVERSITY & INCLUSION FORUM
2024年5月17日(金)13:00~17:30(予定)
-
VUCA時代に勝ち残る戦略的サプライチェーン構築に向けて
2024年 5月 24 日(金) 10:00~16:20
-
人手不足を乗り越える 日本の産業界成長のシナリオ2024
2024年5月30日(木)10:20~17:45
-
人的資本経営版:日経ビジネスLIVE 2024 Spring
2024年6月3日(月)~6月5日(水)
-
DX Insight 2024 Summer
2024年6月4日(火)、5日(水)
-
付加価値ある意匠デザインを実現するものづくり技術2024
2024年6月7日(金)10:30 ~ 17:00
-
WOMAN EXPO 2024
2024年6月8日(土)10:00~17:30
-
デジタル立国ジャパン2024
2024年6月10日(月)、11日(火)
おすすめの書籍
-
2024-25年版 技術士第二次試験 建設部門 最新キーワード100
技術士試験の最新の出題内容や傾向を基に23-24年版を大幅に改訂。必須科目や選択科目の論述で不可...
-
実践 建設カーボンニュートラル
建設事業の脱炭素化の取り組みを網羅した初の書籍。材料、設計、施工、供用、解体の“建設ライフサイク...
-
図解 木造住宅トラブルワースト20+3 「雨漏り事故」「構造事故」の事例から学ぶ原因と対策
木造住宅のトラブルを「雨漏りワースト20」と「構造ワースト3」として類型化。原因と対策と損害額が...
-
東京大改造2030 都心の景色を変える100の巨大プロジェクト
建築や土木の専門記者が取材した、一歩踏み込んだ東京の再開発プロジェクトを豊富な写真や図面で紹介し...
-
一級建築士矩子と考える危ないデザイン
住宅や建築物で起こる身近な事故と背景、効果的な防止策を人気建築漫画「一級建築士矩子の設計思考」の...
-
ソフトバンク もう一つの顔 成長をけん引する課題解決のプロ集団
ソフトバンクにはモバイルキャリア事業以外のもう一つの顔が存在する。本書ではキーパーソンへのインタ...
日経BOOKプラスの新着記事
日経クロステック Special
総合
- ヤマ発高収益マリン事業、キャリア採用強化
- Webサイト運営の新手法「サイト群管理」
- AI活用を加速するストレージの要件は
- 経営の見える化を目指すマイナビの挑戦
- 生成AIとサイバー攻撃/重要な4つの観点
- PayPay銀行、新時代の銀行インフラ
- “新しい働き方”にふさわしいPCとは?
- システム運用を劇的に効率化するには?
- デザイナー、技術者必見のものづくり技術展
- 【生成AI事例】デジタルで現場をDX化
- 「クラウド時代のあるべき運用」を熱く議論
- 業務や役割に応じた「社員に最適なPC」
- 生成AI活用へ「待ったなし」成功の秘訣
- 目指すは相互に行き来できるマルチクラウド
- デルタ電子とロームが語る次世代電源戦略
- 医療セキュリティ対策の鍵はSaaS化?
- 「サーバ―」部門満足度トップ企業に訊く
- NTTドコモ支援の実践型教育プログラム
- 大教大とマウスパソコン教室の在り方を研究
- 欧州トップ企業語る日本のセキュリティー
- ジェイテクトエレクトロニクスのDX事例
- ビジネスPC、ITデバイス購買DXを推進
- 生成AIの活用の鍵は「内製とアジャイル」
- AIと自動化でエンジニアの能力を解き放て
- 専門家が斬る日本の意識と対策の現状は?
- 3段階で考える、DXで企業力を高める方法
- 守りながら攻める“製造DX”の方法論とは
- ランサムウエアから診療データはこう守る
- 最新サーバーに学ぶ熱設計の最前線
- PC管理の課題を課題をまるごと解決
- 日本語に強い「和製生成AIモデル」が誕生
- 動画解説>生成AIからDX変革まで
- 木質建築空間デザインコンテスト受付開始
- 生成AI活用でSAP BTPの価値が進化
- ServiceNowでDXを加速≫方法は
- SAPプロジェクトの全体像をいかに描くか
- 先端教育の現場で活躍する大学副学長が使い続けるレッツノート
- 毎月更新。電子エンジニア必見の情報サイト
- コンストラクション倶楽部