文章标题
来源:互联网 发布:网络防御技术 编辑:程序博客网 时间:2024/06/15 02:33
三子棋小思路
.1.在屏幕打印出一个棋盘;
2.人移动棋子;
3.检查输赢;
4.电脑移动棋子;
5.检查输赢;
代码如下:
game.h
#define _CRT_SECURE_NO_WARNINGS 1#ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#define ROW 10#define COL 10#define DEFAULT_COUNT 20#define ROWS ROW+2#define COLS COL+2void set_mine(char mine[ROWS+2][COLS+2], int row, int col);void display(char board[ROWS+2][COLS+2], int row, int col);int get_mine_count(char board[ROWS][COLS], int row, int col);void play_game(char mine[ROWS+2][COLS+2], char show[ROWS][COLS]);#endif
game.c
#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"//产生随机数int get_random_num(int m, int n){ return rand()%(n-m+1)+m;}//设置雷阵void set_mine(char mine[ROWS][COLS], int row, int col){ int count = DEFAULT_COUNT; while(count)//雷的个数 { int x = get_random_num(1, 10); int y = get_random_num(1, 10); if(mine[x][y] == '0') { mine[x][y] = '1'; count--; } }}//打印雷阵(排雷结果)信息void display(char board[ROWS][COLS], int row, int col){ int i = 0; int j = 0; printf(" "); for(i=1; i<=10; i++) { printf("%d ", i); } printf("\n"); for(i=1; i<=10; i++) { printf("---"); } printf("\n"); for(i=1; i<row-1; i++) { printf("%2d| ", i); for(j=1; j<col-1; j++) { printf("%c ", board[i][j]); } printf("\n"); }}//统计非雷区周围的雷的个数int get_mine_count(char board[ROWS][COLS], int x, int y){ return (board[x-1][y-1]-'0')+(board[x][y-1]-'0')+(board[x+1][y-1]-'0')+(board[x+1][y]-'0')+(board[x+1][y+1]-'0')+(board[x][y+1]-'0')+(board[x-1][y+1]-'0')+(board[x-1][y-1]-'0');}//游戏的主逻辑void play_game(char mine[ROWS][COLS], char show[ROWS][COLS]){ while(1) { int x = 0; int y = 0; int win = 0; printf("请输入坐标>:"); scanf("%d%d", &x, &y); if(((x>=1)&&(x<=10))&&((y>=1)&&(y<=10))) { if(mine[x][y] == '1') { printf("被炸死\n"); display(mine, ROWS, COLS); break; } else { int ret = 0; win++; ret = get_mine_count(mine, x, y); show[x][y] = ret+'0'; display(show, ROWS, COLS); if(win == COL*ROW-DEFAULT_COUNT) { printf("雷排完了\n"); display(mine, ROWS, COLS); break; } } } else { printf("坐标输入有误\n"); } }}
test.c
#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void game(){ char mine[ROWS][COLS]; char show[ROWS][COLS]; srand((unsigned int)time(NULL)); memset(mine, '0', (ROWS)*(COLS)*sizeof(char)); memset(show, '*', (ROWS)*(COLS)*sizeof(char)); set_mine(mine, ROWS, COLS); display(mine, ROWS, COLS); display(show, ROWS, COLS); play_game(mine, show);}void menu(){ printf("###########################\n"); printf("###1.开始游戏 0.退出游戏###\n"); printf("###########################\n");}int main(){ int input = 0; do { menu(); printf("请选择->:"); scanf("%d", &input); switch(input) { case 1: game(); break; case 0: break; default: printf("选择错误\n"); break; } } while (input); return 0;}
简单的小游戏程序,实乃居家旅行,无聊练手之必备。
阅读全文
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 二维数组传参做形参
- 返回Json数据浏览器带上<pre></pre>标签解决方法
- 网络应用的Socket API编程的基本调用流程
- hdu--改革春风吹满地
- Ubuntu16.04 下安装和卸载Google Chrome
- 文章标题
- 【2017.12.9】8.String to Integer(atoi) 字符串到整数
- 求两个整数的最小公倍数与最大公约数
- 10.消息总线(bus+rabbitmq)
- [JavaScript,ES6]函数声明提升和预解析的总结和试验
- Qt加密source
- ubuntu 16.04安装mysql-server_5.7.xx
- 飞跃原野sdut1124
- 剑指offer 求1+2+3+..+n