⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 game.cpp

📁 一个控制台VC++2005版的俄罗斯方块源码
💻 CPP
字号:
#include"game.h"

CGame::CGame()
{
	level=1;
	oldlevel=1;
	scort=0;
	oldscort=0;	
	gameCount=-30;
	gamePauseCount=0;
	isRed=false;
	backColor=15;
	charColor=10;//绿
	ClearBuffer(33,10,6,3,backColor);
	ClearBuffer(2,1,20,20,backColor);
	DrawText( 25, 15, charColor,"按1:重新开始");
	DrawText( 25, 17, charColor,"Enter: 暂停");
	DrawText( 25, 19, charColor,"Esc:退出游戏");	
	itoa(scort,scortStr,10);				
	DrawText( 33, 12, charColor,scortStr);
	itoa(level,levelStr,10);
	DrawText( 33, 10, charColor,levelStr);
	fangkuai=new CFK;
}

CGame::~CGame()
{	
	delete fangkuai;
}

GameState CGame::Logic(bool goOn)
{
	fflush( stdin );
	if(_kbhit())
	{
		int a=_getch();
		char input[2];
		if(a<0)
		{
			input[0] = a;
			input[1] = _getch();
		}
		else
		{
			input[1] = a;
		}
		switch (input[1])
		{
		case KEY_UP:
		case 'w':
		case 'W':
			if(goOn)
			{
				fangkuai->change();
			}			
			break;
		case KEY_DOWN:
		case 's':
		case 'S':
			if(goOn)
			{
				scort+=fangkuai->moveDown();
				if(scort<oldscort)
				{
					return OVER;
				}
				if(oldscort!=scort)
				{				
					itoa(scort,scortStr,10);				
					DrawText( 33, 12, charColor,scortStr);	
					oldscort=scort;
					level=scort/1000+1;
					if(oldlevel!=level)
					{
						itoa(level,levelStr,10);
						DrawText( 33, 10, charColor,levelStr);
						oldlevel=level;
					}
				}
			}						
			break;
		case KEY_LEFT:
		case 'A':
		case 'a':
			if(goOn)
			{
				fangkuai->moveLeft();
			}			
			break;
		case KEY_RIGHT:
		case 'd':
		case 'D':
			if(goOn)
			{
				fangkuai->moveRight();
			}			
			break;
		case KEY_ENTER:
			if(goOn)
			{
				return PAUSE;
			}
			DrawText( 25, 17, charColor,"Enter: 暂停");
			return GAME;
			break;
		case KEY_ESC:
			return EXIT;
			break;
		case '1':
			level=1;
			oldlevel=1;
			scort=0;
			oldscort=0;	
			gameCount=-30;
			itoa(scort,scortStr,10);
			ClearBuffer(33,10,6,3,backColor);
			DrawText( 33, 12, charColor,scortStr);
			itoa(level,levelStr,10);
			DrawText( 33, 10, charColor,levelStr);
			ClearBuffer(2,1,20,20,backColor);
			fangkuai->next();
			return GAME;
			break;
		case ' ':
			if(goOn)
			{
				scort+=fangkuai->moveButton();
				if(scort<oldscort)
				{
					return OVER;
				}
				if(oldscort!=scort)
				{				
					itoa(scort,scortStr,10);				
					DrawText( 33, 12, charColor,scortStr);	
					oldscort=scort;
					level=scort/1000+1;
					if(oldlevel!=level)
					{
						itoa(level,levelStr,10);
						DrawText( 33, 10, charColor,levelStr);
						oldlevel=level;
					}
				}
			}
			break;
		}
	}
	if(goOn)
	{
		++gameCount;
		if(gameCount==1000)
		{
			gameCount=0;
		}
		if(gameCount>=0&&gameCount%(15-level)==0)
		{
			scort+=fangkuai->moveDown();
			if(scort<oldscort)
			{
				return OVER;
			}
			if(oldscort!=scort)
			{
				itoa(scort,scortStr,10);				
				DrawText( 33, 12, charColor,scortStr);	
				oldscort=scort;
				level=scort/1000+1;
				if(oldlevel!=level)
				{
					itoa(level,levelStr,10);
					DrawText( 33, 10, charColor,levelStr);
					oldlevel=level;
				}
			}
		}	
		return GAME;
	}else
	{
		gamePauseCount++;
		if(gamePauseCount==1000)
		{
			gamePauseCount=0;
		}
		
		if(gamePauseCount%3==0)
		{
			if(isRed)
			{
				DrawText( 25, 17, 12,"Enter: 继续");
				
			}else
			{
				DrawText( 25, 17, 10,"Enter: 继续");
			}
			isRed=!isRed;
		}				
	}
	return PAUSE;
}
//IntToWstr

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -