結構面倒
intblocks[100][100];
BOOL WriteBoxOLDBox(){int width =24;HDC hdc = GetDC(hWnd);HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 48));for (int y = 0; y < 30; y++){for (int x = 0; x < 8; x++){if (blocks[y][x] == 0){continue;}RECT Rect = { 0,0,48,48 };BOOL ret;Rect.left = width * x + 1;Rect.right = width * (x + 1) - 1;Rect.top = width * y + 1;Rect.bottom = width * (y + 1) - 1;ret = FillRect(hdc, &amp;Rect, hBrush);}}DeleteObject(hBrush);returnFALSE;}
この辺は めんどくさくはあるけど みてわかってほしい
描画したWriteBoxとおなじ BOXが落ちた場所(BOXの有無)を保存しておく
ここがわかりにくいといえば わかりにくい
BOOL SaveBoxI(){blocks[y ][x] = 1;blocks[y+1][x] = 1;blocks[y+2][x] = 1;blocks[y+3][x] = 1;returnTRUE;}
テトリス風 落ちてくるブロックの描き方 わかりやすく関数化してみた まずはブロックの種類は3種類 WriteBoxLとWriteBoxIとWriteBoxZ の違いをよく見比べて 自力で違いがわかれば プログラ...
// WindowsProject7.cpp: アプリケーションのエントリ ポイントを定義します。//#include "stdafx.h"#include "WindowsProject7.h"#define MAX_LOADSTRING 100// グローバル変数:HINSTANCE hInst; ...
結構面倒 過去のブロックを覚えておく領域 int blocks[100][100]; 過去のブロックを再描画 BOOL WriteBoxOLDBox() { int width = 24; HDC hdc = GetDC(hWnd); HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 48)); for (int y = 0; ...
次はシューティングなどでもよくある 当たり判定 つまり過去の落ちた残骸のBOXと 今のBOXがあたるかどうかの判定 テトリスのBOXをあたりはんてい というのはどうかとはおもうけど ...