大家好,我是@黑客小羊,今天给大家几个游戏代码
1.象棋
int a[114][514],b,c,d,g;
int cc=0;
int check(){
p.moveTo(-420,-280);
string ob;
int num;
cin>>ob>>num;
if(ob=="cg")cc=num;
}
int abs(int v){
if(v<0)v=v-v-v;
return v;
}
int f(int v){
return 0+(v>=8&&v<=14)*1;
}
string st(int k){
if(k==1 )return "将";
if(k==2 )return "仕";
if(k==3 )return "象";
if(k==4 )return "馬";
if(k==5 )return "車";
if(k==6 )return "砲";
if(k==7 )return "卒";
if(k==8 )return "帅";
if(k==9 )return "士";
if(k==10)return "相";
if(k==11)return "马";
if(k==12)return "车";
if(k==13)return "炮";
if(k==14)return "兵";
}
int can(int q,int w,int e,int r){
if(cc==1)return 1;
int k=a[q][w];string tr=st(a[q][w]);
if(f(k)!=g)return 0;
if((f(a[q][w])==f(a[e][r]))&&(a[e][r]!=0))return 0;
if(tr=="車"||tr=="车"){
if(q==e){
if(w>r)
for(int i=w-1;i>r;i--)if(a[q][i]!=0)return 0;
if(w<r)
for(int i=w+1;i<r;i++)if(a[q][i]!=0)return 0;
}
else if(w==r){
if(q>e)
for(int i=q-1;i>e;i--)if(a[i][w]!=0)return 0;
if(q<e)
for(int i=q+1;i<e;i++)if(a[i][w]!=0)return 0;
}
else if(q!=e&&w!=r)return 0;
}
if(tr=="馬"||tr=="马"){
if(a[q-1][w]==0){
if(q-2==e&&w+1==r)return 1;
if(q-2==e&&w-1==r)return 1;
}
if(a[q+1][w]==0){
if(q+2==e&&w+1==r)return 1;
if(q+2==e&&w-1==r)return 1;
}
if(a[q][w-1]==0){
if(q+1==e&&w-2==r)return 1;
if(q-1==e&&w-2==r)return 1;
}
if(a[q][w+1]==0){
if(q-1==e&&w+2==r)return 1;
if(q+1==e&&w+2==r)return 1;
}
return 0;
}
if(tr=="象"||tr=="相"){
if(f(k)==0){
if(q+2==e&&w+2==r&&a[q+1][w+1]==0)return 0+(r<=5);
if(q+2==e&&w-2==r&&a[q+1][w-1]==0)return 0+(r<=5);
if(q-2==e&&w+2==r&&a[q-1][w+1]==0)return 0+(r<=5);
if(q-2==e&&w-2==r&&a[q-1][w-1]==0)return 0+(r<=5);
}
if(f(k)==1){
if(q+2==e&&w+2==r&&a[q+1][w+1]==0)return 0+(r>=6);
if(q+2==e&&w-2==r&&a[q+1][w-1]==0)return 0+(r>=6);
if(q-2==e&&w+2==r&&a[q-1][w+1]==0)return 0+(r>=6);
if(q-2==e&&w-2==r&&a[q-1][w-1]==0)return 0+(r>=6);
}
return 0;
}
if(tr=="仕"||tr=="士"){
if(!(e>=4&&e<=6))return 0;
if(f(k)==0){
return 0+(abs(q-e)==1&&abs(w-r)==1&&r<=3);
}
if(f(k)==1){
return 0+(abs(q-e)==1&&abs(w-r)==1&&r>=8);
}
return 0;
}
if(tr=="将"){
if(st(a[e][r])=="帅"&&q==e&&a[e][r]!=0){
for(int i=w+1;i<=r-1;i++)
if(a[q][i]!=0)return 0;
return 1;
}
return 0+(4<=e&&e<=6&&1<=r&&r<=3&&(abs(q-e)+abs(w-r)==1));
}
if(tr=="帅"){
if(st(a[e][r])=="将"&&q==e&&a[e][r]!=0){
w=w+r;r=w-r;w=w-r;
for(int i=w+1;i<=r-1;i++)
if(a[q][i]!=0)return 0;
return 1;
}
return 0+(4<=e&&e<=6&&8<=r&&r<=10&&(abs(q-e)+abs(w-r)==1));
}
if(tr=="炮"||tr=="砲"){
int u=0;
if(q==e){
if(w>r)
for(int i=w-1;i>=r;i--)u+=(0+(a[q][i]!=0));
if(w<r)
for(int i=w+1;i<=r;i++)u+=(0+(a[q][i]!=0));
if(a[e][r]==0)return 0+(u==0);
else return 0+(u-1==1);
}
else if(w==r){
if(q>e)
for(int i=q-1;i>=e;i--)u+=(0+(a[i][w]!=0));
if(q<e)
for(int i=q+1;i<=e;i++)u+=(0+(a[i][w]!=0));
if(a[e][r]==0)return 0+(u==0);
else return 0+(u-1==1);
}
else if(q!=e&&w!=r)return 0;
}
if(tr=="兵"||tr=="卒"){
if(f(k)==0){
if(w<=5)
return 0+(q==e&&w+1==r);
else
return 0+((q==e&&w+1==r)||(q-1==e&&w==r)||(q+1==e&&w==r));
}
if(f(k)==1){
if(w>=6)
return 0+(q==e&&w-1==r);
else
return 0+((q==e&&w-1==r)||(q-1==e&&w==r)||(q+1==e&&w==r));
}
}
return 1;
}
int win(){
int x=0,y=0;
for(int i=1;i<=9;i++){
for(int j=1;j<=10;j++){
if(a[i][j]==1)x=1;
if(a[i][j]==8)y=1;
}
}
p.moveTo(0,0);
if(x==0){
p.rr(800,800,15).text("红方胜利",1,114);
wait(1);
return 1;
}
if(y==0){
p.rr(800,800,15).text("黑方胜利",0,114);
wait(1);
return 1;
}
return 0;
}
int draw(){
p.moveTo(0,0).rt(90).rr(800,800,15).c(2).size(4.4);
for(int i=0;i<9;i++)p.moveTo(-315,280-i*70).fd(630);
p.rt(90);
for(int i=0;i<10;i++)p.moveTo(-315+i*70,280).fd(560);
p.moveTo(0,0).rr(66,556,15).rt(180);
p.textSize(30);
p.moveTo(0,200).text("楚",2);
p.moveTo(0,100).text("河",2);
p.moveTo(0,-100).text("汉",2);
p.moveTo(0,-200).text("界",2);
p.moveTo(-315,70).lineTo(-175,-70);
p.moveTo(-175,70).lineTo(-315,-70);
p.moveTo(315,70).lineTo(175,-70);
p.moveTo(175,70).lineTo(315,-70);
for(int i=1;i<=9;i++){
for(int j=1;j<=10;j++){
p.moveTo(-315+(j-1)*70,280-(i-1)*70);
if(b==1){
if((can(c,d,i,j))){
p.ee(32.5,32.5,3);
}
}
if(a[i][j]!=0){
p.c(f(a[i][j]));
p.oo(23,15).o(23);
p.text(st(a[i][j]));
}
}
}
if(b==1){
p.moveTo(-315+(d-1)*70,280-(c-1)*70).size(5).o(30,10);
}
p.moveTo(0,350).rr(120,70,2).rr(114,64,g);
if(g==1)
p.moveTo(220,-330).text("move",0,35);
win();
p.moveTo(0,-360).o(30,11).textSize(22.5).text("again",11);
p.moveTo(-280,360).text("GoC Chinese Chess",0);
p.moveTo(280,360).text("Made With Skun",0);
p.moveTo(-350,-350).size(6).c(0).r(90,27,11).size(3).text("check");
}
int cm(int cx,int cy){
for(int i=1;i<=9;i++){
for(int j=1;j<=10;j++){
if(can(cx,cy,i,j))
return 1;
}
}
return 0;
}
int moss(){
p.moveTo(-220,-330).rr(100,50,15).text("thinking",0,35);
int v,fx,fy,t=0;
while(1){
v=rand(1,16);
for(int i=1;i<=9;i++){
for(int j=1;j<=10;j++){
if(a[i][j]==v){fx=i;fy=j;t=1;}
}
}
if(t==1&&cm(fx,fy))break;
}
p.moveTo(-315+(fy-1)*70,280-(fx-1)*70).size(5).o(30,10);
if(t==0)return 0;
while(1){
int mx=rand(1,9),my=rand(1,10);
if(can(fx,fy,mx,my)){
cout<<a[fx][fy]<<' '<<"move from("<<fx<<','<<fy<<")to("<<mx<<','<<my<<")\n";
a[mx][my]=a[fx][fy];
a[fx][fy]=0;
g=1-g;
p.rr(200,40,15);
return 0;
}
wait(0);
}
}
int pc(){
draw();
while(1){
waitMouse();
if(mouseIn(-350,-350,30))check();
if(mouseIn(0,-360,30)){
p.moveTo(0,-360).size(3).o(32,1);
while(mouseDown())wait(0);
return 0;
}
int x=getMDX(),y=getMDY(),t=0;
for(int i=1;i<=9;i++){
for(int j=1;j<=10;j++){
if(mouseIn(-315+(j-1)*70,280-(i-1)*70,30))
{x=i;y=j;t=1;break;}
}
if(t==1)break;
}
if(!(x==getMDX()&&y==getMDY())){
if(b==0&&a[x][y]==0)continue;
if(c==x&&d==y&&b==1)b=0;
else b++;
if(b==2){
b=0;
if(can(c,d,x,y)==1){
if(a[x][y]!=0)cout<<a[x][y]<<" die\n";
a[x][y]=a[c][d];a[c][d]=0;
g=1-g;draw();
cout<<a[x][y]<<' ';
}
else cout<<a[c][d]<<" can't ";
cout<<"move from("<<c<<','<<d<<")to("<<x<<','<<y<<")\n";
}
c=x;d=y;
}
if(win()==1)return 0;
if(g==0)moss();
draw();
}
return 0;
}
int pp(){
draw();
while(1){
waitMouse();
if(mouseIn(-350,-350,30))check();
if(mouseIn(0,-360,30)){
p.moveTo(0,-360).size(3).o(32,1);
while(mouseDown())wait(0.01);
return 0;
}
int x=getMDX(),y=getMDY(),t=0;
for(int i=1;i<=9;i++){
for(int j=1;j<=10;j++){
if(mouseIn(-315+(j-1)*70,280-(i-1)*70,30))
{x=i;y=j;t=1;break;}
}
if(t==1)break;
}
if(!(x==getMDX()&&y==getMDY())){
if(b==0&&a[x][y]==0)continue;
if(c==x&&d==y&&b==1)b=0;
else b++;
if(b==2){
b=0;
if(can(c,d,x,y)==1){
if(a[x][y]!=0)cout<<a[x][y]<<" die\n";
a[x][y]=a[c][d];a[c][d]=0;
g=1-g;draw();
cout<<a[x][y]<<' ';
}
else cout<<a[c][d]<<" can't ";
cout<<"move from("<<c<<','<<d<<")to("<<x<<','<<y<<")\n";
}
c=x;d=y;
}
if(win()==1)return 0;
draw();
if(g==0)
p.moveTo(-220,-330).text("move",0,35);
}
return 0;
}
int si(){
b=0;g=1;cc=0;
for(int i=1;i<=9;i++){
for(int j=1;j<=11;j++){
a[i][j]=0;
}
}
for(int i=0;i<5;i++)a[5-i][1]=a[5+i][1]=i+1;
a[2][3]=6;a[8][3]=6;
for(int i=1;i<=9;i+=2)a[i][4]=7;
for(int i=0;i<5;i++)a[5-i][10]=a[5+i][10]=i+1+7;
a[2][8]=13;a[8][8]=13;
for(int i=1;i<=9;i+=2)a[i][7]=14;
cout<<"chess initialization\n";p.c(2);
p.rr(8000,8000,15);
p.moveTo(0,180).text("GoC Chinese Chess",0,87);
p.moveTo(0,90).text("GCCC Made With Skun",0,51);
p.size(6);
p.moveTo(-200,-200).o(125).text("player",0,85);
p.moveTo( 200,-200).o(125).text("computer",0,58);
p.moveTo(350,-380).text("v2.0",0,24);
while(1){
waitMouse();
if(mouseIn(-200,-200,130)){
p.moveTo(-200,-200).size(5).o(128,1);
while(mouseDown())wait(0.01);
pp();
return 0;
}
if(mouseIn( 200,-200,130)){
p.moveTo( 200,-200).size(5).o(128,1);
while(mouseDown())wait(0.01);
pc();
return 0;
}
wait(0);
}
}
int main(){
p.speed(10).size(4).hide();
while(1){
si();
}
return 0;
}
2.猜数游戏
int main(){
p.hide().rr(1000,1000,14);
p.text("欢迎来到猜数游戏",1,60);
p.moveTo(0,-100);
p.text("请猜",1,60);
int z;
int a;
int b;
p.rt(90).up();
a=rand()%10+1;
cin>>b;
for(z=0;b!=a;z++)
if(b==a){
p.cls();
p.text("猜对了");
}else if(b<a)
{ p.cls();
p.text(" 猜小了").fd(60).text("再猜:");
cin>>b;
}
else if(b>a)
{ p.cls();
p.text("猜大了").fd(60).text("再猜:");
cin>>b;
}
p.cls().text("猜对了").fd(60);
p.text("共猜了").rt(90).fd(60).text(z+1).fd(30).text("次");
return 0;
}