1月11日 かずのHSP (Hot Soup Processor)タイムは今日で4回目だ。前回は細長い長方形をマウスの動きに追随するように動かしていたが,今回の目標は勝手に動くものを作ることだ。具体的には,小さな四角形をウィンドウの上下に移動させることである。
これが完成イメージだ。小さいボールが上から落ちてくるように見えれば,成功である。
まず,小さな四角形がどうすれば勝手に落ちてくるのか考えてごらんとかずに問題を出した。
「Y軸の値を変化させればいいがや」と気づくのに,たいして時間は掛からなかったが,小さな四角形を発生させて,徐々に落としていくアルゴリズムを考えるのには相当の時間が必要だった。
「ラベルを設定して,そこに繰り返しgoto 文で飛ばすことで繰り返しを行う」とか「システム変数winyでウィンドウのY軸の最大値がわかるので,それより先には描けないぞ」,「四角形の高さも計算に入れないといけないよ」などと,後ろから何度もアドバイスをしているうちに下記のプログラムが出来上がった。
----------------------------------------
screen 0,600,480,1
cls 4
oldy=-1
x=300
y=5
*draw_r
title "winyの値" + winy +"yの値" + y
if (y >= (winy-4) ) {
stop
}
if (oldy >= 0) {
color 0,0,0
boxf x,oldy,x+4,oldy+4
}
color 200,255,100
boxf x,y,x+4,y+4
oldy=y
y+=2
wait 5
goto *draw_r
----------------------------------------
前に書いた四角形のY座標の値をoldyに覚えておいてcolor 0,0,0(黒)で四角形を描くことで前の四角形を消すテクニックは,前回(145話参照)作ったプログラムを参考にした。waitコマンドに指定する時間(ミリ秒)を変更するとボールの落下速度が変わる。
10時になったので,ここまでにしようと言うのだが,かずは「まだ,やりたい」ときかない。「じゃ,落ちたボールがバウンドして上がるようにするには,どうすればいいか」とまた問題を出した。
「(変数)yの値を小さくすればいい」ことにはすぐ気づいた。
ではプログラム上,どうやって実現するのかとたずねると「別のラベルを作り,そこに飛ばす。そこでは,繰り返しyから2を引くようにする」というようなロジックをかずは考えた。
「いや,それは面倒だ」とyに加算する値を変数にして符号を反転させれば,余計なコードを書かなくてもいいよと説明するが,かずはキョトンとしている。
ある数の符号を反転させる(正の数を負の数に,負の数を正の数に)方法には,その数に -1を掛ける方法,つまりz = z * (-1)とする方法と,「もう1つ,引き算で求める方法があるよね。わかるか」と聞くが,返ってこない。「負の数の計算は,まだ習っていない」とかずは言う。
習っているけど忘れたんじゃないかと疑い,こうしろうに聞くと,負数の計算は中学1年で教わるとのこと。それでは,富山のような寒いところでは困らないかと「最低気温-2度,最高気温7度の日の温度差はどうやって求めるのだ」とかずに不適切な突っ込みをした。暖冬が続いたが,最近は本格的に寒い。
「9度だとはわかるけど,式はわからん」と言う。7-(-2)=7+2=9で,負の値を引くのは足すのと同じことだと説明するが,z = 0 - zで符号が反転することは理解しにくいようだ。4月から通う中学の先生になんとかしてもらおう。
なんか難しくなって今日はおしまい。
翌日,続きをやる。ボールが下端に達したら上に向かうように,逆に上端に達したら下に向かうように,Y軸の値(y)に足す値(z)の符号を反転させるようにプログラムにコードを追加する。
----------------------------------------
screen 0,600,480,1
cls 4
oldy=-1
x=300
y=5
z=2
*draw_r
title "winyの値" + winy +"yの値" + y
if (y >= (winy-4) )|(y <=2){
z=z*(-1)
}
if (oldy >= 0) {
color 0,0,0
boxf x,oldy,x+4,oldy+4
}
color 200,255,100
boxf x,y,x+4,y+4
oldy=y
y+=z
wait 3
goto *draw_r
----------------------------------------
『もしくは』ちゃ,どう書くがけ?などと質問をしながら,かずはプログラムを作っていった。HSPで,もしくは(OR)は|(縦棒)で表す。
ボールが勝手に上下に移動するようになった。プログラムを書く前は「どうしたらできるのだろう」と難しそうに感じられる処理でも,少しずつ機能を追加していけば,なんとかなるものである。
次の目標はボールを斜めに動かすことである。「まだ,続けてやりたい」というかずを「斜めに動かすのは難しいぞー」と半ば脅し,今回はここまでとした。
第146話 かず,アルゴリズムを考える
あなたにお薦め
今日のピックアップ
-
不要な製品の購入を強いられる、ブロードコムの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より便利
-
「四重苦」で伸び悩む日本市場、なぜ海外スマホメーカーが開拓に本腰を入れるのか
注目記事
おすすめのセミナー
-
「仮説立案」実践講座
例えば「必要な人材育成ができていない」といった課題に、あなたならどう取り組みますか? このセミナ...
-
CIO養成講座 【第35期】
業種を問わず活用できる内容、また、幅広い年代・様々なキャリアを持つ男女ビジネスパーソンが参加し、...
-
改革リーダーのコミュニケーション術
プロジェクトを成功に導くために改革リーダーが持つべき3つのコミュニケーションスキル—「伝える」「...
-
パワポ資料が見違える「ビジネス図解」4つのセオリー
インフォグラフィックスとは、形のない情報やデータなど伝えたいことを分かりやすい形で表現する技法で...
-
間違いだらけの設計レビュー
本セミナーでは、現場で多く見られる間違ったレビューの典型例を示し、そうならないための現場の改善策...
-
オンライン版「なぜなぜ分析」演習付きセミナー実践編
このセミナーでは「抜け・漏れ」と「論理的飛躍」の無い再発防止策を推進できる現場に必須の人材を育成...
-
問題解決のためのデータ分析活用入門
例えば「必要な人材育成ができていない」といった課題に、あなたならどう取り組みますか? このセミナ...
-
業務改革プロジェクトリーダー養成講座【第16期】
3日間の集中講義とワークショップで、事務改善と業務改革に必要な知識と手法が実践で即使えるノウハウ...
注目のイベント
-
日経クロステック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日(火)
おすすめの書籍
-
ソフトバンク もう一つの顔 成長をけん引する課題解決のプロ集団
ソフトバンクにはモバイルキャリア事業以外のもう一つの顔が存在する。本書ではキーパーソンへのインタ...
-
対立・抵抗を解消し合意に導く 改革リーダーのコミュニケーション術
本書は、改革リーダーに必須のコミュニケーション術を3つのスキルの観点からまとめ上げたものです。今...
-
もっと絞れる AWSコスト超削減術
本書ではコスト課題を解決するため、AWSコストを最適化し、テクニックによって削減する具体策を紹介...
-
優秀な人材が求める3つのこと 退職を前提とした組織運営と人材マネジメント
「学生に人気のコンサルであっても、大手企業であっても、せっかく獲得した人材が数年で辞めてしまう...
-
Web3の未解決問題
ブロックチェーン技術を主軸とするWeb3の技術について、現在の社会制度との摩擦と、その先にある新...
-
ロボット未来予測2033
ロボットの用途・市場はどう拡大していくのか。AI実装でロボットはどこまで進化するのか。技術の進展...