俄罗斯方块-双人对战
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//#include "stdafx.h"
#include
#include
#include
#include
#define rand_a 4 //
#define BLOCKWIDTH 20 //单个方块大小
#define NUMLINEBLOCKS 18 //行数
#define NUMCOLUMNBLOCKS 10 //列数
#define ID_TIMER 1 //定时器ID
#define BLOCKSTYLES (sizeof (Blocks) / sizeof (Blocks[0])) //方块的种类数//游戏区各方格顶点布尔值,代表该方格是否有方块
#define cnt_boxMax 1000
bool GameClient[NUMCOLUMNBLOCKS][NUMLINEBLOCKS];
bool GameClientR[NUMCOLUMNBLOCKS][NUMLINEBLOCKS];
static int cF_R, cS_R, cF, cS; //随机方块图形对应的第一、二纬
static int FstDimen[cnt_boxMax], SecDimen[cnt_boxMax];
static int Score,Score1,Score2; //得分//定义各方块形状,以点表示
static bool pause = false; //暂停
static POINT Block[4], NextBlock[cnt_boxMax][4];
static POINT BlockR[4];
int Cnt_BoxNum=0;//下落的箱子个数
int Cnt_BoxNumR=0;//下落的箱子个数-右
bool CanDownR(POINT pt[]);
//下落实现
void DownR(POINT pt[]);
//判断是否可以左移
bool CanLeftR(POINT pt[]);
//实现左移
void LeftR(POINT pt[]);
//判断是否可以右移
bool CanRightR(POINT pt[]);
//实现右移
void RightR(POINT pt[]);
//判断是否可以变形
bool CanChangeR(POINT pt[]);
//实现变形
void ChangeR(POINT pt[]);
//消行处理以及分数结算
void DelSqureR(HWND);
void GenrRand(int RandCnt);
struct
{
POINT pt[4];
}
Blocks[][4] =
{
0, 0, 1, 0, 1, 1, 1, 2, 2, 0, 0, 1, 1, 1, 2, 1, 1, 0, 1, 1, 1, 2, 2, 2, 0, 1, 1, 1, 2, 1, 0, 2, //正7
1, 0, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 2, 1, 2, 2, 1, 0, 1, 1, 0, 2, 1, 2, 0, 0, 0, 1, 1, 1, 2, 1, //反7
1, 0, 1, 1, 1, 2, 1, 3, 0, 1, 1, 1, 2, 1, 3, 1, 1, 0, 1, 1, 1, 2, 1, 3, 0, 1, 1, 1, 2, 1, 3, 1, //1
0, 0, 1, 0, 1, 1, 2, 1, 2, 0, 1, 1, 2, 1, 1, 2, 0, 0, 1, 0, 1, 1, 2, 1, 2, 0, 1, 1, 2, 1, 1, 2, //Z
1, 0, 2, 0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 1, 2, 2, 1, 0, 2, 0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 1, 2, 2, //反Z
0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, //田字
1, 0, 0, 1, 1, 1, 2, 1, 0, 0, 0, 1, 1, 1, 0, 2, 0, 0, 1, 0, 2, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 2 //尖头
};
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS wndcls;
TCHAR szClassName[] = TEXT("Terics"),
szWindowName[] = TEXT("Aka's Terics");
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = static_cast
wndcls.hCursor = LoadCursor(hInstance, IDC_ARROW);
wndcls.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
wndcls.hInstance = hInstance;
wndcls.lpfnWndProc = WndProc;
wndcls.lpszClassName = szClassName;
wndcls.lpszMenuName = NULL;