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

📄 shift.cpp

📁 EVC 环境下的五子棋, 用模块器5.0可以跑一下!
💻 CPP
字号:
#include "stdafx.h"
/**
 *
 * 文件名: Shift.cpp
 * 描述:   转换类函数实现
 *          转换类用于用户坐标和内部坐标之间的转换
 * 作者:   魏罡
 * 时间:   2005.7.10 - 2005.7.10
 *
 * file name:   Shift.cpp
 * description: 
 * author:      WEI-Gang
 * time:        2005.7.10 - 2005.7.10
 *
 */

#include "shift.h"

///////////////////////////////////////////

CShift::CShift(int x,int y){
	x = x-7;
	y = y-7;
	if(y<=0 &&x>=-y)
		type = 0;
	if(x<0&&y<x)
		type = 1;
	if(x>0&&y>x)
		type = 2;
	if(y>=0&&-x>=y)
		type = 3;
	if(y>0&&x>=y)
		type = 4;
	if(y<0&&x<=y)
		type = 5;
	if(x<=0&&x>-y)
		type = 6;
	if(x>=0&&x<-y)
		type = 7;
}

CShift::CShift(int x1,int y1,int x2,int y2){
	x1 = x1 - 7;
	y1 = y1 - 7;
	x2 = x2 - 7;
	y2 = y2 - 7;
	switch(x1*3+y1){
		case 4:
			if(x2-y2<0){type = 2;}else{type = 4;}
			break;
		case 3:
			if(y2<0){type = 4;}else{type = 0;}
			break;
		case 2:
			if(y2+x2<0){type = 7;}else{type = 0;}
			break;
		case 1:
			if(x2<0){type = 2;}else{type = 6;}
			break;
		case -1:
			if(x2>0){type = 1;}else{type = 7;}
			break;
		case -2:
			if(y2+x2>0){type = 6;}else{type = 3;}
			break;
		case -3:
			if(y2>0){type = 5;}else{type = 3;}
			break;
		case -4:
			if(y2-x2<0){type = 1;}else{type = 5;}
			break;
	}
}

void CShift::Shift(int &x,int &y){
	x = x-7;
	y = y-7;
	switch(type){
		case 0:break;
		case 1:RR(x,y);break;
		case 2:RL(x,y);break;
		case 3:RB(x,y);break;
		case 4:TX(x,y);break;
		case 5:TY(x,y);break;
		case 6:TXY(x,y);break;
		case 7:TX_Y(x,y);break;
	};
	x += 7;
	y += 7;
}

void CShift::RShift(int &x,int &y){
	x = x-7;
	y = y-7;
	switch(type){
		case 0:break;
		case 1:RL(x,y);break;
		case 2:RR(x,y);break;
		case 3:RB(x,y);break;
		case 4:TX(x,y);break;
		case 5:TY(x,y);break;
		case 6:TXY(x,y);break;
		case 7:TX_Y(x,y);break;
	};
	x += 7;
	y += 7;
}

void CShift::RR(int &x,int &y){
	//右转90度
	int td = x;
	x = -y;
	y = td;
}

void CShift::RL(int &x,int &y){
	//右转90度
	int td = y;
	y = -x;
	x = td;
}

void CShift::RB(int &x,int &y){
	//转180度
	y = -y;
	x = -x;
}

void CShift::TX(int &x,int &y){
	//X轴转
	y = -y;
}

void CShift::TY(int &x,int &y){
	//Y轴转
	x = -x;
}

void CShift::TXY(int &x,int &y){
	//X=Y轴转
	int td = x;
	x = y;
	y = td;
}

void CShift::TX_Y(int &x,int &y){
	//X=-Y轴转
	int td = -x;
	x = -y;
	y = td;
}

⌨️ 快捷键说明

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