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

📄 setcontrolgui.cpp

📁 3D俄罗斯方块源码.rar
💻 CPP
字号:
/********************************************************************
文件名: SETCONTROLGUI.cpp
Copyright (c)2004  红孩儿工作室
创建人  : 卞安
创建时间: 2004-5-18 12:33:30
版本: 1.0
类名: SetControlGui
说明:
	显示设置游戏控制类/数据与键盘的交互的界面类
********************************************************************/
#include "SetControlGui.h"
#include "BASIC.h"
//---------------------------------------------------------------
/********************************************************************
函数名  : 构造函数
输入参数: 
输出参数: 
功能描述:
将指针设为NULL
全局变量: 无
调用模块: 无
********************************************************************/
   SetControlGui::SetControlGui()
   {
	   m_pFont1=NULL;
	   m_pFont2=NULL;
	   m_pFontkey=NULL;
     m_pD3DDevice=NULL;
   }
/********************************************************************
函数名  : 析构函数
输入参数: 无
输出参数: 无
功能描述:
删除指针并释放变量
全局变量: 无
调用模块: 无
********************************************************************/
   SetControlGui::~SetControlGui()
   {
    SAFE_DELETE(m_pFont1);
	SAFE_DELETE(m_pFont2);
	SAFE_DELETE(m_pFontkey);
   }
/********************************************************************
函数名  : init
输入参数: 
        _hWnd:主窗口
		pd3dDevice:D3D设备
输出参数: 
         TRUE 成功
		 FALSE 失败
功能描述:初始化
将指针设为NULL
全局变量: 无
调用模块: 无
********************************************************************/
   bool SetControlGui::init(HWND _hWnd,LPDIRECT3DDEVICE8 pd3dDevice)
   {
	m_x1=150;
	m_x2=500;
	m_y1=50;
	m_y2=50;
    m_selected1=0;
    m_selected2=0;
	m_hWnd=_hWnd;
	m_pD3DDevice=pd3dDevice;
    lstrcpy( m_strFont, _T("Arial Black") );
    m_dwFontSize  = 40;
    m_pFont1= new CD3DFont( m_strFont, m_dwFontSize );
	m_pFont1->InitDeviceObjects(m_pD3DDevice);
	m_pFont1->RestoreDeviceObjects();
    lstrcpy( m_strFont, _T("Arial") );
    m_dwFontSize  = 20;
    m_pFont2= new CD3DFont( m_strFont, m_dwFontSize );
	m_pFont2->InitDeviceObjects(m_pD3DDevice);
	m_pFont2->RestoreDeviceObjects();
    lstrcpy( m_strFont, _T("System") );
    m_dwFontSize  = 15;
    m_pFontkey= new CD3DFont( m_strFont, m_dwFontSize );
	m_pFontkey->InitDeviceObjects(m_pD3DDevice);
	m_pFontkey->RestoreDeviceObjects();
	m_SetControl.initKeyboard(_hWnd);
	strcpy(m_info11,m_SetControl.DoKeyName(m_SetControl.m_control.iLeftKey));
	strcpy(m_info12,m_SetControl.DoKeyName(m_SetControl.m_control.iRightKey));
	strcpy(m_info13,m_SetControl.DoKeyName(m_SetControl.m_control.iUpKey));
	strcpy(m_info14,m_SetControl.DoKeyName(m_SetControl.m_control.iDownKey));
	strcpy(m_info15,m_SetControl.DoKeyName(m_SetControl.m_control.iEndKey));
	strcpy(m_info21,m_SetControl.DoKeyName(m_SetControl.m_control2.iLeftKey));
	strcpy(m_info22,m_SetControl.DoKeyName(m_SetControl.m_control2.iRightKey));
	strcpy(m_info23,m_SetControl.DoKeyName(m_SetControl.m_control2.iUpKey));
	strcpy(m_info24,m_SetControl.DoKeyName(m_SetControl.m_control2.iDownKey));
	strcpy(m_info25,m_SetControl.DoKeyName(m_SetControl.m_control2.iEndKey));
	return true;
   }
   void SetControlGui::Render()
   {
   m_pFont1->DrawText(m_x1-80,m_y1, D3DCOLOR_ARGB(255,255,255,255),"PLAYER1"); 
   m_pFont1->DrawText(m_x2-80,m_y2, D3DCOLOR_ARGB(255,255,255,255),"PLAYER2"); 
   m_pFont2->DrawText(m_x1-100,m_y1+180, D3DCOLOR_ARGB(255,255,255,0),"LEFT"); 
   m_pFont2->DrawText(m_x1+100,m_y1+180, D3DCOLOR_ARGB(255,255,255,0),"RIGHT"); 
   m_pFont2->DrawText(m_x1,m_y1+80, D3DCOLOR_ARGB(255,255,255,0),"ROTATE"); 
   m_pFont2->DrawText(m_x1,m_y1+280, D3DCOLOR_ARGB(255,255,255,0),"DOWN");
   m_pFont2->DrawText(m_x1,m_y1+380, D3DCOLOR_ARGB(255,255,255,0),"GO!");
   //--------------键盘显示--------------------------------
   if(m_updated1==1)
   {
	   int t_ikey=m_SetControl.ProcessKBInput();
	   if(t_ikey!=0)
	   {
	   m_SetControl.m_control.SetLeftKey(t_ikey);
	   strcpy(m_info11,m_SetControl.DoKeyName(t_ikey));
	   }
   m_pFontkey->DrawText(m_x1-50,m_y1+230, D3DCOLOR_ARGB(255,255,255,255),m_info11); 
   }
   else
   {
   m_pFontkey->DrawText(m_x1-50,m_y1+230, D3DCOLOR_ARGB(150,255,0,0),m_info11); 
   }
   if(m_updated1==2)
   {
	   int t_ikey=m_SetControl.ProcessKBInput();
	   if(t_ikey!=0)
	   {
	   m_SetControl.m_control.SetRightKey(t_ikey);
	   strcpy(m_info12,m_SetControl.DoKeyName(t_ikey));
	   }
   m_pFontkey->DrawText(m_x1+160,m_y1+230, D3DCOLOR_ARGB(255,255,255,255),m_info12); 
   }
   else
   {
   m_pFontkey->DrawText(m_x1+160,m_y1+230, D3DCOLOR_ARGB(150,255,0,0),m_info12); 
   }
   if(m_updated1==3)
   {
	   int t_ikey=m_SetControl.ProcessKBInput();
	   if(t_ikey!=0)
	   {
	   m_SetControl.m_control.SetUpKey(t_ikey);
	   strcpy(m_info13,m_SetControl.DoKeyName(t_ikey));
	   }
   m_pFontkey->DrawText(m_x1+30,m_y1+130, D3DCOLOR_ARGB(255,255,255,255),m_info13); 
   }
   else
   {
   m_pFontkey->DrawText(m_x1+30,m_y1+130, D3DCOLOR_ARGB(150,255,0,0),m_info13); 
   }
   if(m_updated1==4)
   {
	   int t_ikey=m_SetControl.ProcessKBInput();
	   if(t_ikey!=0)
	   {
	   m_SetControl.m_control.SetDownKey(t_ikey);
	   strcpy(m_info14,m_SetControl.DoKeyName(t_ikey));
	   }
   m_pFontkey->DrawText(m_x1+50,m_y1+330, D3DCOLOR_ARGB(255,255,255,255),m_info14);
   }
   else
   {
   m_pFontkey->DrawText(m_x1+50,m_y1+330, D3DCOLOR_ARGB(150,255,0,0),m_info14);
   }
   if(m_updated1==5)
   {
	   int t_ikey=m_SetControl.ProcessKBInput();
	   if(t_ikey!=0)
	   {
	   m_SetControl.m_control.SetEndKey(t_ikey);
	   strcpy(m_info15,m_SetControl.DoKeyName(t_ikey));
	   }
   m_pFontkey->DrawText(m_x1+40,m_y1+430, D3DCOLOR_ARGB(255,255,255,255),m_info15);
   }
   else
   {
   m_pFontkey->DrawText(m_x1+40,m_y1+430, D3DCOLOR_ARGB(150,255,0,0),m_info15);
   }
switch(m_selected1)
{
case 1:
  m_pFont2->DrawText(m_x1-100,m_y1+180, D3DCOLOR_ARGB(255,255,0,255),"LEFT"); 
	break;
case 2:
   m_pFont2->DrawText(m_x1+100,m_y1+180, D3DCOLOR_ARGB(255,255,0,255),"RIGHT"); 
	break;
case 3:
   m_pFont2->DrawText(m_x1,m_y1+80, D3DCOLOR_ARGB(255,255,0,255),"ROTATE"); 
	break;
case 4:
   m_pFont2->DrawText(m_x1,m_y1+280, D3DCOLOR_ARGB(255,255,0,255),"DOWN");
	break;
case 5:
   m_pFont2->DrawText(m_x1,m_y1+380, D3DCOLOR_ARGB(255,255,0,255),"GO!");
	break;
}
   m_pFont2->DrawText(m_x2-100,m_y2+180, D3DCOLOR_ARGB(255,255,255,0),"LEFT"); 
   m_pFont2->DrawText(m_x2+100,m_y2+180, D3DCOLOR_ARGB(255,255,255,0),"RIGHT"); 
   m_pFont2->DrawText(m_x2,m_y2+80, D3DCOLOR_ARGB(255,255,255,0),"ROTATE"); 
   m_pFont2->DrawText(m_x2,m_y2+280, D3DCOLOR_ARGB(255,255,255,0),"DOWN"); 
   m_pFont2->DrawText(m_x2,m_y2+380, D3DCOLOR_ARGB(255,255,255,0),"GO!"); 
   //--------------键盘显示--------------------------------
 if(m_updated2==1)
   {
	   int t_ikey=m_SetControl.ProcessKBInput();
	   if(t_ikey!=0)
	   {
	   m_SetControl.m_control2.SetLeftKey(t_ikey);
	   strcpy(m_info21,m_SetControl.DoKeyName(t_ikey));
	   }
   m_pFontkey->DrawText(m_x2-50,m_y2+230, D3DCOLOR_ARGB(255,255,255,255),m_info21); 
   }
   else
   {
   m_pFontkey->DrawText(m_x2-50,m_y2+230, D3DCOLOR_ARGB(150,255,0,0),m_info21); 
   }
   if(m_updated2==2)
   {
	   int t_ikey=m_SetControl.ProcessKBInput();
	   if(t_ikey!=0)
	   {
	   m_SetControl.m_control2.SetRightKey(t_ikey);
	   strcpy(m_info22,m_SetControl.DoKeyName(t_ikey));
	   }
   m_pFontkey->DrawText(m_x2+160,m_y2+230, D3DCOLOR_ARGB(255,255,255,255),m_info22); 
   }
   else
   {
   m_pFontkey->DrawText(m_x2+160,m_y2+230, D3DCOLOR_ARGB(150,255,0,0),m_info22); 
   }
   if(m_updated2==3)
   {
	   int t_ikey=m_SetControl.ProcessKBInput();
	   if(t_ikey!=0)
	   {
	   m_SetControl.m_control2.SetUpKey(t_ikey);
	   strcpy(m_info23,m_SetControl.DoKeyName(t_ikey));
	   }
   m_pFontkey->DrawText(m_x2+30,m_y2+130, D3DCOLOR_ARGB(255,255,255,255),m_info23); 
   }
   else
   {
   m_pFontkey->DrawText(m_x2+30,m_y2+130, D3DCOLOR_ARGB(150,255,0,0),m_info23); 
   }
   if(m_updated2==4)
   {
	   int t_ikey=m_SetControl.ProcessKBInput();
	   if(t_ikey!=0)
	   {
	   m_SetControl.m_control2.SetDownKey(t_ikey);
	   strcpy(m_info24,m_SetControl.DoKeyName(t_ikey));
	   }
   m_pFontkey->DrawText(m_x2+50,m_y2+330, D3DCOLOR_ARGB(255,255,255,255),m_info24);
   }
   else
   {
   m_pFontkey->DrawText(m_x2+50,m_y2+330, D3DCOLOR_ARGB(150,255,0,0),m_info24);
   }
   if(m_updated2==5)
   {
	   int t_ikey=m_SetControl.ProcessKBInput();
	   if(t_ikey!=0)
	   {
	   m_SetControl.m_control2.SetEndKey(t_ikey);
	   strcpy(m_info25,m_SetControl.DoKeyName(t_ikey));
	   }
   m_pFontkey->DrawText(m_x2+40,m_y2+430, D3DCOLOR_ARGB(255,255,255,255),m_info25);
   }
   else
   {
   m_pFontkey->DrawText(m_x2+40,m_y2+430, D3DCOLOR_ARGB(150,255,0,0),m_info25);
   }
switch(m_selected2)
{
case 1:
   m_pFont2->DrawText(m_x2-100,m_y2+180, D3DCOLOR_ARGB(255,255,0,255),"LEFT"); 
	break;
case 2:
    m_pFont2->DrawText(m_x2+100,m_y2+180, D3DCOLOR_ARGB(255,255,0,255),"RIGHT"); 
	break;
case 3:
   m_pFont2->DrawText(m_x2,m_y2+80, D3DCOLOR_ARGB(255,255,0,255),"ROTATE"); 
	break;
case 4:
   m_pFont2->DrawText(m_x2,m_y2+280, D3DCOLOR_ARGB(255,255,0,255),"DOWN"); 
	break;
case 5:
   m_pFont2->DrawText(m_x2,m_y2+380, D3DCOLOR_ARGB(255,255,0,255),"GO!"); 
   break;
}
   m_pFont2->DrawText(220,500, D3DCOLOR_ARGB(255,255,0,255)," 'ESC' TO MAIN MENU"); 

   }
/********************************************************************
函数名  : CleanUp
输入参数: 无
输出参数: 无
功能描述: 释放指针
将指针设为NULL
全局变量: 无
调用模块: 无
********************************************************************/
   void SetControlGui::CleanUp()
   {
   SAFE_DELETE(m_pFont1);
   SAFE_DELETE(m_pFont2);
   SAFE_DELETE(m_pFontkey);
   }
/********************************************************************
函数名  : SelectKey
输入参数: _key 自定义更换的键索引
输出参数: 无
功能描述: 
全局变量: 无
调用模块: 无
********************************************************************/
   void SetControlGui::SelectKey(int _key)
   {
	   m_selected2=0;
	   m_selected1=_key;
   }
/********************************************************************
函数名  : SelectKey2
输入参数: _key 自定义更换的键索引
输出参数: 无
功能描述: 
全局变量: 无
调用模块: 无
********************************************************************/
   void SetControlGui::SelectKey2(int _key)
   {
	   m_selected1=0;
	   m_selected2=_key;
   }
/********************************************************************
函数名  : UpdateKey
输入参数: _key 自定义更换的键索引
输出参数: 无
功能描述: 更换键值
全局变量: 无
调用模块: 无
********************************************************************/
   void SetControlGui::UpdateKey(int _key)
   {
	   m_updated2=0;
	   m_updated1=_key;
   }
/********************************************************************
函数名  : UpdateKey2
输入参数: _key 自定义更换的键索引
输出参数: 无
功能描述: 更换键值
全局变量: 无
调用模块: 无
********************************************************************/
   void SetControlGui::UpdateKey2(int _key)
   {
	   m_updated1=0;
	   m_updated2=_key;
   }

⌨️ 快捷键说明

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