专栏文章
easyx象棋
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mipyomjj
- 此快照首次捕获于
- 2025/12/03 20:06 3 个月前
- 此快照最后确认于
- 2025/12/03 20:06 3 个月前
CPP
#include<bits/stdc++.h>
#include<easyx.h>
#include<graphics.h>
#define int long long
using namespace std;
int mp[15][15];
void draw();
void star();
int endqizi=-1;
int t=1;
pair<int,int>start,end;
signed main(){
star();
initgraph(600,660,0);
draw();
while(1){
ExMessage msg;
peekmessage(&msg,EX_MOUSE);
bool hongjiang=0,heijiang=0;
for(int i=1;i<=9;i++){
for(int j=1;j<=10;j++){
if(mp[j][i]==11) hongjiang=1;
if(mp[j][i]==21) heijiang=1;
if(msg.x>=i*60-25&&msg.x<=i*60+25&&msg.y>=j*60-25&&msg.y<=j*60+25&&msg.message==WM_LBUTTONDOWN){
if(start.first==j&&start.second==i){
start.first=-1;
start.second=-1;
}else{
if(start.first==-1&&start.second==-1&&mp[j][i]!=0&&mp[j][i]/10==t){
start.first=j;
start.second=i;
}else{
if(start.first!=-1&&start.second!=-1){
end.first=j;
end.second=i;
endqizi=mp[start.first][start.second];
}
}
}
}
endqizi=mp[start.first][start.second];
}
}
if(hongjiang==0||heijiang==0){
draw();
_sleep(3000);
exit(0);
}
if(end.first!=-1&&end.second!=-1){
bool p=0;
if(mp[end.first][end.second]/10!=endqizi/10){
switch(endqizi%10){
case 1:{
bool flog_qi=0;
int u=start.first,v=end.first;
if(u>v) swap(u,v);
for(int i=u+1;i<=v-1;i++){
if(mp[i][start.second]!=0){
flog_qi=1;
break;
}
}
if(((endqizi/10==1&&(abs(start.first-end.first))+(abs(start.second-end.second))==1&&end.first>=8&&end.first<=10&&end.second>=4&&end.second<=6)||(endqizi/10==2&&(abs(start.first-end.first))+(abs(start.second-end.second))==1&&end.first>=1&&end.first<=3&&end.second>=4&&end.second<=6))||(start.second==end.second&&!flog_qi)){
mp[end.first][end.second]=endqizi;
mp[start.first][start.second]=0;
p=1;
}
break;
}
case 2:{
if((endqizi/10==1&&(abs(start.first-end.first))==1&&(abs(start.second-end.second))==1&&end.first>=8&&end.first<=10&&end.second>=4&&end.second<=6)||(endqizi/10==2&&(abs(start.first-end.first))==1&&(abs(start.second-end.second))==1&&end.first>=1&&end.first<=3&&end.second>=4&&end.second<=6)){
mp[end.first][end.second]=endqizi;
mp[start.first][start.second]=0;
p=1;
}
break;
}
case 3:{
if((endqizi/10==1&&(abs(start.first-end.first))==2&&(abs(start.second-end.second))==2&&end.first>=6&&end.first<=10)||(endqizi/10==2&&(abs(start.first-end.first))==2&&(abs(start.second-end.second))==2&&end.first>=1&&end.first<=5)){
int u=(start.first+end.first)/2,v=(start.second+end.second)/2;
if(mp[u][v]==0){
mp[end.first][end.second]=endqizi;
mp[start.first][start.second]=0;
p=1;
}
}
break;
}
case 4:{
if((abs(start.first-end.first)==1||abs(start.first-end.first)==2)&&(abs(start.second-end.second)==1||abs(start.second-end.second)==2)&&abs(start.first-end.first)!=abs(start.second-end.second)){
int u=0,v=0;
if(abs(start.first-end.first)==2){
u=start.first;
v=end.first;
if(mp[(u+v)/2][start.second]==0){
mp[end.first][end.second]=endqizi;
mp[start.first][start.second]=0;
p=1;
}
}
if(abs(start.second-end.second)==2){
u=start.second;
v=end.second;
if(mp[start.first][(u+v)/2]==0){
mp[end.first][end.second]=endqizi;
mp[start.first][start.second]=0;
p=1;
}
}
}
break;
}
case 5:{
if(start.first-end.first==0||start.second-end.second==0){
bool flog_qi=0;
int u=start.first,v=end.first;
if(u>v) swap(u,v);
for(int i=u+1;i<=v-1;i++){
if(mp[i][start.second]!=0){
flog_qi=1;
break;
}
}
u=start.second,v=end.second;
if(u>v) swap(u,v);
for(int i=u+1;i<=v-1;i++){
if(mp[start.first][i]!=0){
flog_qi=1;
break;
}
}
if(!flog_qi){
mp[end.first][end.second]=endqizi;
mp[start.first][start.second]=0;
p=1;
}
}
break;
}
case 6:{
if(start.first-end.first==0||start.second-end.second==0){
int flog_qi=0;
int u=start.first,v=end.first;
if(u>v) swap(u,v);
for(int i=u+1;i<=v-1;i++){
if(mp[i][start.second]!=0){
flog_qi++;
}
}
u=start.second,v=end.second;
if(u>v) swap(u,v);
for(int i=u+1;i<=v-1;i++){
if(mp[start.first][i]!=0){
flog_qi++;
}
}
if((flog_qi==1&&mp[end.first][end.second]!=0)||(flog_qi==0&&mp[end.first][end.second]==0)){
mp[end.first][end.second]=endqizi;
mp[start.first][start.second]=0;
p=1;
}
}
break;
}
case 7:{
if((abs(start.first-end.first))+(abs(start.second-end.second))==1){
bool flog_zou=0;
if(endqizi/10==1){
if(start.first-end.first!=-1){
if(start.first<=5){
flog_zou=1;
}else{
if(start.second-end.second==0){
flog_zou=1;
}
}
}
}else{
if(start.first-end.first!=1){
if(start.first>=6){
flog_zou=1;
}else{
if(start.second-end.second==0){
flog_zou=1;
}
}
}
}
if(flog_zou==1){
mp[end.first][end.second]=endqizi;
mp[start.first][start.second]=0;
p=1;
}
}
break;
}
}
}
start.first=-1;
start.second=-1;
end.first=-1;
end.second=-1;
endqizi=-1;
if(p){
if(t==1) t=2;
else t=1;
}
}
if(msg.message==WM_LBUTTONDOWN){
draw();
msg={0};
}
}
}
void draw(){
setbkmode(TRANSPARENT);
setlinestyle(PS_SOLID,3);
setlinecolor(WHITE);
setfillcolor(BROWN);
settextstyle(40,0,"楷体");
cleardevice();
BeginBatchDraw();
for(int i=1;i<=10;i++){
line(60,i*60,540,i*60);
}
for(int i=1;i<=9;i++){
line(i*60,60,i*60,300);
}
for(int i=1;i<=9;i++){
line(i*60,60+300,i*60,300+300);
}
line(60,300,60,360);
line(540,300,540,360);
setfillcolor(BROWN);
for(int i=1;i<=9;i++){
for(int j=1;j<=10;j++){
setfillcolor(BROWN);
if(mp[j][i]>=10&&mp[j][i]<20){
settextcolor(RED);
}
if(mp[j][i]>=20&&mp[j][i]<30){
settextcolor(BLACK);
}
if(j==start.first&&i==start.second){
setfillcolor(GREEN);
}
if(mp[j][i]!=0){
solidcircle(i*60,j*60,25);
}
switch(mp[j][i]%10){
case 1:{
outtextxy(i*60-20,j*60-20,"将");
break;
}
case 2:{
outtextxy(i*60-20,j*60-20,"士");
break;
}
case 3:{
outtextxy(i*60-20,j*60-20,"象");
break;
}
case 4:{
outtextxy(i*60-20,j*60-20,"马");
break;
}
case 5:{
outtextxy(i*60-20,j*60-20,"车");
break;
}
case 6:{
outtextxy(i*60-20,j*60-20,"炮");
break;
}
case 7:{
outtextxy(i*60-20,j*60-20,"兵");
break;
}
}
}
}
EndBatchDraw();
}
void star(){
mp[1][1]=25;
mp[1][2]=24;
mp[1][3]=23;
mp[1][4]=22;
mp[1][5]=21;
mp[1][6]=22;
mp[1][7]=23;
mp[1][8]=24;
mp[1][9]=25;
mp[3][2]=26;
mp[3][8]=26;
mp[4][1]=27;
mp[4][3]=27;
mp[4][5]=27;
mp[4][7]=27;
mp[4][9]=27;
mp[10][1]=15;
mp[10][2]=14;
mp[10][3]=13;
mp[10][4]=12;
mp[10][5]=11;
mp[10][6]=12;
mp[10][7]=13;
mp[10][8]=14;
mp[10][9]=15;
mp[8][2]=16;
mp[8][8]=16;
mp[7][1]=17;
mp[7][3]=17;
mp[7][5]=17;
mp[7][7]=17;
mp[7][9]=17;
start.first=-1;
start.second=-1;
end.first=-1;
end.second=-1;
}
//原创:cyx1234
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...