#include<bits/stdc++.h>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
#define jp(x) ((GetAsyncKeyState(x)&0x8000)?1:0)
using namespace std;
struct Button
{
int x,y,color;
const char *name;
int len;
};
inline void GetPos(POINT &pt)
{
HWND hwnd=GetForegroundWindow();
GetCursorPos(&pt);
ScreenToClient(hwnd,&pt);
pt.y=pt.y/16;
pt.x=pt.x/8;
}
inline void color(int a)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
inline void gto(int x,int y)
{
COORD pos;
pos.X=y;
pos.Y=x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
inline Button NewButton(int x,int y,int color,const char *name)
{
Button t;
t.x=x;
t.y=y;
t.name=name;
t.color=color;
t.len=strlen(name);
gto(x,y),cout<<name;
return t;
}
inline bool Preserve(Button A)
{
gto(A.x,A.y),color(A.color);
POINT pt;
GetPos(pt);
if(pt.y==A.x&&(pt.x>=A.y&&pt.x<=A.y+A.len))
{
if(KEY_DOWN(MOUSE_MOVED))return 1;
}
return 0;
}
inline void dis_mouse()
{
ShowCursor(false);
HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(hOut,&cci);
cci.bVisible=false;
SetConsoleCursorInfo(hOut,&cci);
}
inline void print(int x,int y,int col,string c)
{
color(col);
y*=2;
gto(x,y);
cout<<c;
color(7);
}
int ma[100][100]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1},
{1,2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,2,1},
{1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
int lm=5,rm=5;
int scl=0,scr=0;
int bx=5,by=11;
int gogo;//1左上,2左,3左下,4右上,5右,6右下
int fx[10]={0,-1, 0, 1,-1, 0, 1};
int fy[10]={0,-1,-1,-1, 1, 1, 1};
inline void printmap()
{
for(register int i=0;i<=10;i++)
for(register int j=0;j<=30;j++)
{
if(ma[i][j]==0)print(i,j,7," ");
if(ma[i][j]==1)print(i,j,8,"■");
if(ma[i][j]==2)print(i,j,4,"■");
if(ma[i][j]==3)print(i,j,7,"●");
gto(11,20);
printf("%d:%d",scl,scr);
}
}
int main()
{
srand(time(NULL));
gogo=rand()%6+1;
dis_mouse();
system("mode con cols=46 lines=16");
print(1,0,7,"弹球");
Button pvp=NewButton(5,0,7,">pvp");
Button pvc=NewButton(7,0,7,">pvc");
while(1)
{
if(Preserve(pvp))
{
printmap();
while(1)
{
if(jp('W'))
{
if(by==2)gogo=4;
if(lm>2)
{
ma[lm+1][1]=0;
print(lm+1,1,7," ");
lm--;
ma[lm-1][1]=2;
print(lm-1,1,4,"■");
}
Sleep(50);
}
if(jp('S'))
{
if(by==2)gogo=6;
if(lm<8)
{
ma[lm-1][1]=0;
print(lm-1,1,7," ");
lm++;
ma[lm+1][1]=2;
print(lm+1,1,4,"■");
}
Sleep(50);
}
if(jp(38))
{
if(by==21)gogo=1;
if(rm>2)
{
ma[rm+1][21]=0;
print(rm+1,21,7," ");
rm--;
ma[rm-1][21]=2;
print(rm-1,21,4,"■");
}
Sleep(50);
}
if(jp(40))
{
if(by==21)gogo=3;
if(rm<8)
{
ma[rm-1][21]=0;
print(rm-1,21,7," ");
rm++;
ma[rm+1][21]=2;
print(rm+1,21,4,"■");
}
Sleep(50);
}
if(gogo==1)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(bx==0)bx-=fx[gogo],by-=fy[gogo],gogo=3;
if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=4;
if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
print(bx,by,7,"●");
Sleep(100);
}
if(gogo==2)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=5;
if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
print(bx,by,7,"●");
Sleep(100);
}
if(gogo==3)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(bx==10)bx-=fx[gogo],by-=fy[gogo],gogo=1;
if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=5;
if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
print(bx,by,7,"●");
Sleep(100);
}
if(gogo==4)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(bx==0)bx-=fx[gogo],by-=fy[gogo],gogo=6;
if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=1;
if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
print(bx,by,7,"●");
Sleep(100);
}
if(gogo==5)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=2;
if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
print(bx,by,7,"●");
Sleep(100);
}
if(gogo==6)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(bx==10)bx-=fx[gogo],by-=fy[gogo],gogo=4;
if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=3;
if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
print(bx,by,7,"●");
Sleep(100);
}
if(scl==3)
{
system("cls");
printf("player 1 wins!");
Sleep(3096);
system("cls");
scl=scr=0;
print(1,0,7,"弹球");
print(5,0,7,">pvp");
print(7,0,7,">pvc");
break;
}
if(scr==3)
{
system("cls");
printf("player 2 wins!");
Sleep(3096);
system("cls");
scl=scr=0;
print(1,0,7,"弹球");
print(5,0,7,">pvp");
print(7,0,7,">pvc");
break;
}
}
}
if(Preserve(pvc))
{
printmap();
while(1)
{
if(jp('W'))
{
if(by==2)gogo=4;
if(lm>2)
{
ma[lm+1][1]=0;
print(lm+1,1,7," ");
lm--;
ma[lm-1][1]=2;
print(lm-1,1,4,"■");
}
}
if(jp('S'))
{
if(by==2)gogo=6;
if(lm<8)
{
ma[lm-1][1]=0;
print(lm-1,1,7," ");
lm++;
ma[lm+1][1]=2;
print(lm+1,1,4,"■");
}
}
if(gogo==1)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(bx==0)bx-=fx[gogo],by-=fy[gogo],gogo=3;
if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=4;
if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
print(bx,by,7,"●");
int isgo=rand()%5;
if(isgo!=0)
{
if(by==21)gogo=1;
if(rm>2)
{
ma[rm+1][21]=0;
print(rm+1,21,7," ");
rm--;
ma[rm-1][21]=2;
print(rm-1,21,4,"■");
}
Sleep(100);
}
Sleep(100);
}
if(gogo==2)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=5;
if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
print(bx,by,7,"●");
Sleep(100);
}
if(gogo==3)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(bx==10)bx-=fx[gogo],by-=fy[gogo],gogo=1;
if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=5;
if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
print(bx,by,7,"●");
int isgo=rand()%5;
if(isgo!=0)
{
if(by==21)gogo=3;
if(rm<8)
{
ma[rm-1][21]=0;
print(rm-1,21,7," ");
rm++;
ma[rm+1][21]=2;
print(rm+1,21,4,"■");
}
Sleep(100);
}
Sleep(100);
}
if(gogo==4)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(bx==0)bx-=fx[gogo],by-=fy[gogo],gogo=6;
if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=1;
if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
print(bx,by,7,"●");
int isgo=rand()%5;
if(isgo==0)
{
if(by==21)gogo=1;
if(rm>2)
{
ma[rm+1][21]=0;
print(rm+1,21,7," ");
rm--;
ma[rm-1][21]=2;
print(rm-1,21,4,"■");
}
Sleep(100);
}
Sleep(100);
}
if(gogo==5)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=2;
if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
print(bx,by,7,"●");
Sleep(100);
}
if(gogo==6)
{
print(bx,by,7," ");
bx+=fx[gogo],by+=fy[gogo];
if(bx==10)bx-=fx[gogo],by-=fy[gogo],gogo=4;
if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=3;
if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
print(bx,by,7,"●");
int isgo=rand()%5;
if(isgo!=0)
{
if(by==21)gogo=3;
if(rm<8)
{
ma[rm-1][21]=0;
print(rm-1,21,7," ");
rm++;
ma[rm+1][21]=2;
print(rm+1,21,4,"■");
}
Sleep(100);
}
Sleep(100);
}
if(scl==3)
{
system("cls");
printf("player 1 wins!");
Sleep(3096);
system("cls");
scl=scr=0;
print(1,0,7,"弹球");
print(5,0,7,">pvp");
print(7,0,7,">pvc");
break;
}
if(scr==3)
{
system("cls");
printf("computer wins!");
Sleep(3096);
system("cls");
scl=scr=0;
print(1,0,7,"弹球");
print(5,0,7,">pvp");
print(7,0,7,">pvc");
break;
}
}
}
}
return 0;
}
弹球-c++小游戏源码
最新推荐文章于 2024-05-14 07:32:28 发布