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

📄 dkg15.cpp

📁 【概要】 名称:DK的《贪吃蛇》-附源代码 版本:1.0.0.0 运行环境:Win9X/Me/NT/2000/XP/2003/Vista 开发环境:WinXp+VC6 软件开发者:FanSi
💻 CPP
字号:
// DKG15.cpp : Defines the entry point for the application.
//


#define STRICT
#define WIN32_LEAN_AND_MEAN

#include "stdafx.h"
#include "win.h"
#include "GameMain.h"

const TCHAR szProgram[] = _T("DKG15-《贪吃蛇》-DKink|棼紫制作");
const TCHAR szDeath[]   = _T("蛇已阵亡,回车继续。");

HICON g_IconBody = NULL;
HICON g_IconFood = NULL;
HICON g_IconNoFood = NULL;
HICON G_IconLogo = NULL;
GameMain g_Main;

/////////////////////////////////////////////////////////
//初始化和释放资源
bool InitFunc()
{
	HINSTANCE hInst = GetModuleHandle(NULL);
	g_IconBody = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON_BODY));
	g_IconFood = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON_FOOD));
	g_IconNoFood = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON_NOFOOD));
	G_IconLogo = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON_LOGO));
	//MyMessageBox(NULL,_T("初始化资源"),NULL,MB_OK,IDI_ICON_APP);
	return true;
}
bool FreeFunc()
{
	//MyMessageBox(NULL,_T("释放资源"),NULL,MB_OK,IDI_ICON_APP);
	return true;
}
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//逻辑运算
bool FrameFunc()
{
	//MessageBox(NULL,NULL,NULL,MB_OK);
	//MyMessageBox(NULL,NULL,NULL,MB_OK,IDI_ICON_APP);
	g_Main.UpData();



	return false;
}
//////////////////////////////////////////////////////////
//绘图
bool RenderFunc(HDC hDC)
{

	////////////////////////////////////////////////////
	//绘LOGO
	if (g_Main.IsLogo())
	{
		SetBkMode(hDC, TRANSPARENT);
		
		static TCHAR szName[]=_T("DK的《贪吃蛇》");
		static TCHAR szIndex[]=_T("DKGame第15部");
		static TCHAR szWirter[]=_T("DKink|棼紫 制作");
		static TCHAR szQQ[]=_T("QQ:8566427");
		static TCHAR szEmail[]=_T("DKink@qq.com");
		static TCHAR szData[]=_T("2008/10/22");
		static TCHAR szMsg[]=_T("Enter键开始,方向键移动");
		static TCHAR szCR[]=_T("FanSin Studio CopyRight 2007-2008");
		static TCHAR szMoto[]=_T("我们不断在努力进步!");
		
		TextOut(hDC,32*2,32*1,szName,_tcslen(szName));
		TextOut(hDC,32*2,32*2,szIndex,_tcslen(szIndex));
		
		TextOut(hDC,32*2,32*3,szWirter,_tcslen(szWirter));
		TextOut(hDC,32*2,32*4,szQQ,_tcslen(szQQ));
		TextOut(hDC,32*2,32*5,szEmail,_tcslen(szEmail));
		TextOut(hDC,32*2,32*6,szData,_tcslen(szData));
		TextOut(hDC,32*2,32*7,szMsg,_tcslen(szMsg));
		
		DrawIcon(hDC,32*2,32*8+16,G_IconLogo);
		TextOut(hDC,32*3+6,32*9,szCR,_tcslen(szCR));
		TextOut(hDC,32*2,32*10,szMoto,_tcslen(szMoto));

		return true;
	}

	/////////////////////////////////
	//绘制蛇身
	int i;
	for (i=0;i<g_Main.m_iBodySize;++i)
	{
		if (g_Main.m_Body[i].x != -1)
		{
			DrawIconEx(hDC,g_Main.m_Body[i].x,g_Main.m_Body[i].y,g_IconBody,16,16,0,NULL,DI_NORMAL);

		}
	}

	/////////////////////////////////
	//绘制食物

	for (i=0;i<128;++i)
	{
		if (g_Main.m_Food[i].x != -1)
		{
			DrawIconEx(hDC,g_Main.m_Food[i].x,g_Main.m_Food[i].y,g_IconFood,16,16,0,NULL,DI_NORMAL);

		}
	}
	/////////////////////////////////
	//绘非食物
	for (i=0;i<128;++i)
	{
		if (g_Main.m_NoFood[i].x != -1)
		{
			DrawIconEx(hDC,g_Main.m_NoFood[i].x,g_Main.m_NoFood[i].y,g_IconNoFood,16,16,0,NULL,DI_NORMAL);
			
		}
	}

	////////////////////////////////////
	//绘制死亡后的提示信息
	if (g_Main.IsDeath())
	{
		TextOut(hDC, 200, 2, szDeath, lstrlen(szDeath));
	}


	return false;
}

class DWindow : public KWindow
{
    void OnKeyDown(WPARAM wParam, LPARAM lParam)
    {
		////////////////////////
		//Press ESC to quit
        if ( wParam==VK_ESCAPE )
            PostMessage(m_hWnd, WM_CLOSE, 0, 0);

		////////////////////////////
		//回车开始
		if (((wParam==VK_RETURN)
			&&(g_Main.IsLogo()))||g_Main.IsDeath())
		{
			g_Main.Start();
		}

		if (wParam==VK_UP)
		{
			g_Main.m_ivx = 0;
			g_Main.m_ivy = -2;
		}

		if (wParam==VK_DOWN)
		{
			g_Main.m_ivx = 0;
			g_Main.m_ivy = 2;
		}

		if (wParam==VK_LEFT)
		{
			g_Main.m_ivx = -2;
			g_Main.m_ivy = 0;
		}

		if (wParam==VK_RIGHT)
		{
			g_Main.m_ivx = 2;
			g_Main.m_ivy = 0;
		}
    }
	
    void OnDraw(HDC hDC)
    {
        //TextOut(hDC, 0, 0, szHint, lstrlen(szHint));
    }
	
public:
    
};


int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, 
                   LPSTR lpCmd, int nShow)
{
    DWindow win;

	win.System_SetState(my_FRAMEFUNC,FrameFunc);

	win.System_SetState(my_RENDERFUNC,(myCallback)RenderFunc);
	win.System_SetState(my_FREEFUNC,FreeFunc);
    
    win.CreateEx(
		WS_EX_TOPMOST, szProgram, szProgram,
		WS_POPUPWINDOW | WS_CAPTION | WS_MINIMIZEBOX,
		400,
		400,
		NULL, NULL, hInst);
	
	InitFunc();

    win.ShowWindow(nShow);
	
    win.UpdateWindow();
	
    return win.MessageLoop();
}

⌨️ 快捷键说明

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