📄 global.cpp
字号:
// Global.cpp: implementation of the Global class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Robocup.h"
#include "Global.h"
#include "Decision.h"
#include "DecisionThread.h"
#include "videodlg.h"
#include "monitor.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//视觉的全局变量
DWORD pPhysAddr;
DWORD pHandle;
DWORD pPage;
DWORD pLineAddr;
DWORD sum;
BYTE YUV[256][256][256][3];
BYTE YUVClass[256][9][3];//0-255级颜色,9种颜色,三个颜色坐标
//决策
Player g_MyTeam[g_TeamSize];//我方球员实例
Player g_TheirTeam[g_TeamSize];
Ball g_Ball;
bool isScanMyteam[g_TeamSize];
bool isScanTheirteam[g_TeamSize];
bool isScanBall;
//注意在下半场让我方与对方球门的位置初始化的值改变!!!!!!!
Vector m_MyGoal(40,250);//我方球门位置
Vector m_OpponentGoal(590,250);//对方球门位置初始化!!!
CRect g_LeftTopRect;
CRect g_RightTopRect;
CRect g_LeftBottomRect;
CRect g_RightBottomRect;
HANDLE HMutex;
int Num[4];
Monitor monitor;
BOOL StopFlag=0;
BOOL DeciFlag=0;//默认为从左向右
//五个机器人的决策
CDecision g_Deci[5];
CDecisionThread* pDThread=new CDecisionThread;
CDecisionThread* pDThread2=new CDecisionThread;
unsigned long timestart=GetTickCount();
void PASCAL MMProc_TurnTo(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2)
{
timeKillEvent(wTimerID);
/* UINT flag=timeKillEvent(wTimerID);
if(flag==MMSYSERR_INVALPARAM)
{
AfxMessageBox("Timer doesnt exist");
}
if(flag==TIMERR_NOERROR )
{
CString str;
str.Format("KillTimer %u",wTimerID);
AfxMessageBox(str);
}
*/
// fprintf(Player::pFile,"ID_turnto Proc\n");
// fprintf(Player::pFile,"Timer proc for turnto start at %u ms\n",GetTickCount()-timestart);
Player * p_Player =(Player*)dwUser;
p_Player->BasicAct(0,0,0,0);
// Player::depth[p_Player->Get_Num()]--;
// if((Player::depth[p_Player->Get_Num()])>=0)
// {
// p_Player->TurnTo(g_Ball.Get_vPos(),Player::depth[p_Player->Get_Num()]);
// }
}
//
/*
void PASCAL MMProc_Shoot4Debug(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2)
{
timeKillEvent(wTimerID);
UINT flag=timeKillEvent(wTimerID);
fprintf(Player::pFile,"ID_SHOOT Proc\n");
if(flag==MMSYSERR_INVALPARAM)
{
AfxMessageBox("Timer doesnt exist");
}
if(flag==TIMERR_NOERROR )
{
CString str;
str.Format("KillTimer shoot fordebug %u",wTimerID);
AfxMessageBox(str);
}
// Player::KillMMTimer(wTimerID);
fprintf(Player::pFile,"Timer proc for shoot start at %u ms\n",GetTickCount()-timestart);
Player *player=(Player*)dwUser;
// player->BasicAct(0,0,0,0);
player->Shoot4Debug();
}*/
/*
void PASCAL MMProc_Stop(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2)
{
// fprintf(Player::pFile,"ID_stop Proc\n");
Player::KillMMTimer(wTimerID);
// fprintf(Player::pFile,"Timer proc for shoot start at %u ms\n",GetTickCount()-timestart);
Player *player=(Player*)dwUser;
player->BasicAct(0,0,0,0);
}
*/
void PASCAL MMProc_MoveTo(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2)
{
// fprintf(Player::pFile,"ID_stop Proc\n");
timeKillEvent(wTimerID);
// fprintf(Player::pFile,"Timer proc for shoot start at %u ms\n",GetTickCount()-timestart);
// Player *player=(Player*)dwUser;
// player->BasicAct(0,0,0,0);
// player->MoveTo4Debug();
}
/*
void PASCAL MMProc_Decision(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2)
{
timeKillEvent(wTimerID);
// fprintf(Player::pFile,"ID_DECISION Proc\n");
// FILE *pFile;
// pFile=fopen("good.txt","a+");
// int t=GetTickCount();
// fprintf(pFile," \n\n\n\n\nRestart at %d\t\n",t);
// fclose(pFile);
pDThread->CreatNewThread();
}
*/
/*
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerID,DWORD dwTime)
{
UINT timer;
timer=nTimerID/5;
switch(timer)
{
case ID_TIMER/5:
{
// KillMyTimer(nTimerID,CDebugDlg::m_pDebugDlg->m_hWnd);
DWORD t1;
t1=GetTickCount()-timestart;
// fprintf(Player::pFile,"ID_TIMER Proc\n");
// Player::m_sTimeMap[nTimerID]->TurnTo4Debug(g_Ball.Get_vPos());
// CDebugDlg::m_pDebugDlg->OnTurntoball();
break;//一定要加break!!!!!!!!!!!!!!!!!!!已经被实验所证明了!!!!!
}
case ID_TIMER_4_TURNTOANGLE/5:
{
// CString str;
// str.Format("timer proc for %u",nTimerID);
// AfxMessageBox(str);
// Player::KillMyTimer(nTimerID,CDebugDlg::m_pDebugDlg->m_hWnd);
// DWORD t1;
// t1=GetTickCount();;
// CDebugDlg::m_pDebugDlg->m_timerid=nTimerID;
// CDebugDlg::m_pDebugDlg->UpdateData(false);
// fprintf(Player::pFile2,"TimerProc for ID_TIMER_4_TURNTOANGLE player number is %d nIDTimer=%u\n",Player::m_sTimeMap[nTimerID]->Get_Num(),nTimerID);
// Player::m_sTimeMap[nTimerID]->BasicAct(0,0,0,0);
// Player::m_sTimeMap.RemoveKey(nTimerID);
// fprintf(Player::pFile,"TimerProc stop at %u ms\n",GetTickCount()-timestart);
// SetEvent(Player::basicact);
break;
}
case ID_TIMER4MOVETO/5:
{
/// Player::KillMyTimer(nTimerID,CDebugDlg::m_pDebugDlg->m_hWnd);
// Player::m_sTimeMap[nTimerID]->BasicAct(0,0,0,0);
}
case ID_SHOOT/5:
{
fprintf(Player::pFile,"ID_SHOOT Proc\n");
// Player::KillMyTimer(nTimerID,CDebugDlg::m_pDebugDlg->m_hWnd);
// fprintf(Player::pFile,"Timer proc for shoot start at %u ms\n",GetTickCount()-timestart);
// g_MyTeam[CDebugDlg::m_pDebugDlg->m_team*5+CDebugDlg::m_pDebugDlg->m_number-1].BasicAct(0,0,0,0);//CDebugDlg::m_pDebugDlg->m_team*5+CDebugDlg::m_pDebugDlg->m_number-1
// Player::m_sTimeMap[nTimerID]->Shoot4Debug();
break;
}
case ID_BASICACT/5:
{
fprintf(Player::pFile,"ID_BASICACT Proc\n");
// Player::KillMyTimer(nTimerID,CDebugDlg::m_pDebugDlg->m_hWnd);
// Player::m_sTimeMap[nTimerID]->BasicAct(0,0,0,0);
break;
}
case ID_DECISIONPROC/5://重新启动视觉和决策的同步
{
// Player::KillMyTimer(nTimerID,CDebugDlg::m_pDebugDlg->m_hWnd);
fprintf(Player::pFile,"ID_DECISION Proc\n");
FILE *pFile;
pFile=fopen("good.txt","a+");
int t=GetTickCount();
fprintf(pFile," \n\n\n\n\nRestart at %d\t\n",t);
fclose(pFile);
pDThread->CreatNewThread();
break;
}
default:break;
}
return;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -