继续跟着做一些简单的项目,今天的课只听到用两个数组进行分开存储之后,自己就有了大概的思路,所有的代码都是自己敲的,通过这个小程序掌握了二维数组的使用,函数调用,及正规使用头文件等
#define ?_CRT_SECURE_NO_WARNINGS #include "game.h"
void play() { ?? ?//初始化游戏界面 ?? ?int board1[9][9]; ?? ?char board2[9][9]; ?? ?initgame(board1,board2); ?? ?//打印游戏界面? ?? ?printboard(board2,9,9); ?? ?//玩家操作 ?? ?while (1) ?? ?{ ?? ??? ?int x=player(board1, board2); ?? ??? ?if (x == 0) ?? ??? ??? ?break; ?? ??? ?//检索是否胜利 ?? ??? ?for (int i = 0; i < 9; i++) ?? ??? ?{ ?? ??? ??? ?for (int j = 0; j < 9; j++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if (board1[i][j] == 0) ?? ??? ??? ??? ??? ?goto A; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?printf("您获得胜利\n"); ?? ??? ?break; ?? ?A:; ?? ?} } int main() { ?? ?int input = 0; ?? ?srand((unsigned)time(NULL)); ?? ?do ?? ?{ ?? ?? ??? ?menu(); ?? ??? ?scanf("%d", &input); ?? ??? ?switch (input) ?? ??? ?{ ?? ??? ?case 1:play(); ?? ??? ??? ?break; ?? ??? ?case 0: ?? ??? ??? ?printf("退出成功\n"); ?? ??? ??? ?break; ?? ??? ?default: ?? ??? ??? ?printf("输入有误请重新输入\n"); ?? ??? ??? ?break; ?? ??? ?} ?? ?} while (input);
?? ? ?? ?return 0; }
#include "game.h" #define ?_CRT_SECURE_NO_WARNINGS
//打印菜单的函数? void menu() { ?? ?printf("*****************************\n"); ?? ?printf("********* ? 1.play ?*********\n"); ?? ?printf("********* ? 0.exit ?*********\n"); ?? ?printf("*****************************\n"); ?? ?printf("请选择:>"); }
//初始化游戏 void initgame(int board1[9][9], char board2[9][9]) { ?? ?//雷的放置 ?? ? ?? ?int a, b; ?? ?for (int i = 0; i < 9; i++) ?? ?{ ?? ??? ?for (int j = 0; j < 9; j++) ?? ??? ?{ ?? ??? ??? ?board1[i][j] = 0;?? ? ?? ??? ?} ?? ?} ?? ?for (int x = 0; x < 10; x++) ?? ?{ ?? ??? ?a = rand() % 9; ?? ??? ?b = rand() % 9; ?? ??? ?if (board1[a][b] == 1) ?? ??? ?{ ?? ??? ??? ?x--; ?? ??? ??? ?continue; ?? ??? ?} ?? ??? ?board1[a][b] = 1;
?? ?} ?? ?//游戏界面 ?? ?for (int i = 0; i < 9; i++) ?? ?{ ?? ??? ?for (int j = 0; j < 9; j++) ?? ??? ?{ ?? ??? ??? ?board2[i][j] = '*'; ?? ??? ?} ?? ?}
}
//打印游戏界面 void printboard(char board2[9][9],int i,int j) {
?? ?printf("------------扫雷游戏-------------\n"); ?? ?printf("0 1 2 3 4 5 6 7 8 9\n"); ?? ?for (int a = 0; a < i; a++) ?? ?{ ?? ??? ?printf("%d ", a+1); ?? ??? ?for (int b = 0; b < j; b++) ?? ??? ?{ ?? ??? ??? ?printf("%c ", board2[a][b]); ?? ??? ??? ? ?? ??? ?} ?? ??? ?printf("\n"); ?? ?} ?? ? }
//玩家操作 int player(int board1[9][9], char board2[9][9]) { ?? ?//1.玩家选坐标 ?? ?//2.判断坐标是否为雷 ? ?A:; ?? ?int a=0,b=0,count=0; ?? ?int i; ?? ?printf("请输入坐标\n"); ?? ?scanf_s("%d%d", &a,&b); ?? ?if (a > 9 || b > 9||a==0||b==0) ?? ??? ?goto A; ?? ?if (board1[a - 1][b - 1] == 1) ?? ?{ ?? ??? ?printf("BOOM!!\n"); ?? ??? ?printf("游戏结束\n"); ?? ??? ?return 0; ?? ?} ?? ?else ?? ?{ ?? ??? ?if (board1[a - 2][b - 2] == 1) ?? ??? ??? ?count++; ?? ??? ?if (board1[a - 2][b - 1]==1) ?? ??? ??? ?count++; ?? ??? ?if (board1[a - 2][b]==1) ?? ??? ??? ?count++; ?? ??? ?if (board1[a - 1][b - 2]==1) ?? ??? ??? ?count++; ?? ??? ?if (board1[a - 1][b]==1) ?? ??? ??? ?count++; ?? ??? ?if (board1[a][b - 2]==1) ?? ??? ??? ?count++; ?? ??? ?if (board1[a][b - 1]==1) ?? ??? ??? ?count++; ?? ??? ?if (board1[a][b]==1) ?? ??? ??? ?count++; ?? ??? ?board1[a - 1][b - 1] = 2; ?? ??? ?board2[a - 1][b - 1] = count+48; ?? ??? ?printboard(board2, 9, 9); ?? ??? ?return 1; ?? ?} }
//头文件的包含 #include <stdio.h> #include <stdlib.h> #include <time.h>
//打印菜单的声明 void menu();
//初始化游戏的声明 void initgame(int board1[9][9],char board2[9][9]);
//打印游戏界面的声明 void printboard(char board2[9][9],int i,int j);
//玩家操作的声明 int player(int board1[9][9], char board2[9][9]);
|