翻棋 (翻棋象棋规则和玩法)
翻棋 (翻棋象棋规则和玩法)
先是素材,扣的图:
0.jpg
1.jpg
2.jpg
3,png
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg
规则
然后是代码,做的很简易,不过该有的判定都有了,比如用自己小子盲碰了对方的大子直接没,自己大子盲碰了对方小子直接吃,一样则对掉,都是有的:
#include iostream
#include cstdlib
#include ctime
#include ctype.h
#include vector
#include math.h
#include iomanip
#include graphics.h
#include conio.h
#include windows.h
#include fstream
#include string
using namespace std;
struct Node
{
int posx,posy;
int num;
int lifenum;
COLORREF color;
int x;
};
Node box[17];
MOUSEMSG m;
int exit1,exit2;
IMAGE img[11];
int seed1,seed2;
void check()
{
int i,j,k;
j=0;
k=0;
for(i=0;i=15;i++){
if(box[i].color==BLUE){
j++;
}
else if(box[i].color==RED){
k++;
}
}
if(j==0k!=0){
exit1=1;
coutRED WINendl;
}
else if(j!=0k==0){
exit1=1;
coutBLUE WINendl;
}
}
void move()
{
int i,j,k,x,y,t,n;
if(MouseHit()){
m = GetMouseMsg();
if(m.uMsg==WM_LBUTTONDOWN){
i=(m.x-10)/120;
j=(m.y-10)/120;
k=i*4+j;
if(box[k].lifenum==0){
setfillcolor(box[k].color);
fillrectangle(box[k].posx,box[k].posy,box[k].posx+100,box[k].posy+100);
putimage(box[k].posx+10,box[k].posy+10, img[box[k].x]);
box[k].lifenum=1;
}
else if(box[k].lifenum==1box[k].color!=WHITE){
exit2=0;n=1;
while(exit2==0){
if(MouseHit()){
m = GetMouseMsg();
if(m.uMsg==WM_LBUTTONDOWN){
x=(m.x-10)/120;
y=(m.y-10)/120;
t=x*4+y;
exit2=1;
}
}
}
if(t==k){}
else if(box[t].color==WHITE((box[t].posx-box[k].posx)*(box[t].posx-box[k].posx)+(box[t].posy-box[k].posy)*(box[t].posy-box[k].posy)=14410)){
box[t].color=box[k].color;
box[t].x=box[k].x;
box[k].color=WHITE;
box[k].x=0;
setfillcolor(box[t].color);
fillrectangle(box[t].posx,box[t].posy,box[t].posx+100,box[t].posy+100);
putimage(box[t].posx+10,box[t].posy+10, img[box[t].x]);
setfillcolor(box[k].color);
fillrectangle(box[k].posx,box[k].posy,box[k].posx+100,box[k].posy+100);
n=0;
}
else if(box[t].lifenum==0((box[t].posx-box[k].posx)*(box[t].posx-box[k].posx)+(box[t].posy-box[k].posy)*(box[t].posy-box[k].posy)=14410)){
box[t].lifenum=1;
setfillcolor(box[t].color);
fillrectangle(box[t].posx,box[t].posy,box[t].posx+100,box[t].posy+100);
putimage(box[t].posx+10,box[t].posy+10, img[box[t].x]);
n=1;
}
if(n!=0box[t].lifenum==1box[t].color!=box[k].colorbox[t].color!=WHITE((box[t].posx-box[k].posx)*(box[t].posx-box[k].posx)+(box[t].posy-box[k].posy)*(box[t].posy-box[k].posy)=14410)){
if((box[k].x==9box[t].x==2)||((box[k].x!=2||box[t].x!=9)box[k].xbox[t].x)){
box[t].color=box[k].color;
box[t].x=box[k].x;
box[k].color=WHITE;
box[k].x=0;
setfillcolor(box[t].color);
fillrectangle(box[t].posx,box[t].posy,box[t].posx+100,box[t].posy+100);
putimage(box[t].posx+10,box[t].posy+10, img[box[t].x]);
setfillcolor(box[k].color);
fillrectangle(box[k].posx,box[k].posy,box[k].posx+100,box[k].posy+100);
}
else if(box[k].x==box[t].x){
box[t].color=WHITE;
box[t].x=0;
box[t].lifenum=1;
box[k].color=WHITE;
box[k].x=0;
box[k].lifenum=1;
setfillcolor(box[t].color);
fillrectangle(box[t].posx,box[t].posy,box[t].posx+100,box[t].posy+100);
setfillcolor(box[k].color);
fillrectangle(box[k].posx,box[k].posy,box[k].posx+100,box[k].posy+100);
}
else if((box[t].x==9box[k].x==2)||(box[t].xbox[k].x)){
box[k].color=WHITE;
box[k].x=0;
setfillcolor(box[t].color);
fillrectangle(box[t].posx,box[t].posy,box[t].posx+100,box[t].posy+100);
putimage(box[t].posx+10,box[t].posy+10, img[box[t].x]);
setfillcolor(box[k].color);
fillrectangle(box[k].posx,box[k].posy,box[k].posx+100,box[k].posy+100);
}
}
}
}
}
check();
}
void initialization()
{
int i,j,k;
exit1=0;seed1=0;exit2=0;
initgraph(500,500,SHOWCONSOLE);
setbkcolor(WHITE);
cleardevice();
loadimage(img[0],_T(../sc/0.jpg),500,500);
loadimage(img[1],_T(../sc/1.jpg),100,100);
loadimage(img[2],_T(../sc/2.jpg),80,80);
loadimage(img[3],_T(../sc/3.jpg),80,80);
loadimage(img[4],_T(../sc/4.jpg),80,80);
loadimage(img[5],_T(../sc/5.jpg),80,80);
loadimage(img[6],_T(../sc/6.jpg),80,80);
loadimage(img[7],_T(../sc/7.jpg),80,80);
loadimage(img[8],_T(../sc/8.jpg),80,80);
loadimage(img[9],_T(../sc/9.jpg),80,80);
putimage(0,0,img[0]);
for(i=0;i=3;i++){
for(j=0;j=3;j++){
box[i*4+j].num=i*4+j;
box[i*4+j].lifenum=0;
box[i*4+j].posx=20+120*i;
box[i*4+j].posy=20+120*j;
putimage(box[i*4+j].posx,box[i*4+j].posy, img[1]);
}
}
for(i=2;i=9;i++){
j=i;
while(j==i){
seed1++;
srand(seed1);
k=rand()%16;
if(box[k].color==0){
box[k].color=RED;
box[k].x=i;
j++;
}
}
}
for(i=2;i=9;i++){
j=i;
while(j==i){
seed1++;
srand(seed1);
k=rand()%16;
if(box[k].color==0){
box[k].color=BLUE;
box[k].x=i;
j++;
}
}
}
}
void carry()
{
int i,j,k;
initialization();
while(exit1==0){
move();
}
_getch();
closegraph();
}
int main()
{
carry();
return 0;
}
演示视频:
红蓝两方
最后要说一下,相对位置以后就自己看了。感觉我写这些东西也就满足我的一个收集小游戏,然后自己制作的兴趣或者说是欲望,就像xxxholic剧场版里各种各样奇怪收集癖的人一样。我很大可能也不会做程序猿,也不会做游戏来当工作,只是单纯喜欢这样实现游戏。我有担心别人一股脑把我这些东西复制过去,因为我提供的是百分之百的源码,这种感觉就像你收集的整套珍贵邮票被人白嫖然后复制了一份,本身的贬值不说,也肯定不是滋味。但是我也这么想过,我可能是喜欢制作游戏的整个过程,包括找素材,抠图,在纸上设计游戏流程,从而安排至少要哪些函数,把一些重点函数的实现代码写出来,再敲代码,改代码,写专栏,给游戏录像,用ps制作gif图,最后上传给b站,这整个过程是独一无二的。换个角度,我用依托于vc++的easyx制作出的游戏,最后的本质是一个个exe文件,由于我没有将素材镶嵌到exe文件里,所以想成功运行,要保证exe和图片的相对位置正确,这个相对位置和cpp文件略有不同,我想表达的意思是,我的程序仅仅是实现游戏,不能直接带来收益,不算是一个应用程序。这样的话,别人想用做其他用途,也一定是要通过自己的努力的,而且不是简单的工作量,所以我也乐意继续这么做下去。即使这些东西没什么阅读量,但满足我自己也是可以的了,毕竟我也不可能把这些东西分享到qq空间吧。还有一个原因就是把这里当做一个备份。
以上就是(翻棋 (翻棋象棋规则和玩法))全部内容,收藏起来下次访问不迷路!