📄 keychessman.cpp
字号:
#include "StdAfx.h"
/**
*
* 文件名: KeyChessman.cpp
* 描述: 关键棋子类函数实现
* 关键棋子类,用于记录下一手行棋时的关键棋子。
* 关键棋子按值从大到小的顺序排列。
* 作者: 魏罡
* 时间: 2005.9.10 - 2005.10.6
*
* file name: KeyChessman.cpp
* description:
* author: WEI-Gang
* time: 2005.9.10 - 2005.10.7
*
*/
#include "KeyChessman.h"
#include <stdlib.h>
#include <time.h>
/////////////////////////////////////////////////
CKeyChessman::CKeyChessman(){
for(int i = 0;i < 6;i++){
head[i/3][i%3] = NULL;
keynum[i/3][i%3] = 0;
}
}
CKeyChessman::~CKeyChessman(){
for(int i = 0;i < 6;i++){
keychessman * h = head[i/3][i%3];
while(h){
head[i/3][i%3] = h->next;
delete h;
h = head[i/3][i%3];
}
}
}
////////////////////////////////////////////////
int CKeyChessman::Add(int x,int y,int value,char col){
//向类添加一个关键棋子。成功返回1,失败返回0。
int num = value%10;
if(num > 2){
return 0;
}
int c = (col=='B'?1:0);
keychessman * add = NULL;
add = new keychessman;
if(add == NULL){
return 0;//分配内失败,添加失败。
}
add->x = x;
add->y = y;
add->col = col;
add->next = head[c][num];
head[c][num] = add;
keynum[c][num]++;
return 1;
}
int CKeyChessman::NotEmpty(){
//判断关键棋子是否非空,空返回0,非空返1。
for(int i = 0;i < 6;i++){
if(head[i/3][i%3] != NULL){
return 1;
}
}
return 0;
}
void CKeyChessman::GetChessman(int &x,int &y,char &col,char fc){
//获取当前棋子的坐标(x,y)及颜色,fc为优先考虑颜色
int c = (fc=='B'?1:0);
srand(WCE_FCTN(time) (NULL));
int count;
keychessman *p,*f;
for(int i = 0;i < 3;i++){
if(keynum[c][i] > 0){
count = keynum[c][i]==1?0:rand()%keynum[c][i];
p = head[c][i];
f = NULL;
while(count > 0){
f = p;
p = p->next;
count --;
}
x = p->x;
y = p->y;
col = p->col;
if(f == NULL){
head[c][i] = p->next;
}
else{
f->next = p->next;
}
keynum[c][i]--;
delete p;
return;
}
if(keynum[1-c][i] > 0){
count = keynum[1-c][i]==1?0:rand()%keynum[1-c][i];
p = head[1-c][i];
f = NULL;
while(count > 0){
f = p;
p = p->next;
count --;
}
x = p->x;
y = p->y;
col = p->col;
if(f == NULL){
head[1-c][i] = p->next;
}
else{
f->next = p->next;
}
keynum[1-c][i]--;
delete p;
return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -