目录

一、扫雷

二、迷宫

三、通讯录

四、核心代码


一、扫雷

功能简介:1.   棋盘设置 2.    设置模式 3.   红旗标志 4.  递归展开(DFS)

扫雷

二、迷宫

功能介绍: 1.   二维矩阵设置 2.   键盘输入 3.   自动求解(回溯)

迷宫

三、通讯录

功能介绍:1.    设计模板 2.    添加、删除、查找 3.    文件操作 4.    用户栏信息展开 5.    排序与优化

可视化通讯录

四、核心代码

1. Interface.cpp

#define _CRT_SECURE_NO_WARNINGS 1
#undef UNICODE
#undef _UNICODE#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <easyx.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <graphics.h>
#include <windows.h>
#include <unordered_map>
#include <string>
#include <stack>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;//1. Minesweeper
#define ROW 10
#define COL 10
#define ROWS ROW+2
#define COLS COL+2
#define MODE_EAZY 10
#define MODE_MID 15
#define MODE_HARD 20void InitBoard(char Board[ROWS][COLS], int rows, int cols, int set);
void SetBoard(char Board[ROWS][COLS], int row, int col, int mode);
void StartToPlay(char inBoard[ROWS][COLS], char outBoard[ROWS][COLS], int row, int col, int mode, int* keep_playing);//2. Mazegame
#define mROW 21
#define mCOL 29
void MazeGame();//3. Contact
#define NAME_MAX 16
#define SEX_MAX 8
#define ADD_MAX 16
#define TELE_MAX 16
#define KEY_MAX 16
#define CON_MAX 32
#define AVA_MAX 32typedef struct PeoInfo  //通过学号定位
{long long stu_number;  //学号char name[NAME_MAX];char key[KEY_MAX];  //密码int age;char sex[SEX_MAX];char address[ADD_MAX];char tele[TELE_MAX];char contact[CON_MAX];   //该学生的通讯录char avatar[AVA_MAX];   //头像
}IP;void ContactInter(IP info, unordered_map<long long, IP> ID, long long* saveId);//基于map的所有用户管理
void LoadStudentsID(unordered_map<long long, IP>& ID);
void SaveStudentsID(long long* id, IP* info);
void DelstudentsID(long long del);

2.Minesweeper.cpp

#define _CRT_SECURE_NO_WARNINGS 1
#include "Interface.h"void InitBoard(char Board[ROWS][COLS], int rows, int cols, int set) {for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {Board[i][j] = set;}}
}//踩雷之后展示整个棋盘
void DisPlayBoardGra(char Board[ROWS][COLS], int r, int c) {for (int i = 1; i < ROWS-1; i++) {for (int j = 1; j < COLS-1; j++) { if (i == r && j == c) continue;if (Board[i][j] - '0' == 1) {IMAGE bomb;loadimage(&bomb, "image_minesweeper\\bomb.jpg");putimage(100 + (j - 1) * 40, 100 + (i - 1) * 40, &bomb);}else {IMAGE blank2;loadimage(&blank2, "image_minesweeper\\blank.jpg");putimage(100 + (j - 1) * 40, 100 + (i - 1) * 40, &blank2);}Sleep(75); }}
}//随机放置mode个数的雷到底层棋盘中
void SetBoard(char Board[ROWS][COLS], int row, int col, int mode){int count = mode;while (count){int x = rand() % row + 1;int y = rand() % col + 1;if (Board[x][y] != '1'){Board[x][y] = '1';count--;}}
}//计算周围雷的数量
int Count(char inBoard[ROWS][COLS], int x, int y){return (inBoard[x - 1][y - 1] + inBoard[x - 1][y] + inBoard[x][y - 1] +inBoard[x + 1][y - 1] + inBoard[x + 1][y] + inBoard[x + 1][y + 1] +inBoard[x][y + 1] + inBoard[x - 1][y + 1] - 8 * '0');
}void LookForRay(char inBoard[ROWS][COLS], char outBoard[ROWS][COLS], int x, int y, int* win){if (outBoard[x][y] == 'F') return;  //递归到红旗返回if (inBoard[x][y] == '0')*win -= 1;    //记录winchar sum = Count(inBoard, x, y);   //计算周围雷的个数:越界问题?outBoard[x][y] = sum + '0';//显示该点周围雷的个数char sum_str[30];sprintf(sum_str, "image_minesweeper\\%d.jpg", sum);    // 用sprintf合并字符串,通过文件相对位置找到对应图片IMAGE number;loadimage(&number, sum_str);putimage(100 + (y - 1) * 40, 100 + (x - 1) * 40, &number);//该坐标周围没有雷,想周围递归if (outBoard[x][y] == '0'){IMAGE blank;loadimage(&blank, "image_minesweeper\\blank.jpg");putimage(100 + (y - 1) * 40, 100 + (x - 1) * 40, &blank);if (x - 1 >= 1 && x - 1 <= ROW && y - 1 >= 1 && y - 1 <= COL && outBoard[x - 1][y - 1] == '*')    //递归条件:递归坐标未被排点,LookForRay(inBoard, outBoard, x - 1, y - 1, win);    //win为地址if (x - 1 >= 1 && x - 1 <= ROW && y >= 1 && y <= COL && outBoard[x - 1][y] == '*')LookForRay(inBoard, outBoard, x - 1, y, win);if (x - 1 >= 1 && x - 1 <= ROW && y + 1 >= 1 && y + 1 <= COL && outBoard[x - 1][y + 1] == '*')LookForRay(inBoard, outBoard, x - 1, y + 1, win);if (x >= 1 && x <= ROW && y - 1 >= 1 && y - 1 <= COL && outBoard[x][y - 1] == '*')LookForRay(inBoard, outBoard, x, y - 1, win);if (x >= 1 && x <= ROW && y + 1 >= 1 && y + 1 <= COL && outBoard[x][y + 1] == '*')LookForRay(inBoard, outBoard, x, y + 1, win);if (x + 1 >= 1 && x + 1 <= ROW && y - 1 >= 1 && y - 1 <= COL && outBoard[x + 1][y - 1] == '*')LookForRay(inBoard, outBoard, x + 1, y - 1, win);if (x + 1 >= 1 && x + 1 <= ROW && y >= 1 && y <= COL && outBoard[x + 1][y] == '*')LookForRay(inBoard, outBoard, x + 1, y, win);if (x + 1 >= 1 && x + 1 <= ROW && y + 1 >= 1 && y + 1 <= COL && outBoard[x + 1][y + 1] == '*')LookForRay(inBoard, outBoard, x + 1, y + 1, win);}
}void StartToPlay(char inBoard[ROWS][COLS], char outBoard[ROWS][COLS], int row, int col, int mode, int* keep_playing){int r = 0;int c = 0;int win = row * col - mode;   //当win等于0时,即剩下的格子全是雷时,判断胜利bool die = false;//												

基于EasyX图形库的C/C++实战项目——西南大学大一C语言程序设计|课程设计《多功能应用平台》相关推荐

  1. C语言链表学生成绩制作成链表,C语言程序设计课程设计基于链表的学生成绩管理系统.doc...

    C语言程序设计课程设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学 ...

  2. 基于链表的学生成绩最高分计算问题计算用c语言编写课程设计,C语言程序设计课程设计-基于链表的学生成绩管理系统.doc...

    xh,p->xm,p->gs,p->yy,p->wl); p=p->next; } fclose(fp); printf("保存结束按任意键继续\n" ...

  3. C语言程序项目计划书,(C语言程序设计课程设计计划书.doc

    (C语言程序设计课程设计计划书 C语言程序设计课程设计计划书 一.目的 1.熟悉并掌握C语言程序设计的基本方法与技能. 2.掌握利用递归进行程序设计的方法. 3.掌握对随机事件进行全程模拟的基本方法. ...

  4. 教育技术学习《基于 CPS 模型的翻转课堂教学模式构建——以“JAVA 语言程序设计”课程为例》笔记

    作者河南师范大学叶海智教授2016现代教育技术 本文中提到的CPS即创造性问题解决的英文首字母,是美国学者帕恩斯1981年文章提出的.是这样,不要因为感觉自己教育学的概念不深入就敢去应用,或者太老了怕 ...

  5. 用easyx画电子钟_基于EasyX图形库的多线程绘图应用

    本文<基于EasyX图形库的多线程绘图应用>由手机部落整理,仅供参考.如果觉得很不错,欢迎点评和分享-感谢你的阅读与支持! 张煜昕 摘要:EasyX 是C++语言进行图形化编程和游戏编程的 ...

  6. 大型ERP实战项目教程-任亮-专题视频课程

    大型ERP实战项目教程-11719人已学习 课程介绍         通过本ERP项目的学习,可以使学生形成开发的思想,产生真正的动手开发的能力,本项目是原公司的真实项目,如果你没有经验,那么学习这个 ...

  7. 大一上学期C++课程设计——学生成绩管理系统(QT项目)

    这里是一个大一的萌新!仅做学习分享 工程文件在评论区置顶!! 近期整理了一下大一上学期的课程设计报告作为学习总结,使用的软件是Qt Creator,主界面效果如下图 ----------以下为课程设计 ...

  8. c语言cdio案例,基于CDIO-OBE工程教育模式的C语言程序设计课程教学改革研究

    任顺 摘 要:针对物联网工程专业C语言程序设计课程教学中存在的不足,结合CDIO工程教育和OBE教育模式,开展教学改革研究.从夯实基础能力和激发创新能力两方面着手,重点阐述了C语言程序设计课程教学改革 ...

  9. c语言教学理念和思路,基于CDIO教育理念的C语言程序设计课程教学改革.doc

    基于CDIO教育理念的C语言程序设计课程教学改革 [摘要]C语言程序设计是一门实践性很强的课程,但目前该课程的教学环节存在实践教学相对薄弱等弊端.本文结合我院教学改革,尝试将CDIO工程教育理念应用于 ...

最新文章

  1. 比特币现金(BCH)将在2018年占据主导地位
  2. [转]程序员生涯总结
  3. VTK:图片之DrawShapes
  4. atan与atan2的区别
  5. 2016/11/10 kettle概述
  6. 解决Oracle 11gR2 空闲连接过多,导致连接数满的问题
  7. 趣谈 | Python为什么受欢迎的本质,知道的人寥寥无几?
  8. 使用Arrays sort 方法進行排序
  9. python对文件操作的统一步骤_基于Python实现对各种数据文件的操作
  10. 突发!ARM中国区执行董事长兼CEO被免职
  11. Android汉字按拼音首字母查询
  12. yml转换html,properties转换yml格式
  13. maxscale mysql5.7_Centos7安装maxscale 实现mysql的读写分离
  14. 教育培训机构小程序开发需求有哪些?
  15. IntelliJ IDEA使用记录:maven projects-compile提示【**类,找不到符号】
  16. 电路设计之8:MOS管驱动设计
  17. 程序员能找到对象吗?|猿代码科技
  18. 【金融大屏项目】—— Echarts水滴图(echarts-liquidfill)
  19. VMware VCP认证常见问答题
  20. USB调试时出现“because an app is obscuring a permission request settings cab't verify your resonse”问题

热门文章

  1. mutations vuex 调用_Vuex中的Mutations的具体使用方法
  2. vuex mutations参数传递
  3. Linux基础命令3
  4. 在binary环境下的函数类型推断(一)
  5. 服务器无线桥接,服务器无线桥接设置方法
  6. python生成20个随机数列表_Python利用random生成一个列表内的随机数
  7. OA-SLAM:在视觉SLAM中利用对象进行相机重新定位
  8. 教你如何做好cad转换成jpg格式
  9. SSM智能化仓储管理系统 计算机毕设源码30134
  10. python像数常用函数_ubuntukylin基础 python3 安装IDLE