第5講 ブロック崩しその3(ブロックを描き、ボールがブロックに当たったら跳ね返るようにする)
第2話 ブロックを描く
第5講第1話課題解答例
02
を実現するプログラム解答例
#include "DxLib.h"
void maru(); //bar(バー)区別するためにボールをmaruとする maru用の変数はmx等と表す。
void sikaku(); //bar(バー)と区別するためにblock(ブロック)をsikaku(しかく)とする。sikaku用の位置を表す変数はsy、sxとする。
int mx = 10, my = 10; //bar(バー)やblock(ブロック)と区別するためにball(ボール)はmaru(まる)とする。
int sx = 0, sy = 100; //sikaku(しかく)すなわちブロックの横位置と縦位置、初期位置の決定
const int houkougae = -1; //ほうこうがえ 方向チェンジ
int mx_houkou = -1; //mxの最初の方向
int my_houkou = -1; //myの最初の方向
int kiiro = GetColor(255, 255, 0); //黄色に出席番号を割り振りその番号を箱kiiroに収納
int aka = GetColor(255, 0, 0); //黄色に出席番号を割り振りその番号を箱kiiroに収納
int midori= GetColor(0, 255, 0); //緑色に出席番号を割り振りその番号を箱midoriに収納
int ao = GetColor(0, 0, 255); //青色に出席番号を割り振りその番号を箱aoに収納
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
  ChangeWindowMode(true); //ウィンドウモードの切り替え
  SetGraphMode(800, 1000, 32); //ウインドウサイズの変更
  if (DxLib_Init() == -1)return(-1);  // DXライブラリ初期化処理

  SetDrawScreen(DX_SCREEN_BACK); //裏画像を描画対象に加える(2017/06/28追加) 画面のちらつき対策
  while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) {
    maru(); //ボールの位置を計算して、その位置にボールを描く社員
    sikaku(); //ブロックの位置を計算して、その場所にブロックを描く社員 将来的には当たったら消えるようにする仕事も担当する
  }

  WaitKey();   // キー入力待ち
  DxLib_End();  // DXライブラリ終了処理
  return 0;
}
void maru() { //ボールの位置を計算して、その位置にボールを描く社員
  DrawCircle(mx, my, 10, kiiro, true); //ボールを描く
  if (mx == 10)mx_houkou *= houkougae;
  if (mx == 790)mx_houkou *= houkougae;
  if (my == 10)my_houkou *= houkougae;
  if (my == 988)my_houkou *= houkougae;
  mx += 2 * mx_houkou;
  my += 6 * my_houkou;
}
void sikaku() {
  DrawBox(sx, sy, sx + 80, sy + 40, aka, true);
  DrawBox(sx+80, sy, sx + 160, sy + 40, midori, true);
  
DrawBox(sx + 160, sy, sx + 240, sy + 40, ao, true);
}
(文字単位のコピペはできます
これを繰り返していけば、
02
は実現できますが、
あまりにも芸がありませんね。
同じことの繰り返しです。
皆さんはもうわかっていますね。
そうです。
第4講第3話の繰り返し処理を使えば、
できます。
ですが、第4講第3話で学んだ繰り返し処理=ループ処理は、
1次元処理です。
1次元というのは直線です。
残念ながら、ブロックは横方向と縦方向の2つの方向を持って並んでいます。
つまり、2次元に並んでいます。
次元というのは方向の数です。
私たちの住んでいる世界は、縦・横・高さの3つの方向を持っているから、
3次元です。
時間も方向として考えれば4次元ですが、
最先端の物理学の理論によれば、
なんと我々の住んでいる宇宙は本当は、
11次元、時間を除いても10次元だというのです。
縦・横・高さ以外の方向があるのに、
それが見えずに、
しかも、狭い3次元空間の中にとどまっているのが私たちなのだというのです。
光も電磁波も宇宙船もこの3次元世界から抜け出せないのですが、
ただ一つ抜け出せるものがあります。
それは・・・・
重力です。
そして、10次元空間の中にたくさんの3次元空間(パラレルワールド)が浮かんでいる−−−
と最先端物理学理論である超弦理論は考えています。
私たちの科学力では、私たちの3次元空間を抜け出すことはできませんが、
パラレルワールドの中にはものすごい科学力を持った人たちがいて、
他のパラレルワールドから私たちが住む空間に来ている可能性はあります。
私たちの住む空間=宇宙では、人間のような高度な文明を持っている惑星は、
少なくても何万年光年
(光年とは、秒速30万キロメートルの光の速さ進んで1年かかる距離)先だといいます。
何万年もかけて遠い惑星から、宇宙人が来ている可能性は0です。
地球に来られるほどの科学力を持っている惑星の人たちなら、
わざわざ何万年もかけて地球に来る意味がありません。
でも、近くのパラレルワールドから、来てている可能性は否定できないですね。
どういうことかを説明するために、3次元空間を直線で表現して説明してみましょう。
01
上の線が私たちの宇宙です。
そして赤が地球、緑が何万年光年も離れた高度な文明を持った惑星です。
下の線がパラレルワールド。
青がその中の高度な科学力を持った惑星。
次元を超えられば圧倒的に青の惑星の方が近いですよね。

ごめんなさい。脱線です。
時々脱線するのもこの授業の特徴です。
話を元に戻しましょう。
ブロックは2次元に並んでいます。
そうすると繰り返し処理も2次元で行う必要があるのです。
どうしたらよいのでしょうか。
申し訳ありませんがまた基礎の学習が必要です。





第1話へ  第3話へ
a

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ