俄罗斯方块-双人对战

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//#include "stdafx.h"

#include //为了使用API函数

#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(GetStockObject(WHITE_BRUSH));

wndcls.hCursor = LoadCursor(hInstance, IDC_ARROW);

wndcls.hIcon = LoadIcon(hInstance, IDI_APPLICATION);

wndcls.hInstance = hInstance;

wndcls.lpfnWndProc = WndProc;

wndcls.lpszClassName = szClassName;

wndcls.lpszMenuName = NULL;

相关文档
最新文档