?? table.cpp
字號(hào):
/*++
Copyright (c) 2004-2005 AFE(Active-Free-Elegance)
Module Name:
table.cpp
Abstract:
the table class:
1. the table envirement configuration
2. set and clear the food(good ones and bad ones)
3. call the snake instance to move
Author:
Weijian Luo (Arthur Luo) 15-Jun-2005
E-mail: skybluehacker@yahoo.com.cn
Revision History: 1.0
--*/
#include "table.h"
CTable::CTable()
{
m_width=m_height=0;
m_foodNumber=m_blockNumber=0;
m_board=NULL;
}
CTable::~CTable()
{
if(m_board != NULL)
{
SAFE_DELETE_ARRAY(m_board);
}
}
//
//// 初始化桌子
//
void CTable::InitialTable(int w,int h)
{//初始化Table
int i,j;
//重新設(shè)置桌子的高度與寬度
m_width=w;
m_height=h;
//其他成員變量的清空性質(zhì)初始化
m_snake.Initial();
if(m_board != NULL)
{
SAFE_DELETE_ARRAY(m_board);
}
//根據(jù)高度和寬度創(chuàng)建一個(gè)新的桌子
m_board=new int*[m_height];
for(i=0;i<h;i++)
{
m_board[i]=new int[m_width];
for(j=0;j<w;j++)
m_board[i][j]=0;
}
//將桌子四周設(shè)置為墻
//將頂部跟底部的邊緣設(shè)置為障礙物墻的狀態(tài)
for(i=0;i<h;i++)
{
m_board[i][0]=TB_STATE_SBLOCK;
m_board[i][m_width-1]=TB_STATE_SBLOCK;
}
//將左部和右部的邊緣設(shè)置為障礙物墻的狀態(tài)
for(i=0;i<w;i++)
{
m_board[0][i]=TB_STATE_SBLOCK;
m_board[m_height-1][i]=TB_STATE_SBLOCK;
}
}
//
//// 在某個(gè)位置放置毒果
//
bool CTable::AddBlock(int x,int y)
{
if( (x>=0)&&(x<m_width)&&
(y>=0)&&(y<m_height)&&
(m_board[y][x]==TB_STATE_OK) )
{
m_board[y][x]=TB_STATE_BLOCK;
++m_blockNumber;
return true;
}
else
{
return false;
}
}
//
//// 在某個(gè)位置放置水果
//
bool CTable::AddFood(int x,int y)
{
if( (x>=0)&&(x<m_width)&&
(y>=0)&&(y<m_height)&&
(m_board[y][x]==TB_STATE_OK) )
{
m_board[y][x]=TB_STATE_FOOD;
++m_foodNumber;
return true;
}
else
{
return false;
}
}
//
//// 清楚某個(gè)位置的果實(shí)
//
bool CTable::ClearFood(int x,int y)
{
m_board[y][x]=TB_STATE_OK;
return true;
}
//
//// 獲取蛇對(duì)象
//
CSnake* CTable::GetSnake(void)
{
return &m_snake;
}
//
//// 取桌子對(duì)象
//
int** CTable::GetBoard(void)
{
return m_board;
}
//
//// 取桌子某個(gè)位置數(shù)據(jù)
//
int CTable::GetData(int x,int y)
{
return m_board[y][x];
}
//
//// 蛇的移動(dòng)
//
void CTable::SnakeMove(void)
{
m_snake.Move();
}
//
//// 改變蛇的方向
//
bool CTable::ChangeSnakeDirect(MoveState d)
{
m_snake.ChangeDirect(d);
return true;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -