#include <shlobj.h>
#include <cstdlib>
#include <iostream>
#include <ctime>
#include <cmath>
using namespace std;
void color(int forg, int back)
{
WORD wc=((back & 0x0F)<<4)+(forg&0x0F);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),wc);
return ;
}
string str="-:海域,*:己方船只,x:已被打击的海域,?:未探明敌方海域\n";
char x[11][11],y[11][11];
bool z[11][11],x2[11][11];
int n=1,A,B,hp=20,ehp=20;
bool v,d=true;
void movewindow()
{
int sktime=10,skdis=10;
RECT rect;
HWND win = NULL ,oldwin = NULL;
int X,Y,W,H,i;
for(i=1;i<=10;i++)
{
win=GetForegroundWindow();
if(win!=oldwin)
{
GetWindowRect(win,&rect);
X=rect.left;
Y=rect.top;
W=rect.right-X;
H=rect.bottom-Y;
oldwin=win;
}
MoveWindow(win,X-skdis,Y,W,H,TRUE);
Sleep(sktime);
MoveWindow(win,X-skdis,Y-skdis,W,H,TRUE);
Sleep(sktime);
MoveWindow(win,X,Y-skdis,W,H,TRUE);
Sleep(sktime);
MoveWindow(win,X,Y,W,H,TRUE);
Sleep(sktime);
}
return ;
}
void show()
{
int i,j;
cout<<" ";
color(2,15);
cout<<" 我 方 ";
color(0,15);
cout<<" ";
color(4,15);
cout<<" 敌 方\n" ;
color(0,15);
cout<<" A B C D E F G H I J A B C D E F G H I J \n";
for(i=1;i<=10;i++)
{
if(i<10) cout<<i<<" ";
else cout<<i<<" ";
for(j=1;j<=10;j++)
{
if(x[i][j]=='*') color(2,15);
if(x[i][j]=='x'&&x2[i][j]==true) color(4,15);
cout<<x[i][j]<<' ';
color(0,15);
}
cout<<" ";
for(j=1;j<=10;j++)
{
if(y[i][j]=='x'&&z[i][j]==true) color(4,15);
if(v==false) cout<<y[i][j]<<' ';
else
{
if(z[i][j]==false) cout<<'-';
else cout<<'*';
cout<<' ';
}
color(0,15);
}
cout<<'\n';
}
return ;
}
int getrand(int mn,int mx)
{
int x=rand()%(mx-mn+1)+mn;
return x;
}
bool isvalid_1(int a,int b)
{
if(x[a-1][b]=='-'&&x[a+1][b]=='-'&&x[a][b-1]=='-'&&x[a][b+1]=='-'&&x[a][b]=='-') return true;
else return false;
}
void summon_1()
{
int i;
int cx=getrand(4,7),cy=getrand(4,7),dir=getrand(1,4);
switch(dir){
case 1:x[cx][cy]=x[cx-1][cy]=x[cx-2][cy]=x[cx-3][cy]='*';break;
case 2:x[cx][cy]=x[cx][cy+1]=x[cx][cy+2]=x[cx][cy+3]='*';break;
case 3:x[cx][cy]=x[cx+1][cy]=x[cx+2][cy]=x[cx+3][cy]='*';break;
case 4:x[cx][cy]=x[cx][cy-1]=x[cx][cy-2]=x[cx][cy-3]='*';break;
default:break;
}
for(i=1;i<=2;i++){
bool exit=false;
while(1){
int cx=getrand(3,8),cy=getrand(3,8),dir=getrand(1,4);
switch(dir){
case 1:{
if(isvalid_1(cx,cy)&&isvalid_1(cx+1,cy)&&isvalid_1(cx+2,cy)){
x[cx][cy]=x[cx+1][cy]=x[cx+2][cy]='*';
exit=true;
}
break;
}
case 2:{
if(isvalid_1(cx,cy)&&isvalid_1(cx,cy+1)&&isvalid_1(cx,cy+2)){
x[cx][cy]=x[cx][cy+1]=x[cx][cy+2]='*';
exit=true;
}
break;
}
case 3:{
if(isvalid_1(cx,cy)&&isvalid_1(cx-1,cy)&&isvalid_1(cx-2,cy)){
x[cx][cy]=x[cx-1][cy]=x[cx-2][cy]='*';
exit=true;
}
break;
}
case 4:{
if(isvalid_1(cx,cy)&&isvalid_1(cx,cy-1)&&isvalid_1(cx,cy-2)){
x[cx][cy]=x[cx][cy-1]=x[cx][cy-2]='*';
exit=true;
}
break;
}
default:break;
}
if(exit==true) break;
}
}
for(i=1;i<=3;i++){
bool exit=false;
while(1){
int cx=getrand(2,9),cy=getrand(2,9),dir=getrand(1,4);
switch(dir){
case 1:{
if(isvalid_1(cx,cy)&&isvalid_1(cx+1,cy)){
x[cx][cy]=x[cx+1][cy]='*';
exit=true;
}
break;
}
case 2:{
if(isvalid_1(cx,cy)&&isvalid_1(cx,cy+1)){
x[cx][cy]=x[cx][cy+1]='*';
exit=true;
}
break;
}
case 3:{
if(isvalid_1(cx,cy)&&isvalid_1(cx-1,cy)){
x[cx][cy]=x[cx-1][cy]='*';
exit=true;
}
break;
}
case 4:{
if(isvalid_1(cx,cy)&&isvalid_1(cx,cy-1)){
x[cx][cy]=x[cx][cy-1]='*';
exit=true;
}
break;
}
default:break;
}
if(exit==true) brea
C++小游戏的主意(“海战游戏”)
最新推荐文章于 2024-05-04 22:11:42 发布