拉灯游戏
2015-07-23 08:49
176 查看
#include<cstdio> #include<cstring> #include<ctime> #include<cstdlib> #include<windows.h> #include<conio.h> #include<algorithm> using namespace std; bool f[10][10]; int sum,num; int dir[5][2]={ 0,1, 1,0, -1,0, 0,-1, 0,0 }; const int n=5; void game(); void gotoxy(int x,int y) { int xx=0x0b; HANDLE h0utput; COORD loc; loc.X=x,loc.Y=y; h0utput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(h0utput,loc); } void change(int x,int y) { for(int i=0;i<n;i++) { int xx=x+dir[i][0]; int yy=y+dir[i][1]; f[xx][yy]^=1; } } void print() { system("cls"); gotoxy(30,5); printf("x |"); gotoxy(32,6); printf("|"); for(int i=1;i<=n;i++) { gotoxy(30,i*2+5); printf("%d | ",i); for(int j=1;j<=5;j++) if(f[i][j]==1) printf("X "); else printf("O "); gotoxy(32,i*2+6); printf("|"); } gotoxy(32,17); printf("|"); gotoxy(30,16); for(int i=1;i<=n*2+3;i++) { if(i==3) gotoxy(34,16); printf("-"); } gotoxy(33,17); printf(" "); for(int i=1;i<=n;i++) printf("%d ",i); printf("y"); } void gamemade() { srand(time(0)); system("cls"); sum=num=0; memset(f,0,sizeof(f)); int p=rand()%30+1; num=p; for(int i=1;i<=p;i++) { int x=rand()%5+1; int y=rand()%5+1; change(x,y); } print(); } void gamestart() { gotoxy(30,10); printf("拉灯游戏"); gotoxy(26,12); printf("按任意键开始游戏"); getch(); gamemade(); } bool chick() { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(f[i][j]==1) return 0; return 1; } void win() { system("cls"); gotoxy(30,10); printf("You Win"); gotoxy(28,12); printf("是否继续游戏"); gotoxy(29,13); printf("是\\y,否\\n"); gotoxy(30,15); char c[10]; scanf("%s",c); if(c[0]=='n') exit(0); else gamemade(),game(); } void game() { while(!chick()) { gotoxy(10,10); printf("预期需要步数 : %d",num); gotoxy(10,12); printf("您已走步数 : %d",sum); gotoxy(25,20); printf("选择你想拉的灯:"); int x,y; scanf("%d",&x); if(x==12345678) win(); else scanf("%d",&y); if(x<1||x>5||y<1||y>5) { system("cls"); system("color AC"); gotoxy(30,10); printf("变态\n"); exit(0); } change(x,y); print(); sum++; } win(); } int main() { gamestart(); game(); }
相关文章推荐
- iOS-OAuth授权
- 异常java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
- DataGridView增加新行(合计行)
- 使用struts2进行文件下载以及下载权限控制的例子
- hdu2899_Strange fuction
- 使用struts2进行文件下载以及下载权限控制的例子
- Win10 Build 10166 Mobile 向慢会员用户推送
- Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
- git多人同步到远端
- 数据结构与算法汇总
- 在 RHEL/CentOS 上为Web服务器架设 “XR”(Crossroads) 负载均衡器
- Linearization of the kernel functions in SVM
- JAVA多线程
- 嵌入式linux之自己写bootload之编写第1阶段
- 设计模式之单一职责原则
- 在 RHEL/CentOS 上为Web服务器架设 “XR”(Crossroads) 负载均衡器
- F.Turing equation
- c# 读取mysql 某个表的所有字段名称
- C和指针 (pointers on C)——第十章:结构和联合(下一个)锻炼
- 在Xcode4.5中禁用ARC(Automatic Referencing Counting)