C语言课程设计报告_扫雷

合集下载

c语言扫雷课程设计

c语言扫雷课程设计

c语言 扫雷 课程设计一、课程目标知识目标:1. 学生能理解C语言中数组的概念及其在程序设计中的应用。

2. 学生能够掌握C语言中循环和条件语句的使用,实现对数组的遍历和条件判断。

3. 学生能够运用逻辑思维和算法设计,实现扫雷游戏的初级算法。

技能目标:1. 学生能够运用C语言编写简单的扫雷游戏,培养编程实践能力。

2. 学生能够通过分析问题,设计并优化算法,提高解决问题的能力。

3. 学生能够在团队协作中,与同伴沟通、讨论,共同完成扫雷游戏的开发。

情感态度价值观目标:1. 学生通过扫雷游戏的开发,培养对编程的兴趣和热情,提高学习积极性。

2. 学生在团队协作中,学会分享和承担责任,培养良好的团队合作精神。

3. 学生在解决问题的过程中,锻炼面对挑战的勇气和毅力,培养克服困难的信心。

课程性质:本课程以项目式教学为主,结合实际案例,引导学生运用所学知识解决实际问题。

学生特点:学生处于中学阶段,对计算机编程有一定的了解,具备基本的C语言知识,对游戏开发有较高的兴趣。

教学要求:教师需结合学生特点和课程性质,设计合理的课程内容,引导学生主动参与,提高学生的实践能力和团队合作能力。

在教学过程中,注重培养学生的逻辑思维和问题解决能力,将课程目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. C语言基础知识回顾:数组、指针、基本数据类型、运算符和表达式。

2. 控制结构:循环语句(for、while)、条件语句(if、else if、else)。

3. 函数:函数的定义、调用、参数传递。

4. 游戏设计原理:扫雷游戏规则、界面设计、逻辑实现。

5. 算法设计:递归、随机数生成、数组操作。

6. 项目实践:小组合作,按以下步骤进行扫雷游戏的开发:- 设计游戏界面和逻辑框架;- 编写初始化地图、布雷、显示地图、标记和排查雷等功能函数;- 整合各功能模块,实现完整的扫雷游戏;- 调试和优化程序。

教学内容安排和进度:1. 基础知识回顾(1课时);2. 控制结构和函数(2课时);3. 游戏设计原理和算法设计(2课时);4. 项目实践(3课时)。

扫雷c语言课程设计

扫雷c语言课程设计

扫雷c语言课程设计一、课程目标知识目标:1. 理解C语言的基本数据类型、运算符、表达式及控制结构;2. 学会使用C语言进行数组操作和函数定义;3. 掌握扫雷游戏的逻辑结构和编程实现方法。

技能目标:1. 能够运用C语言编写简单的程序,实现扫雷游戏的界面显示和基本功能;2. 能够通过分析问题,设计合理的算法,解决扫雷游戏中遇到的问题;3. 培养学生的编程思维和解决问题的能力。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学生主动探索计算机科学的热情;2. 培养学生良好的编程习惯,严谨的学术态度,提高学生的团队合作意识;3. 通过扫雷游戏的设计与实现,使学生认识到编程在现实生活中的应用,激发学生为社会做出贡献的愿望。

课程性质:本课程为实践性较强的学科课程,结合实际案例,引导学生运用所学知识解决实际问题。

学生特点:学生具备一定的C语言基础,对编程有一定的兴趣,但编程实践能力有待提高。

教学要求:注重理论与实践相结合,引导学生主动参与课堂讨论,培养学生的编程实践能力和创新精神。

在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容1. C语言基础回顾:数据类型、变量、常量、运算符、表达式、控制结构(选择、循环);2. 数组的使用:一维数组、二维数组,数组作为函数参数;3. 函数的定义与调用:函数的定义、返回值、形参与实参、递归函数;4. 扫雷游戏逻辑分析:游戏规则、界面设计、雷区生成、排查雷区、标记与计时;5. 扫雷游戏编程实现:C语言实现扫雷游戏的各个功能模块,如界面显示、雷区生成、排查雷区等;6. 算法设计与优化:分析扫雷游戏中遇到的问题,设计相应的算法进行解决,并对算法进行优化。

教学内容安排与进度:第一课时:C语言基础回顾,数组的使用;第二课时:函数的定义与调用,扫雷游戏逻辑分析;第三课时:扫雷游戏编程实现(界面显示、雷区生成);第四课时:扫雷游戏编程实现(排查雷区、标记与计时);第五课时:算法设计与优化,课堂总结与展示。

c语言扫雷课程设计总结

c语言扫雷课程设计总结

c语言扫雷课程设计总结一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握扫雷游戏的逻辑设计。

2. 学会使用C语言编写程序,实现扫雷游戏的界面显示、地雷布置、排查等功能。

3. 掌握数组的使用,利用二维数组存储扫雷游戏的数据。

技能目标:1. 培养学生运用C语言解决问题的能力,提高编程技巧。

2. 培养学生的逻辑思维能力,通过分析问题,设计出合理的算法。

3. 提高学生的动手实践能力,能够独立完成扫雷游戏的编写和调试。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习热情,增强自信心。

2. 培养学生的团队协作精神,学会与他人分享和交流编程经验。

3. 培养学生面对困难不退缩,勇于尝试和解决问题的积极态度。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为C语言编程实践课,旨在通过设计扫雷游戏,让学生掌握C语言的基本语法和应用。

2. 学生特点:学生已经具备一定的C语言基础,对编程有一定了解,但实践能力较弱。

3. 教学要求:注重理论与实践相结合,以学生为主体,充分调动学生的积极性,培养其编程兴趣和动手能力。

1. 熟练掌握C语言的基本语法和结构,能够独立编写扫雷游戏程序。

2. 提高逻辑思维能力和问题解决能力,能够分析并优化扫雷游戏的算法。

3. 增强团队协作意识,善于与他人分享和交流编程经验。

4. 培养良好的学习习惯,勇于面对挑战,积极解决问题。

二、教学内容1. C语言基础语法回顾:变量定义、数据类型、运算符、控制结构(包括顺序结构、分支结构、循环结构)。

2. 数组的使用:介绍一维数组、二维数组的概念和应用,以及数组在扫雷游戏中的使用。

3. 函数的定义与调用:重点讲解自定义函数的编写,如初始化游戏界面、布置地雷、排查地雷等。

4. 游戏逻辑设计:分析扫雷游戏的规则,设计游戏的数据结构,编写算法实现游戏逻辑。

5. 界面设计与实现:利用C语言库函数,实现扫雷游戏的图形化界面显示。

6. 程序调试与优化:介绍调试工具和技巧,指导学生进行程序调试,提高程序性能。

实验报告模拟扫雷

实验报告模拟扫雷

一、实验目的1. 熟悉C语言程序设计的基本概念和编程技巧;2. 培养逻辑思维能力和算法设计能力;3. 深入理解数据结构在程序设计中的应用;4. 提高团队合作和交流能力。

二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C语言三、实验内容1. 游戏规则模拟扫雷游戏是一款经典的益智游戏,游戏规则如下:(1)游戏区域为NN的九宫格,其中N为用户自定义的整数;(2)九宫格中随机分布着M个地雷,地雷的数量由用户自定义;(3)玩家需要点击九宫格中的格子,如果点击到地雷,则游戏结束;(4)如果点击到非地雷的格子,则显示该格子周围8个格子中地雷的数量;(5)玩家需要在规定时间内找出所有的非地雷格子。

2. 游戏实现本次实验采用C语言编程实现模拟扫雷游戏,主要分为以下几个模块:(1)初始化游戏区域:创建一个NN的二维数组,用于存储游戏区域的状态,包括地雷、未翻开、翻开等;(2)生成地雷:随机在NN的二维数组中生成M个地雷;(3)显示游戏区域:根据游戏区域的状态,在控制台输出对应的九宫格;(4)判断是否踩到地雷:根据用户输入的坐标,判断该坐标是否为地雷;(5)显示周围地雷数量:根据用户输入的坐标,计算该坐标周围8个格子中地雷的数量;(6)游戏结束判断:判断玩家是否已翻开所有的非地雷格子,如果已翻开,则游戏胜利。

3. 实验步骤(1)创建一个名为“扫雷”的C语言项目;(2)编写一个名为“main.c”的源文件;(3)在“main.c”中定义游戏区域的大小N、地雷的数量M、用户输入的坐标x和y等变量;(4)编写初始化游戏区域的函数;(5)编写生成地雷的函数;(6)编写显示游戏区域的函数;(7)编写判断是否踩到地雷的函数;(8)编写显示周围地雷数量的函数;(9)编写游戏结束判断的函数;(10)在main函数中调用以上函数,实现游戏逻辑。

四、实验结果与分析1. 实验结果通过C语言编程,成功实现了模拟扫雷游戏。

c语音课程设计扫雷

c语音课程设计扫雷

c语音课程设计扫雷一、课程目标知识目标:1. 理解C语言基础语法,掌握变量定义、数据类型、运算符等基本概念;2. 学会使用C语言进行逻辑判断,掌握if-else语句和循环语句的使用;3. 掌握C语言数组、函数的基本用法,并能够运用到扫雷游戏的编写中。

技能目标:1. 能够运用所学知识,独立编写简单的C语言程序;2. 培养学生的逻辑思维能力,使其能够运用C语言解决实际问题,如扫雷游戏中的逻辑设计;3. 学会运用调试工具,分析和解决程序中的错误。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学生探索计算机科学的积极性;2. 培养学生的团队协作意识,使其在合作中学习、进步,共同完成扫雷游戏的编写;3. 培养学生勇于面对挑战、克服困难的精神,提高解决问题的自信心。

分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握C语言基础知识的基础上,通过实践扫雷游戏的编写,提高编程技能和逻辑思维能力。

课程目标具体、可衡量,便于学生和教师在教学过程中明确预期成果,并为后续的教学设计和评估提供依据。

二、教学内容1. C语言基础语法:变量定义、数据类型、运算符、表达式;2. 逻辑判断:if-else语句、switch语句;3. 循环语句:for循环、while循环、do-while循环;4. 数组:一维数组、二维数组;5. 函数:函数的定义、调用、传参;6. 游戏设计:扫雷游戏的逻辑设计、界面设计、功能实现;7. 调试与优化:运用调试工具、分析程序错误、提高程序性能。

教学内容依据课程目标,结合教材章节进行选择和组织。

教学大纲安排如下:第一周:C语言基础语法及简单程序编写;第二周:逻辑判断及循环语句;第三周:数组和函数;第四周:扫雷游戏逻辑设计及界面设计;第五周:扫雷游戏功能实现及调试优化。

教学内容科学系统,注重理论与实践相结合,使学生在掌握C语言基础知识的同时,能够运用所学编写具有一定难度的扫雷游戏。

三、教学方法本课程采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:教师通过生动的语言和实际案例,为学生讲解C语言的基本概念、语法规则等理论知识,使学生对C语言有全面的认识。

c语言课程设计扫雷

c语言课程设计扫雷

c 语言课程设计扫雷一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识,培养学生编程思维和解决问题的能力。

通过本课程的学习,学生能熟练使用C语言进行简单的程序设计,具备进一步学习计算机科学和软件工程相关知识的基础。

具体来说,知识目标包括:1.掌握C语言的基本语法和规则。

2.了解数据类型、运算符和表达式。

3.熟悉控制结构,如条件语句、循环语句等。

4.理解函数的定义和调用。

技能目标包括:1.能够编写简单的C语言程序。

2.能够阅读和理解C语言程序。

3.能够使用调试工具对C语言程序进行调试和优化。

情感态度价值观目标包括:1.培养学生的编程兴趣,提高学生对计算机科学的热爱。

2.培养学生的问题解决能力和创新思维。

3.培养学生团队合作精神和自主学习能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识。

具体安排如下:1.第一章:C语言概述,介绍C语言的历史和发展,了解C语言的特点和用途。

2.第二章:数据类型和运算符,学习基本数据类型、构造数据类型、运算符及其优先级。

3.第三章:控制结构,学习条件语句、循环语句等控制结构的使用。

4.第四章:函数,学习函数的定义、声明和调用,了解函数的参数传递和返回值。

5.第五章:数组和字符串,学习一维数组、多维数组、字符串的基本操作。

6.第六章:指针,学习指针的概念、运算和应用。

7.第七章:结构体和联合体,学习结构体、联合体的定义和使用。

8.第八章:文件操作,学习文件的概念、文件读写操作等。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式。

具体包括:1.讲授法:教师讲解C语言的基本概念、语法规则和编程技巧。

2.案例分析法:分析典型程序案例,让学生理解编程思想和方法。

3.实验法:学生动手编写程序,调试和优化代码,培养实际编程能力。

4.讨论法:分组讨论问题,培养学生的团队协作和沟通能力。

c语言程序设计课程设计扫雷

c语言程序设计课程设计扫雷

c语言程序设计课程设计扫雷一、课程目标知识目标:1. 理解C语言中数组、循环和条件判断等基本概念,掌握其在扫雷游戏中的应用;2. 学会使用C语言编写扫雷游戏的逻辑代码,实现游戏的基本功能;3. 了解扫雷游戏的规则,理解其背后的算法原理。

技能目标:1. 能够运用所学知识,独立设计并编写简单的C语言程序,实现扫雷游戏的基本功能;2. 培养逻辑思维能力,提高编程解决问题的能力;3. 学会运用调试工具,分析并解决程序中的错误。

情感态度价值观目标:1. 培养对编程的兴趣,激发学习C语言的积极性;2. 增强团队协作能力,培养良好的编程习惯;3. 认识到编程在现实生活中的应用,树立正确的价值观。

本课程针对高年级学生,在学生已掌握C语言基础知识的前提下,通过设计扫雷游戏,提高学生的编程实践能力。

课程注重培养学生的逻辑思维和团队协作能力,使学生能够运用所学知识解决实际问题。

课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果,为后续的教学设计和评估提供依据。

二、教学内容1. C语言基础知识回顾:数组、循环、条件判断等基本概念及其应用;2. 扫雷游戏规则介绍:游戏界面、雷区、标记、计时等;3. 扫雷游戏算法原理:递归、随机数生成、数组操作等;4. 编程实践:a. 设计游戏界面和数据结构;b. 编写扫雷逻辑代码,实现游戏的基本功能;c. 调试与优化程序,提高游戏性能;5. 团队协作与编程规范:分工合作、代码规范、注释使用等。

教学内容依据课程目标,结合教材相关章节,确保科学性和系统性。

教学大纲安排如下:第一课时:C语言基础知识回顾,介绍扫雷游戏规则;第二课时:讲解扫雷游戏算法原理,引导学生思考如何实现游戏功能;第三课时:分组讨论,设计游戏界面和数据结构;第四课时:编写扫雷逻辑代码,实现游戏基本功能;第五课时:调试与优化程序,提高游戏性能;第六课时:团队协作与编程规范,总结课程收获。

三、教学方法本课程采用以下教学方法,旨在激发学生学习兴趣,提高教学效果:1. 讲授法:教师通过生动的语言和示例,为学生讲解C语言基础知识和扫雷游戏算法原理,使学生在短时间内掌握课程重点。

c语言扫雷课程设计报告vc

c语言扫雷课程设计报告vc

C语言扫雷课程设计报告1. 引言扫雷游戏是一款经典的单人益智游戏,通过在一个由方块组成的网格中,通过点击方块并根据周围方块的状态来逐步揭示地雷的位置。

本文档将介绍一个使用C语言实现的扫雷游戏。

2. 项目背景扫雷游戏是一个经典的Windows游戏,在Windows操作系统中自带有扫雷游戏,因此开发一个C语言版本的扫雷游戏可以提高学生对C 语言的学习兴趣,同时锻炼计算机编程能力。

3. 项目目标本项目的目标是实现一个具备基本功能的C语言扫雷游戏,包括以下特点:•游戏开始时,玩家输入游戏难度(即地雷数量和地图大小),按照输入的难度生成对应的地图。

•玩家通过输入坐标的方式来翻开方块,并根据周围地雷的数量显示提示信息。

•当玩家翻开一个地雷方块时,游戏结束,显示游戏失败信息。

•如果玩家成功翻开了所有的非地雷方块,则游戏胜利,显示游戏胜利信息。

4. 技术实现本项目将使用C语言实现扫雷游戏,主要涉及以下技术:•使用C语言的基本语法和数据结构,实现游戏逻辑和操作;•使用C语言中的文件操作,实现游戏的保存和读取功能;•使用C语言中的随机数生成函数,生成随机地雷的位置;•使用C语言的图形库(如ncurses)来实现游戏界面的显示。

5. 版本控制为了方便项目的维护和追踪,本项目将使用Git进行版本控制。

代码库将托管在GitHub上,方便多人协作和版本管理。

6. 开发计划本项目的开发计划如下:•第1周:学习C语言基础知识,熟悉C语言的基本语法和数据结构;•第2周:完成C语言扫雷游戏的框架搭建,包括游戏初始化、界面设计等;•第3周:实现游戏逻辑,包括地雷生成、方块翻开、胜利条件判定等;•第4周:优化游戏功能,增加保存和读取功能,完善游戏界面等;•第5周:完成文档撰写和项目总结。

7. 预期成果通过本项目的实现,预期可以达到以下成果:•培养学生对C语言的编程能力,加深对C语言的理解;•提高学生的逻辑思维和问题解决能力;•锻炼学生的团队协作和沟通能力;•了解和应用Git版本控制工具,提高代码管理和维护能力。

用c编写扫雷课程设计

用c编写扫雷课程设计

用c 编写扫雷课程设计一、教学目标本课程旨在通过C语言编程实现扫雷游戏,让学生掌握以下知识目标:1.理解C语言的基本语法和数据类型。

2.学会使用C语言进行函数的定义和调用。

3.掌握数组的声明和使用。

4.理解指针的概念及其在内存中的作用。

5.学会使用循环和条件语句进行程序的控制。

6.能够运用C语言编写简单的程序。

7.能够独立完成扫雷游戏的逻辑设计和编码。

8.学会调试程序,解决运行中的问题。

情感态度价值观目标:1.培养学生对计算机编程的兴趣和热情。

2.培养学生解决问题的能力和团队合作精神。

3.培养学生遵守规则、勇于挑战的精神。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、函数、数组、指针、循环和条件语句等。

通过这些内容的学习,让学生能够熟练地使用C语言进行程序设计,并最终实现扫雷游戏。

具体的教学大纲如下:1.第一章:C语言概述和基本语法。

2.第二章:数据类型和变量。

3.第三章:运算符和表达式。

4.第四章:函数的定义和调用。

5.第五章:数组的声明和使用。

6.第六章:指针的概念及其应用。

7.第七章:循环语句的使用。

8.第八章:条件语句的使用。

9.第九章:扫雷游戏的逻辑设计和编程实现。

三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法。

在教学过程中,教师会讲解C语言的基本语法和概念,并通过具体的案例分析让学生理解如何运用这些知识编写程序。

同时,学生需要通过实验课的时间,动手编写代码并调试程序,从而加深对C语言的理解和运用。

四、教学资源为了保证教学的质量和效果,我们将提供以下教学资源:1.教材:《C语言程序设计》。

2.参考书:《C Primer Plus》。

3.多媒体资料:教学PPT、视频教程等。

4.实验设备:计算机、编程环境等。

通过这些教学资源的支持,学生可以更好地进行自主学习和团队合作,提高编程能力和解决问题的能力。

五、教学评估本课程的评估方式包括平时表现、作业、考试和项目设计等,以全面、客观、公正地评价学生的学习成果。

c课程设计扫雷

c课程设计扫雷

c 课程设计扫雷一、教学目标本节课的教学目标是让学生掌握扫雷游戏的算法和编程实现,培养学生的逻辑思维能力和编程技能。

具体目标如下:1.知识目标:使学生了解扫雷游戏的基本规则和算法,理解如何使用编程语言实现扫雷游戏。

2.技能目标:培养学生运用编程语言解决实际问题的能力,提高学生的逻辑思维和编程技能。

3.情感态度价值观目标:培养学生面对挑战、克服困难的信心和毅力,培养团队合作精神。

二、教学内容本节课的教学内容主要包括扫雷游戏的基本规则、算法实现和编程技巧。

教学大纲如下:1.扫雷游戏简介:介绍扫雷游戏的基本规则和目标,使学生了解扫雷游戏的魅力。

2.算法分析:讲解扫雷游戏的算法,引导学生思考如何实现扫雷游戏的自动判断和生成。

3.编程实现:教授学生如何使用编程语言实现扫雷游戏,包括界面设计、逻辑判断和算法优化等方面。

4.案例分析:分析一些经典的扫雷游戏编程案例,让学生了解不同编程语言和技巧在实际应用中的优势和局限。

三、教学方法为了提高学生的学习兴趣和主动性,本节课将采用以下教学方法:1.讲授法:讲解扫雷游戏的基本规则、算法原理和编程技巧。

2.讨论法:学生分组讨论,分享彼此的思路和心得,促进学生间的交流与合作。

3.案例分析法:分析经典扫雷游戏编程案例,让学生了解实际应用中的编程方法和技巧。

4.实验法:让学生动手编写扫雷游戏代码,培养学生的实践能力和创新精神。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:提供合适的编程教材,为学生提供基础知识支持。

2.参考书:推荐一些关于编程和算法方面的参考书籍,帮助学生拓展知识面。

3.多媒体资料:制作课件、教学视频等多媒体资料,提高学生的学习兴趣。

4.实验设备:提供计算机等实验设备,确保学生能够顺利进行编程实践。

五、教学评估本节课的教学评估将采用多种方式,以全面、客观地评价学生的学习成果。

评估方式包括:1.平时表现:观察学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和理解程度。

vc扫雷课程设计

vc扫雷课程设计

vc扫雷课程设计一、课程目标知识目标:1. 让学生掌握VC++环境下扫雷游戏的基本算法与逻辑。

2. 使学生了解并应用二维数组进行游戏地图的构建与数据存储。

3. 引导学生理解并能运用随机数生成函数来创建扫雷游戏的地雷布局。

技能目标:1. 培养学生运用VC++集成开发环境进行程序设计的能力。

2. 培养学生的问题分析能力,能够将实际游戏转化为程序逻辑。

3. 提高学生的逻辑思维能力,通过编程实现扫雷游戏的核心功能。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发其主动探索和创新的欲望。

2. 培养学生团队协作意识,通过小组讨论和合作完成游戏设计任务。

3. 引导学生正确认识计算机编程在生活中的应用,培养其运用技术解决问题的价值观。

课程性质:本课程为信息技术课程,以实践操作为主,结合理论知识,培养学生的编程技能和逻辑思维能力。

学生特点:六年级学生,具备一定的计算机操作基础,思维活跃,好奇心强,喜欢动手实践。

教学要求:结合学生特点,以任务驱动法进行教学,引导学生通过实践操作掌握VC++编程基础,培养其编程兴趣和实际操作能力。

在教学过程中,注重培养学生的逻辑思维和团队协作能力,实现课程目标的具体分解与达成。

二、教学内容1. VC++集成开发环境的使用:- 熟悉VC++集成开发环境的基本操作。

- 学习创建、编译和运行C++程序。

2. 二维数组的应用:- 学习二维数组的概念和用法。

- 应用二维数组构建扫雷游戏的地图。

3. 基本算法与逻辑:- 掌握扫雷游戏的核心算法,如地雷布局、揭示单元格、计算周边地雷数量等。

- 学习条件判断和循环结构在游戏逻辑中的应用。

4. 随机数生成函数:- 学习使用C++中的随机数生成函数进行地雷布局。

5. 游戏界面设计:- 学习设计简单的图形用户界面,实现扫雷游戏的显示效果。

6. 程序调试与优化:- 介绍程序调试的基本方法,帮助学生解决编程过程中遇到的问题。

- 学习程序优化技巧,提高扫雷游戏的运行效率。

c扫雷课程设计

c扫雷课程设计

c 扫雷课程设计一、课程目标知识目标:1. 学生能理解扫雷游戏的基本规则,掌握游戏中的数字与地雷之间的关系。

2. 学生能运用排除法、逻辑推理等方法,提高解决扫雷问题的能力。

3. 学生能了解计算机随机数的生成原理及其在扫雷游戏中的应用。

技能目标:1. 学生能运用扫雷游戏中的策略和技巧,提高解题速度和准确性。

2. 学生能通过小组合作,培养团队协作和沟通能力,共同解决复杂的扫雷问题。

3. 学生能运用信息技术手段,设计并优化扫雷游戏的相关算法。

情感态度价值观目标:1. 学生在参与扫雷游戏的过程中,培养积极思考、勇于探索的精神。

2. 学生能从扫雷游戏中体会到数学的趣味性和实用性,增强学习数学的兴趣。

3. 学生通过小组合作,培养团队精神,学会尊重和包容他人。

课程性质:本课程以趣味性、实践性和合作性为主要特点,结合数学知识和信息技术,培养学生解决问题的能力。

学生特点:五年级学生对数学有一定的了解,具备初步的逻辑推理能力,同时对游戏具有较强的兴趣。

教学要求:教师应注重引导学生将数学知识应用于实际游戏中,鼓励学生主动探索和合作学习,提高学生的解题能力和团队协作能力。

在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容1. 教学大纲:a. 了解扫雷游戏的基本规则及数字与地雷的关系。

b. 学习排除法、逻辑推理等解题技巧。

c. 探究计算机随机数的生成原理及在扫雷游戏中的应用。

d. 小组合作,设计并优化扫雷游戏相关算法。

2. 教学内容安排与进度:第一课时:扫雷游戏规则介绍及基本操作。

第二课时:数字与地雷的关系,运用排除法解决简单扫雷问题。

第三课时:逻辑推理在扫雷游戏中的应用。

第四课时:计算机随机数的生成原理及其在扫雷游戏中的应用。

第五课时:小组合作,设计并优化扫雷游戏相关算法。

3. 教材章节与内容:a. 《数学》五年级下册:第三章“可能性”,第一节“可能性的认识”。

b. 《信息技术》五年级下册:第五章“计算机编程初步”,第一节“编程的基本概念”。

c语言课程设计简单扫雷

c语言课程设计简单扫雷

c语言课程设计简单扫雷一、课程目标知识目标:1. 理解C语言中二维数组的创建和使用,掌握扫雷游戏中数组的应用。

2. 学会使用循环和条件语句实现逻辑判断,对扫雷游戏中雷区的显示与隐藏进行控制。

3. 理解模块化编程思想,掌握函数的定义与调用,实现扫雷游戏的基本功能。

技能目标:1. 能够运用C语言编写简单扫雷游戏的代码,实现游戏的基本逻辑。

2. 学会使用调试工具,对程序进行调试和优化,提高程序的稳定性和可玩性。

3. 培养良好的编程习惯,注重代码规范和注释,提高代码的可读性。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习C语言的积极性。

2. 培养学生的团队协作意识,学会在小组合作中分享观点和解决问题。

3. 通过扫雷游戏的开发,让学生认识到编程在实际应用中的价值,提高创新意识和实践能力。

课程性质:本课程为C语言编程实践课,结合游戏设计,提高学生的学习兴趣和动手能力。

学生特点:学生具备一定的C语言基础,对编程感兴趣,喜欢动手实践。

教学要求:注重理论与实践相结合,鼓励学生积极参与,培养编程思维和实际操作能力。

在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。

二、教学内容1. 二维数组的创建与使用:结合课本第二章数组的内容,介绍二维数组的定义、初始化和访问方法,以及其在扫雷游戏中的应用。

- 数组的基本概念复习- 二维数组的声明与初始化- 二维数组在扫雷游戏中的布局设计2. 循环与条件语句:复习第三章循环与分支结构,重点讲解如何利用循环和条件语句实现扫雷游戏中雷区的显示与隐藏。

- 循环结构的使用- 条件语句的使用- 结合扫雷游戏逻辑进行实例分析3. 函数的定义与调用:根据第四章函数的内容,引导学生将扫雷游戏功能模块化,掌握函数的定义、调用和参数传递。

- 函数的基本概念- 函数的定义与声明- 函数的调用和参数传递- 扫雷游戏中的函数设计实例4. 游戏逻辑实现:结合前面所学知识,设计并实现扫雷游戏的基本逻辑。

c语言扫雷课程设计报告

c语言扫雷课程设计报告

C语言扫雷课程设计报告一、引言1.1 研究背景雷区扫雷游戏是一种经典的单人益智游戏,也是C语言学习中常用的项目案例之一。

通过设计一个C语言扫雷游戏,可以帮助学生巩固所学的编程知识,并提高问题解决能力和编程思维。

1.2 研究目的本课程设计旨在通过设计一个C语言扫雷游戏,让学生深入理解C语言的各种语法和特性,培养学生的编程能力和逻辑思维能力。

1.3 研究内容本课程设计主要包括以下内容:1.C语言基础知识回顾2.扫雷游戏的规则和要求3.C语言扫雷游戏的设计思路4.C语言扫雷游戏的实现方法5.扫雷游戏的测试和使用说明二、C语言基础知识回顾2.1 数据类型在C语言中,常用的数据类型包括整型、浮点型、字符型和指针类型等。

在扫雷游戏中,我们需要使用这些数据类型来表示游戏中的方块、雷和计数等信息。

2.2 控制语句C语言中的控制语句包括条件语句和循环语句。

在扫雷游戏中,我们可以使用条件语句来处理用户的输入和判断游戏是否结束,使用循环语句来实现游戏的主要逻辑。

2.3 数组和指针数组是C语言中常用的数据结构,通过数组可以方便地表示游戏的方块和雷的分布。

指针则可以用来操作和管理这些数据结构。

三、扫雷游戏的规则和要求3.1 游戏规则1.游戏开始时,玩家面对一个NxM的方块网格2.方块网格中的某些方块上可能隐藏有雷3.玩家通过选择一个方块来进行操作4.如果选择的方块上没有雷,则显示方块周围的雷的数量5.如果选择的方块上有雷,则游戏结束3.2 游戏要求1.游戏应具有图形界面,为玩家提供友好的交互体验2.游戏应具有多种难度级别,玩家可以选择适合自己的难度3.游戏应提供计时和计分功能,以便玩家进行比较和挑战四、C语言扫雷游戏的设计思路4.1 游戏界面设计我们可以使用C语言中的图形库来实现游戏的界面,包括绘制方块网格、数字和雷的图标等。

4.2 游戏逻辑设计首先,我们需要生成一个随机的方块网格,其中包含了指定数量的雷。

然后,玩家可以通过选择方块来进行操作,我们需要根据玩家的选择来判断方块上是否有雷,如果有雷,则游戏结束,否则显示方块周围的雷的数量。

c扫雷课程设计报告

c扫雷课程设计报告

c扫雷课程设计报告一、课程目标知识目标:1. 让学生理解“扫雷”游戏的规则及背后的逻辑原理;2. 使学生掌握运用计算机程序解决问题的基本方法;3. 帮助学生了解计算机随机数生成和二维数组的应用。

技能目标:1. 培养学生运用C语言编写简单游戏的能力;2. 培养学生分析问题、设计算法、编写代码和调试程序的综合技能;3. 提高学生在编程中运用逻辑判断和循环结构处理问题的能力。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学生的创造力和探究精神;2. 培养学生合作学习、分享成果的团队意识,增强学生之间的沟通与协作能力;3. 培养学生勇于面对挑战、克服困难的精神,提高学生的自我管理和自我激励能力。

课程性质分析:本课程为C语言编程入门课程,通过设计一个具有趣味性和挑战性的“扫雷”游戏,激发学生的学习兴趣,培养学生的编程技能和逻辑思维能力。

学生特点分析:学生为初中生,具备一定的计算机操作基础,对编程有一定的好奇心,但可能缺乏耐心和毅力。

教学要求:1. 确保课程内容与课本紧密关联,注重实践操作,提高学生的动手能力;2. 教学过程中,注重引导学生主动思考,培养学生的逻辑思维和分析问题的能力;3. 创设轻松愉快的学习氛围,鼓励学生积极参与,激发学生的学习兴趣和探究欲望。

二、教学内容1. C语言基础知识回顾:变量、数据类型、运算符、表达式、输入输出函数等;2. 控制结构:顺序结构、选择结构(if-else)、循环结构(for、while);3. 二维数组的定义、初始化、使用;4. 随机数的生成与应用;5. “扫雷”游戏规则介绍及算法分析;6. 编程实现“扫雷”游戏的核心功能,包括地图初始化、雷区设置、用户交互、雷区排查等;7. 程序调试与优化。

教学大纲安排:第一课时:C语言基础知识回顾,介绍课程目标及“扫雷”游戏;第二课时:讲解二维数组的使用,分析“扫雷”游戏规则及算法;第三课时:教授随机数生成方法,指导学生编写地图初始化和雷区设置代码;第四课时:指导学生编写用户交互和雷区排查功能,进行程序调试;第五课时:优化程序,提升游戏体验,总结课程知识点。

扫雷c课程设计

扫雷c课程设计

扫雷c 课程设计一、课程目标知识目标:1. 学生能理解扫雷游戏的基本规则,掌握游戏中的数字与地雷分布的关系。

2. 学生能运用基本的逻辑推理和数学思维,进行有效的扫雷策略分析。

3. 学生了解计算机编程中循环、条件判断等基本概念,并能将这些概念应用于扫雷游戏的编程实现。

技能目标:1. 学生通过分析扫雷游戏,培养解决问题的策略思维和逻辑思维能力。

2. 学生掌握简单的计算机编程技巧,能够利用所学知识设计和编写简单的扫雷游戏程序。

3. 学生通过团队协作,提高沟通和协作能力,共同完成扫雷游戏的编程任务。

情感态度价值观目标:1. 学生在探索扫雷游戏的过程中,培养对计算机编程的兴趣,激发创新精神。

2. 学生在团队协作中,学会尊重他人意见,培养合作精神和集体荣誉感。

3. 学生通过解决实际问题,体会数学和计算机科学的实际应用,增强学以致用的意识。

课程性质:本课程为信息技术与数学相结合的跨学科课程,旨在通过扫雷游戏这一载体,提高学生的逻辑思维和编程能力。

学生特点:五年级学生已具备一定的数学基础和逻辑思维能力,对计算机编程有浓厚兴趣,喜欢探索和挑战。

教学要求:教师需关注学生的个体差异,提供针对性的指导,鼓励学生积极参与,充分调动学生的主观能动性。

在教学过程中,注重理论与实践相结合,确保学生能够学以致用。

通过课程目标的分解,使学生在知识、技能和情感态度价值观等方面取得全面发展。

二、教学内容1. 扫雷游戏基本规则与策略分析:- 游戏规则介绍:介绍扫雷游戏的起源、基本规则及游戏目标。

- 策略分析:探讨数字与地雷分布的关系,引导学生运用逻辑推理和数学思维解决实际问题。

2. 计算机编程基本概念:- 循环:讲解循环的概念及在扫雷游戏编程中的应用。

- 条件判断:介绍条件判断的作用,以及在扫雷游戏中如何实现。

3. 编程实现扫雷游戏:- 编程环境介绍:选择合适的编程环境,如Scratch等,并简要介绍使用方法。

- 编程步骤:详细讲解编写扫雷游戏程序的步骤,包括界面设计、功能实现等。

课程设计报告扫雷

课程设计报告扫雷

课程设计报告扫雷一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握扫雷的基本原理、方法和技巧;技能目标要求学生能够运用扫雷知识解决实际问题,如排除生活中的困难和危险;情感态度价值观目标要求学生培养勇敢、果断、细致、严谨的品质,以及对生命的尊重和自我保护意识。

通过分析课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。

课程目标旨在帮助学生建立扎实的扫雷知识基础,提高其应用能力和综合素质,使其在面临危险时能够自我保护和正确处理。

二、教学内容本课程的教学内容主要包括扫雷的基本原理、方法和技巧。

详细的教学大纲如下:1.第一章:扫雷概述1.1 扫雷的定义和发展1.2 扫雷的任务和作用1.3 扫雷的分类和特点2.第二章:扫雷设备2.1 扫雷器材的种类和性能2.2 扫雷器材的使用和维护2.3 扫雷器材的检测和故障排除3.第三章:扫雷方法3.1 人工扫雷方法3.2 机械扫雷方法3.3 电子扫雷方法4.第四章:扫雷实战4.1 野外扫雷4.2 城市扫雷4.3 特殊环境扫雷5.第五章:扫雷安全5.1 扫雷安全知识5.2 扫雷安全事故案例及分析5.3 扫雷安全防护措施三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性。

具体方法如下:1.讲授法:教师讲解扫雷的基本原理、方法和技巧,引导学生理解扫雷知识。

2.讨论法:学生分组讨论扫雷问题,培养学生的思考和分析能力。

3.案例分析法:分析扫雷安全事故案例,让学生学会从实际问题中吸取教训。

4.实验法:学生动手操作扫雷器材,提高其实际操作能力。

四、教学资源为支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选用以下教学资源:1.教材:选用权威、实用的扫雷教材,为学生提供系统、全面的扫雷知识。

2.参考书:提供相关领域的参考书籍,帮助学生拓展知识面。

3.多媒体资料:制作课件、视频等多媒体资料,生动展示扫雷知识和实战案例。

扫雷小游戏实验报告(3篇)

扫雷小游戏实验报告(3篇)

第1篇一、实验目的本次实验旨在通过使用C语言编写扫雷小游戏,巩固和加深对C语言编程基础知识的理解,提高编程实践能力。

通过实验,使学生能够熟练运用数组、函数等编程技巧,实现一个具有良好交互性和趣味性的小游戏。

二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C语言三、实验内容1. 游戏设计扫雷小游戏是一款经典的逻辑推理游戏,玩家需要在限定时间内找出棋盘上的所有非雷区域。

游戏规则如下:(1)棋盘大小:9x9(2)地雷数量:10个(3)玩家通过输入坐标排查雷区,若排查到非雷区则显示周围雷的数量,若排查到雷则游戏结束。

(4)玩家的目标是找出所有非雷区,成功排雷后游戏结束。

2. 数据结构设计为了存储雷的位置信息和排查信息,我们需要使用以下数据结构:(1)二维数组:用于存储雷的位置信息,大小为9x9,其中值为-1表示雷,值为0表示非雷。

(2)二维字符数组:用于存储排查结果,大小为9x9,其中字符'0'表示非雷,字符''表示雷。

3. 函数设计(1)初始化函数:用于初始化棋盘、地雷位置和排查结果。

(2)打印棋盘函数:用于显示当前棋盘状态。

(3)布置雷函数:用于随机布置地雷。

(4)排查函数:用于判断玩家输入的坐标是否为雷,并更新排查结果。

(5)游戏主逻辑函数:用于实现游戏的主要逻辑,包括用户交互、游戏结束判断等。

4. 编码实现以下是部分代码实现:```cinclude <stdio.h>include <stdlib.h>include <time.h>define ROW 9define COL 9define MINE_NUM 10// 函数声明void init(char mine[ROW][COL], char show[ROW][COL]);void print(char show[ROW][COL]);void setMines(char mine[ROW][COL]);void check(char mine[ROW][COL], char show[ROW][COL], int x, int y);int isGameOver(char show[ROW][COL]);int main() {char mine[ROW][COL], show[ROW][COL];int x, y;int gameOver = 0;init(mine, show);setMines(mine);while (!gameOver) {print(show);printf("请输入坐标(x y):");scanf("%d %d", &x, &y);if (x < 0 || x >= ROW || y < 0 || y >= COL) { printf("坐标输入错误,请重新输入。

c语言扫雷课程设计

c语言扫雷课程设计

c语言扫雷课程设计一、课程目标知识目标:1. 理解C语言中数组的使用,掌握二维数组的创建和操作。

2. 学会使用循环和条件语句实现逻辑判断和程序流程控制。

3. 掌握C语言中函数的定义和调用,理解模块化编程的重要性。

技能目标:1. 能够运用所学知识编写一个简单的扫雷游戏,实现游戏的基本功能,如地雷布置、挖雷、标记等。

2. 提高编程实践能力,学会调试和优化代码,解决实际问题。

情感态度价值观目标:1. 培养学生主动探究、积极思考的学习态度,增强解决问题的自信心。

2. 通过团队合作完成项目,培养学生的团队协作能力和沟通能力。

3. 激发学生对计算机编程的兴趣,培养创新精神和动手实践能力。

课程性质:本课程为实践性较强的学科课程,注重培养学生的编程能力和实际操作能力。

学生特点:学生具备一定的C语言基础,对编程有一定的兴趣和热情,喜欢挑战性任务。

教学要求:教师应关注学生的个体差异,提供适当的指导,引导学生主动探究和解决问题。

在教学过程中,注重理论与实践相结合,鼓励学生动手实践,培养学生的编程思维和创新能力。

通过课程学习,使学生能够将所学知识应用于实际项目中,达到学以致用的目的。

二、教学内容1. 二维数组的基本概念和使用方法,以教材中数组章节为基础,深入讲解二维数组在扫雷游戏中的应用。

- 二维数组的定义和初始化- 二维数组的访问和操作2. 循环和条件语句在扫雷游戏中的运用,结合教材中流程控制章节,讲解如何实现游戏逻辑。

- for循环和while循环的应用- if-else和switch语句的使用3. 函数的定义与调用,参照教材中函数章节,介绍模块化编程在扫雷游戏中的重要性。

- 函数的定义和声明- 函数参数和返回值4. 扫雷游戏功能实现,结合教材内容,制定以下教学大纲:- 游戏初始化:布置地雷、初始化界面- 挖雷功能:判断挖到地雷、计算周围地雷数- 标记功能:标记地雷、清除标记- 游戏胜负判断:判断玩家胜利或失败5. 编程实践与优化,鼓励学生根据所学知识,动手编写扫雷游戏,并在实践中不断优化代码。

扫雷c语言程序课程设计

扫雷c语言程序课程设计

扫雷c语言程序课程设计一、教学目标本节课的教学目标是让学生掌握C语言编程的基本知识,学会使用scanf和printf函数进行输入输出操作,理解数组的定义和初始化,以及掌握基本的排序算法。

通过本节课的学习,学生应能够独立编写简单的C语言程序,培养编程思维和解决问题的能力。

二、教学内容1.C语言基础知识:介绍C语言的基本语法、数据类型、变量、运算符等。

2.输入输出操作:讲解scanf和printf函数的使用,结合实际案例进行演示。

3.数组:讲解数组的定义、初始化、访问和排序算法。

4.编程实践:引导学生动手编写程序,巩固所学知识。

三、教学方法1.讲授法:讲解C语言的基本语法、数据类型、变量、运算符等知识。

2.案例分析法:通过实际案例讲解scanf和printf函数的使用。

3.实验法:让学生动手编写程序,实践数组的定义、初始化、访问和排序算法。

4.讨论法:学生进行小组讨论,分享编程心得和解决问题的方式。

四、教学资源1.教材:《C语言程序设计》2.参考书:《C Primer Plus》3.多媒体资料:PPT课件、编程实例视频4.实验设备:计算机、编程环境(如Code::Blocks)五、教学评估本节课的评估方式包括以下几个方面:1.平时表现:评估学生在课堂上的参与程度、提问回答情况等,占总分的30%。

2.作业:布置课后编程作业,评估学生的编程能力和掌握程度,占总分的40%。

3.考试:期末进行C语言程序设计考试,评估学生对本节课知识的总体掌握情况,占总分的30%。

评估方式应客观、公正,能够全面反映学生的学习成果。

教师应及时给予反馈,帮助学生提高。

六、教学安排本节课的教学安排如下:1.课时:共计16课时,每课时45分钟。

2.教学时间:每周二、四下午第三节课。

3.教学地点:计算机实验室。

教学安排应合理、紧凑,确保在有限的时间内完成教学任务。

同时,教学安排还应考虑学生的实际情况和需要,如学生的作息时间、兴趣爱好等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安文理学院信息工程学院课程设计报告设计名称:数据结构课程设计设计题目:实现一个n*m的扫雷游戏学生学号:1402130417专业班级:软件13级4班学生姓名:李美静学生成绩:指导教师(职称):课题工作时间:2015.6.22 至2015.7.3说明:1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每个学生。

2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。

3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。

答辩由指导教师实施。

4、报告正文字数一般应不少于3000字,也可由指导教师根据本门综合设计的情况另行规定。

5、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按不及格处理。

信息工程学院课程设计任务书指导教师:院长:日期:2015年6月22日信息工程学院课程设计进度安排表学生姓名:学号:专业:班级:指导教师签名:2014年6月22日成绩评定表学生姓名:学号:专业:班级:摘要摘要:摘要是论文内容的简要陈述,是一篇具有独立性和完整性的短文,150~200字左右。

摘要的内容应包括目的、依据、方法、概要工作及其结果与结论,摘要中尽量不要出现“本文、我们、作者”之类的词汇,不宜使用公式、图表,不标注引用文献编号。

避免将摘要写成目录式的内容介绍。

(摘要正文为小4号宋体)关键词:关键词用小4号宋体,每个关键词之间用“;”,结尾没有标点。

关键词是供检索用的主题词条,应采用能覆盖文章主要内容的通用技术词条。

关键词一般列3~5个。

目录1.概述 (8)1.1.研究的背景及意义 (8)1.2.设计的任务和需要的知识点 (8)1.3.具体完成的设计内容 (9)2.需求分析 (10)2.1.功能需求 (10)2.2.操作方法 (10)3.总体设计 (11)3.1.模块设计 (11)3.2.总体数据结构设计 (11)4.详细设计 (12)4.1.主控模块Main函数 (12)4.2.游戏具体过程流程图 (13)5.程序的调试与测试 (14)5.1.动画与音乐的同步播放 (14)5.2.扫雷的运行 (14)5.3.终止程序 (14)6.总结 (15)7.结束语 (16)8.程序清单 (17)9.参考文献 (39)1.概述本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用WIN-TC为主要开发工具,对扫雷游戏进行了需求分析,总体设计,详细设计,最终完成了系统的实现与测试。

1.1.研究的背景及意义扫雷,是一种集脑力和速度与一体的一种游戏!到能够把扫雷做到能够从简,我们选择这个软件进行开发,虽然结果不尽如人意,但开发此软件能够使我们真正认识到程序的设计绝不仅仅是一个人的情,我们获得不仅仅是一种经历,更是一种对同伴的信任,成功与否是关系到团体,而不是个人,此款软件追求的是智慧的开发和脑力的提升,是一款适合老少都适合玩的游戏!能够广大的占有市场,同时通过设计这款游戏能够深入C语言的开发,和对C语言设计的广泛兴趣,对今后的学习有着指导作用。

同时对C语言的地位有一定的了解。

C语言是国际上广泛流行的,很有发展前途的计算机高级语言。

它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。

C语言是一种面向过程的高级语言,对于计算机专业和相关学科的学生来说,“课程设计基础”是一门非常重要的专业基础课程,对其学习的好坏直接关系到后续课程的学习效果。

1.2.设计的任务和需要的知识点*课程设计主要完成的任务:(1)通过编写扫雷游戏程序,掌握结构化,模块化程序设计的思想,培养解决实际问题的能力。

(2)设计好数组元素与地雷的关系。

(3)随机1 ,2 ,3和地雷。

(4)有同步播放的动画,声音效果*需要掌握和运用的知识点:(1)数组的应用(2)按键处理(3)结构体的应用(4)图形,音乐和动画的有关知识。

(5)随机函数的使用。

(6)文件的基本操作。

(7)结构化,模块化的设计方法。

1.3.具体完成的设计内容本次课程设计中,我们主要完成的任务:命令,宏定函数声明,主控模块,动画音乐播放模块,画出游戏开始界面模块,具体游戏过程模块,游戏结束处理模块。

2.需求分析扫雷一个简单的可以开发智力让人放松的游戏,让游戏者的身心得到娱乐,从而更好的投入到学习和工作中。

现代人面临较大的压力,而这样一款游戏能让我们随时随地的享受,起作用是不可估量的!扫雷就像人生之路只,有人真的走好每一步,否则一着不慎满盘皆输。

只有这样人们才能实现自己的宏伟蓝图!虽然现在市面上存在各种各样的游戏版本,可是像扫雷这类的小游戏其市场还是相当大的。

因为它能够吸引人更深入,爱不释手,挑战性极强。

它的优势在于它的简单易行,无论是手机,还是小游戏机,都能很快顺利的运行。

对于在外忙碌的人不可能花费大量的时间在娱乐上,大型游戏是行不通的,这样的小游戏刚好迎合了他们的需求。

2.1.功能需求程序运行后,显示动画,进入游戏界面后,选择难度,易,中,难,三个等级,开始游戏。

如果不想玩这一局,单击开局开始新游戏。

如果想退出,直接单击游戏当中的下拉菜单“退出”来结束游戏。

2.2.操作方法(1)进入游戏单击游戏当中的开局。

(2)游戏界面游戏界面的左面,难度,开始,退出,中间是开局(3)游戏操作在游戏中,游戏者可以用鼠标单击按钮。

(4)游戏结束显示分数。

3.总体设计3.1.模块设计3.2.总体数据结构设计设计思路:。

如何使地雷和数字能够随机出现并且符合扫雷的游戏规则是难点。

针对有如下的随机程序来解决这个问题。

for(;i<count;){/*随机埋雷*/y=rand()%my;x=rand()%mx;if(map[y][x]==0){map[y][x]++;i++;4.详细设计4.1.主控模块Main函数4.2.游戏具体过程流程图5.程序的调试与测试5.1.动画与音乐的同步播放预期效果:①片头在显示动画的同时播放音乐②按任意键后进入游戏主界面③动画音乐停实际运行效果:满足①②;③不满足,进入游戏主界面后音乐继续错误分析:未使用setvect(0x1c,handler);nosound();语句修改:在动画播放完后加一条setvect(0x1c,handler);nosound();语句,问题得到解决。

5.2.扫雷的运行扫雷的运行是一种比较简单的一种方式,当你不幸没过时,游戏界面出现you are dead当你过关时,游戏界面出现了,you are good5.3.终止程序程序的终止有两种方法,第一种方法是直接关闭窗口,第二种方法是直接是游戏的下拉菜单中单击退出。

6.总结通过两周的课程设计,在我们开发小组五人的共同努力下,终于与完成了五子棋游戏程序的开发任务。

该游戏程序实现了用鼠标控制棋子,难度等级,再来一局,结束时处理等功能。

该游戏程序具有良好的界面,操作方便,控制准确,容错能力强等功能。

我们设计的五子棋游戏还存在一些缺陷予以改进:①在进行游戏时无法播放音乐。

应在主函数中再次添加音乐函数。

②系统智能化水平偏低,游戏偏易。

增加控制电脑落子程序复杂程度。

7.结束语通过扫雷的编程练习思考数据结构的使用,比如定义雷的坐标来控制它出现的位置,用draw()函数来画雷,,用drawmouse()函数画鼠标,使我们更加熟练的应用各种函数,。

对于我们初学者来说,学习编写扫雷的游戏,对我们掌握了解C语言的知识有很大的帮助。

我们通过编写实践,还能拓展思路,让我们去寻找需要拿下函数的调用,怎样提高程序的质量等。

在编程时我们碰到了很多的困难,这就需要我们多与别人交流。

三人行必有吾师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。

养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致,这些都是提高我们编程的注意点。

现在自己也能写游戏了,却没想到的是写游戏并没有想象的那么轻松。

在这个程序中我们用了接过化程序设计的思想,一些处理方法基本是编程理论,用到了图形、声音、文件等知识。

我们查阅了大量的硬件知识资料,还学了一点汇编,再加上对一些程序细节及一些音乐数据的产生,也让我们忙了好一阵。

当一切都完成以后,除了这个游戏,我们也学到了许多别的东西。

首先,我们学会了合作。

要以别人的眼光看看问题,也许这样得到的会比各自得到的要多。

合作,必然会产生分歧;学会去解决分歧,留下的是更多的友谊。

其次,我们学会了分工。

分工是为了更好的合作,分工才能提高合作的效率。

最后,我们学会了奋斗,我们相信,通过北华大学四年的学习,我们一定能写出更精彩的程序,将来会描绘出更精彩的人生。

在这里,我们要感谢指导课程设计的黄绍义老师,给予我们悉心的指导。

老师多次询问编程进程,并为我们指点迷津,精心点拨,这让我们收益无穷。

在设计中,我们确实感到了团队合作的力量,这使我们顺利地完成了课程设计任务。

8.程序清单#include<stdio.h>#include<graphics.h>#include<dos.h>#include<stdlib.h>int m_poly[8]={0,0,5,7,0,9,0,0};/*鼠标*/int m_now_poly[8]={0,0,5,7,0,9,0,0};int re[10][6];/*储存鼠标经过前的像素颜色*/int m_s[93-40+1][52-2+1];int n1=-1,n2=-1;int hard=1;/*0:易 1:中 2: 难*/int count=40;/*地雷数量*/int mx=16,my=16;/*地图宽高*/char map[16][30];/*0位存放是否有地雷,1有0无,1位存放是否打开,1打开0没有打开,2位表示是否插旗,1有0无*/int ha_x=320-120,ha_y=240-100;/*游戏栏*/int dead=0;/*1:死亡 2:生*/int score=0;void menu_window();char sao16S[]={/* 以下是 '扫' 的 16点阵宋体字模,32 byte */0x10,0x00,0x10,0x00,0x11,0xFC,0x10,0x04,0xFE,0x04,0x10,0x04,0x14,0x04,0x18,0xFC,0x30,0x04,0xD0,0x04,0x10,0x04,0x10,0x04,0x11,0xFC,0x50,0x00,0x20,0x00,0x00,0x00,};char lei16S[]={/* 以下是 '雷' 的 16点阵宋体字模,32 byte */0x1F,0xF8,0x01,0x00,0x7F,0xFE,0x41,0x04,0x1D,0x70,0x01,0x00,0x1D,0x70,0x01,0x00, 0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8, 0x21,0x08,0x21,0x08,0x3F,0xF8,0x20,0x08, };char you12S[]={/* 以下是 '游' 的 12点阵宋体字模,24 byte */ 0x91,0x00,0x49,0xE0,0x3E,0x00,0x93,0xE0,0x5C,0x40,0x54,0x80,0x55,0xE0,0x94,0x80,0x94,0x80,0xA4,0x80,0x4D,0x80,0x00,0x00, };char xi12S[]={/* 以下是 '戏' 的 12点阵宋体字模,24 byte */ 0x02,0x80,0xF2,0x40,0x12,0x40,0x13,0xE0,0x9E,0x00,0x52,0x40,0x22,0x80,0x31,0x00,0x49,0x20,0x42,0xA0,0x8C,0x60,0x00,0x00, };char kai12S[]={/* 以下是 '开' 的 12点阵宋体字模,24 byte */ 0x00,0x40,0x7F,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x21,0x00,0xC1,0x00,0x00,0x00, };char ju12S[]={/* 以下是 '局' 的 12点阵宋体字模,24 byte */ 0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xE0,0x20,0x20,0x2F,0x20,0x29,0x20,0x4F,0x20,0x49,0x20,0x80,0xC0,0x00,0x00, };char tui12S[]={/* 以下是 '退' 的 12点阵宋体字模,24 byte */ 0x8F,0xC0,0x48,0x40,0x4F,0xC0,0x08,0x40,0xCF,0xC0,0x48,0x00,0x4B,0x40,0x48,0x80,0x4E,0x40,0xB0,0x00,0x8F,0xE0,0x00,0x00,};char chu12S[]={/* 以下是 '出' 的 12点阵宋体字模,24 byte */ 0x04,0x00,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x04,0x00,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x00,0x00, };char nan12S[]={/* 以下是 '难' 的 12点阵宋体字模,24 byte */ 0x02,0x80,0x02,0x80,0xF7,0xE0,0x14,0x80,0x9F,0xE0,0x54,0x80,0x24,0x80,0x27,0xE0,0x54,0x80,0x94,0x80,0x07,0xE0,0x00,0x00, };char du12S[]={/* 以下是 '度' 的 12点阵宋体字模,24 byte */ 0x02,0x00,0x7F,0xE0,0x48,0x80,0x7F,0xE0,0x48,0x80,0x4F,0x80,0x40,0x00,0x5F,0x80,0x45,0x00,0x87,0x00,0xB8,0xE0,0x00,0x00, };char yi12S[]={/* 以下是 '易' 的 12点阵宋体字模,24 byte */ 0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x10,0x00,0x3F,0xC0,0xC9,0x40,0x12,0x40,0x64,0x40,0x19,0x80,0x00,0x00, };char zhong12S[]={/* 以下是 '中' 的 12点阵宋体字模,24 byte */ 0x04,0x00,0x04,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00, };char dash16S[]={/* 以下是 '-' 的 16点阵宋体字模,32 byte */0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };char zhi16S[]={/* 以下是 '制' 的 16点阵宋体字模,32 byte */ 0x24,0x04,0x34,0x04,0x24,0x24,0x3F,0xA4,0x44,0x24,0x04,0x24,0x7F,0xA4,0x04,0x24,0x3F,0xA4,0x24,0xA4,0x24,0xA4,0x24,0xA4,0x24,0x84,0x27,0x84,0x05,0x14,0x04,0x08, };char zuo16S[]={/* 以下是 '作' 的 16点阵宋体字模,32 byte */ 0x08,0x80,0x0C,0x80,0x09,0x00,0x13,0xFE,0x12,0x80,0x34,0x88,0x50,0xFC,0x90,0x80,0x10,0x80,0x10,0x84,0x10,0xFE,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80, };char cheng16S[]={/* 以下是 '成' 的 16点阵宋体字模,32 byte */ 0x00,0xA0,0x00,0x90,0x00,0x80,0x3F,0xFE,0x20,0x80,0x20,0x80,0x3E,0x88,0x22,0x8C,0x22,0x48,0x22,0x50,0x22,0x20,0x2A,0x60,0x44,0x92,0x41,0x0A,0x86,0x06,0x00,0x02, };char yuan16S[]={/* 以下是 '员' 的 16点阵宋体字模,32 byte */ 0x0F,0xF0,0x08,0x10,0x08,0x10,0x0F,0xF0,0x00,0x00,0x1F,0xF8,0x10,0x08,0x11,0x08,0x11,0x08,0x11,0x08,0x11,0x08,0x12,0x88,0x02,0x40,0x04,0x30,0x08,0x18,0x30,0x10, };char mao16S[]={/* 以下是 ':' 的 16点阵宋体字模,32 byte */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00, };char xu16S[]={/* 以下是 '徐' 的 16点阵宋体字模,32 byte */ 0x10,0x40,0x18,0x40,0x20,0xA0,0x41,0x18,0x92,0x0E,0x1D,0xF4,0x30,0x40,0x60,0x40,0xA7,0xFC,0x20,0x40,0x22,0x50,0x23,0x4C,0x24,0x46,0x28,0x44,0x21,0x40,0x20,0x80, };char qun16S[]={/* 以下是 '群' 的 16点阵宋体字模,32 byte */ 0x00,0x84,0x7E,0x46,0x12,0x28,0xFE,0xFE,0x12,0x10,0x12,0x10,0x7E,0x7C,0x10,0x10,0x20,0x10,0x3E,0x10,0x62,0xFE,0xA2,0x10,0x22,0x10,0x3E,0x10,0x22,0x10,0x00,0x10, };char song16S[]={/* 以下是 '松' 的 16点阵宋体字模,32 byte */ 0x10,0x10,0x10,0x90,0x10,0xD0,0xFE,0x90,0x10,0x88,0x11,0x08,0x39,0x04,0x36,0x46,0x54,0x64,0x50,0xC0,0x90,0x80,0x11,0x08,0x12,0x04,0x17,0xFE,0x10,0x04,0x10,0x00,0x00,0x08,0x00,0x08,0x3F,0xF8,0x00,0x08, };char chun16S[]={/* 以下是 '春' 的 16点阵宋体字模,32 byte */ 0x01,0x00,0x01,0x00,0x3F,0xFC,0x01,0x00,0x1F,0xF8,0x02,0x00,0xFF,0xFE,0x04,0x20,0x08,0x18,0x3F,0xEE,0xC8,0x24,0x0F,0xE0,0x08,0x20,0x08,0x20,0x0F,0xE0,0x00,0x00, };char hui16S[]={/* 以下是 '辉' 的 16点阵宋体字模,32 byte */0x10,0x00,0x13,0xFE,0x96,0x44,0x58,0x40,0x51,0xFC,0xFE,0x40,0x28,0xA0,0x28,0xA0,0x29,0xFC,0x28,0x20,0x28,0x20,0x2B,0xFE,0x4C,0x20,0x48,0x20,0x80,0x20,0x00,0x20,};char yang16S[]={/* 以下是 '杨' 的 16点阵宋体字模,32 byte */0x10,0x00,0x13,0xF8,0x10,0x10,0xFE,0x20,0x10,0x40,0x10,0x80,0x39,0xFC,0x34,0x54,0x54,0x94,0x50,0xA4,0x91,0x24,0x12,0x44,0x10,0x84,0x11,0x04,0x10,0x14,0x10,0x08,};void drawmat(char *mat,int matsize,int x,int y,int color){/*点阵字显示函数*/ int i,j,k,n;n=(matsize-1)/8+1;/*有几个字符位*/for(j=0;j<matsize;j++)/*行*/for(i=0;i<n;i++)for(k=0;k<8;k++)if(mat[j*n+i]&0x80>>k)putpixel(x+i*8+k,y+j,color);}void game_over(){int x,y;setcolor(BLACK);for(y=0;y<my;y++)for(x=0;x<mx;x++)if(map[y][x]&1){setfillstyle(SOLID_FILL,LIGHTGRAY);bar(ha_x+2+x*10,ha_y+2+y*10,ha_x+2+x*10+8,ha_y+2+y*10+8);circle(ha_x+2+x*10+4,ha_y+2+y*10+4,3);/*地雷图*/setfillstyle(SOLID_FILL,BLACK);floodfill(ha_x+2+x*10+4,ha_y+2+y*10+4,BLACK);/*黑色填充*/ }}void win(){int i,j;intfr[]={659,659,659,659,659,659,784,523,587,659,698,698,698,659,659,659,659,587,587, 523,587,784,659,659,659,659,659,659,659,784,523,587,659,698,698,698,698,659,659,65 9,659,784,784,698,587,523,784,330,294,262,247,196,330,294,262,196,196,330,294,220, 220.349,330,294,392,392,392,392,440,392,349,294,262};int tim[]={4,4,2,4,2,4,2,4,4,4,2,8,2,2,2,4,2,4,2,4,4,2,4,2,4,4,2,4,2,4};int gdriver=DETECT,gmode;registerbgidriver(EGAVGA_driver);setviewport(0,0,639,479,0);settextstyle(0,0,3);setcolor(WHITE);outtextxy(150,320,"good!!~~~~");/****************good!!~~~~****************/ setcolor(GREEN);outtextxy(149,320,"good!!~~~~");/****************good!!~~~~****************/ setbkcolor(BLACK);setcolor(YELLOW);ellipse(200,400,0,360,30,30);setfillstyle(SOLID_FILL,YELLOW);floodfill(200,400,YELLOW);setcolor(BLACK);line(177,395,185,385);setcolor(BLACK);line(185,385,193,395);setcolor(BLACK);line(207,395,215,385);setcolor(BLACK);line(215,385,223,395);setcolor(BLACK);arc(200,415,0,360,7);setcolor(YELLOW);arc(200,415,0,180,7);getch();{for(i=0;i<=40;i++){sound(fr[i]);delay(tim[i]*12000000000);nosound();}}}void box_open(int x,int y,int control){/*方格被打开,control用于判断是否是鼠标点击打开,1表示鼠标点击,0表示自动*/int sum=0;char num[2];if(map[y][x]>>2&1 && control)return;/*标记过,点击无效*/if(map[y][x]>>1&1)return;/*检查是否被打开过*/map[y][x]+=1<<1;setfillstyle(SOLID_FILL,LIGHTGRAY);bar(ha_x+2+x*10,ha_y+2+y*10,ha_x+2+x*10+8,ha_y+2+y*10+8);if(map[y][x]&1==1){/*踩到地雷,游戏失败*/game_over();dead=1;/*死亡*/{setviewport(0,0,639,479,0);settextstyle(0,0,3);setcolor(WHITE);outtextxy(100,320,"Sorry,you die!~~~");/**good!!~~~~****************/ setcolor(GREEN);outtextxy(99,320,"Sorry,youdie!~~~");/****************good!!~~~~****************/}{ int gdriver=DETECT,gmode;registerbgidriver(EGAVGA_driver);setbkcolor(BLACK);setcolor(YELLOW);ellipse(200,400,0,360,30,30);setfillstyle(SOLID_FILL,YELLOW);floodfill(200,400,YELLOW);setcolor(BLACK);line(177,395,185,385);setcolor(BLACK);line(185,385,193,395);setcolor(BLACK);line(207,395,215,385);setcolor(BLACK);line(215,385,223,395);setcolor(BLACK);arc(200,415,0,180,7);getch();{int i,j;int a[40]={262,294,330,262,262.294,330,262,0,330,349,392,0,330,349,392,0,392,440,392,349,330,262,0,392,440,392,440,392,349,330,262,0,294,196,262,0,294,196,262};int b[45]={250,250,250,250,250,250,250,250,100,250,250,250,500, 125,250,250,500,100,125,125,125,125,250,250,0,125,125,125,125,250,250,100,250,250,500,100,250,250,500};for(i=0;i<=40;i++){sound(a[i]);delay(b[i]*1000);nosound();}}}return; }score++;/*加分*/if(score==mx*my-count){win();dead=1;return;}if(x!=0)sum+=map[y][x-1]&1;if(x!=mx-1)sum+=map[y][x+1]&1;if(y!=0)sum+=map[y-1][x]&1;if(y!=my-1)sum+=map[y+1][x]&1;if(x!=0 && y!=0)sum+=map[y-1][x-1]&1;if(x!=mx-1 && y!=0)sum+=map[y-1][x+1]&1;if(x!=mx-1 && y!=my-1)sum+=map[y+1][x+1]&1;if(x!=0 && y!=my-1)sum+=map[y+1][x-1]&1;settextstyle(0,0,1);if(sum!=0){sprintf(num,"%d",sum);setcolor(sum%6);/*确定颜色*/outtextxy(ha_x+2+x*10+1,ha_y+2+y*10+1,num);/*显示周围雷数*/}else{if(x!=0 && !map[y][x-1]&1)box_open(x-1,y,0);/*0表示自动打开*/ if(x!=mx-1 && !map[y][x+1]&1)box_open(x+1,y,0);if(y!=0 && !map[y-1][x]&1)box_open(x,y-1,0);if(y!=my-1 && !map[y+1][x]&1)box_open(x,y+1,0);if(x!=0 && y!=0 && !map[y-1][x-1]&1)box_open(x-1,y-1,0);if(x!=mx-1 && y!=0 && !map[y-1][x+1]&1)box_open(x+1,y-1,0);if(x!=mx-1 && y!=my-1 && !map[y+1][x+1])box_open(x+1,y+1,0); if(x!=0 && y!=my-1 && !map[y+1][x-1])box_open(x-1,y+1,0);}}void box_mark(int x,int y){/*给小方块插旗标记*/int nx=ha_x+2+x*10,ny=ha_y+2+y*10;if(map[y][x]>>1&1)return;/*已经打开*/if(map[y][x]>>2&1)map[y][x]-=1<<2;/*有旗拔旗*/else map[y][x]+=1<<2;/*插旗*/setfillstyle(SOLID_FILL,LIGHTGRAY);setcolor(WHITE);line(ha_x+2+x*10,ha_y+2+y*10,ha_x+2+x*10+8,ha_y+2+y*10);/*一横,使之有立体感*/line(ha_x+2+x*10,ha_y+2+y*10+1,ha_x+2+x*10,ha_y+2+y*10+8);/*一竖*/bar(ha_x+2+x*10+1,ha_y+2+y*10+1,ha_x+2+x*10+8,ha_y+2+y*10+8);if(map[y][x]>>2&1){setcolor(RED); /*绘制小旗帜*/line(nx+3,ny+2,nx+7,ny+4);line(nx+3,ny+4,nx+7,ny+4);setcolor(BLACK);line(nx+3,ny+2,nx+3,ny+7);line(nx+2,ny+7,nx+4,ny+7);}}void map_window(){/*地图绘制*/int x,y;setfillstyle(LINE_FILL,BLUE);/*清除屏幕*/bar(1,40,638,478);/*清除屏幕*/setcolor(WHITE);rectangle(ha_x,ha_y,ha_x+1+mx*10+1,ha_y+1+my*10+1);setfillstyle(SOLID_FILL,DARKGRAY);bar(ha_x+1,ha_y+1,ha_x+1+mx*10,ha_y+1+my*10);/*扫雷部分背景*/rectangle(ha_x,ha_y-30,ha_x+1+mx*10+1,ha_y);/*扫雷上部分*/setfillstyle(SOLID_FILL,LIGHTGRAY);bar(ha_x+1,ha_y-29,ha_x+1+mx*10,ha_y-1);/*扫雷上部分*/setfillstyle(SOLID_FILL,LIGHTGRAY);/*绘制开局框--*/setcolor(WHITE);line((ha_x+ha_x+2+mx*10)/2-16,(ha_y+ha_y-30)/2-9,(ha_x+ha_x+2+mx*10)/2-16,(ha_y+ha _y-30)/2+8);/*竖*/line((ha_x+ha_x+2+mx*10)/2-15,(ha_y+ha_y-30)/2-9,(ha_x+ha_x+2+mx*10)/2+15,(ha_y+ha _y-30)/2-9);/*横*/setcolor(DARKGRAY);line((ha_x+ha_x+2+mx*10)/2+16,(ha_y+ha_y-30)/2-9,(ha_x+ha_x+2+mx*10)/2+16,(ha_y+ha _y-30)/2+9);/*竖*/line((ha_x+ha_x+2+mx*10)/2-15,(ha_y+ha_y-30)/2+9,(ha_x+ha_x+2+mx*10)/2+15,(ha_y+ha _y-30)/2+9);/*横*/bar((ha_x+ha_x+2+mx*10)/2-15,(ha_y+ha_y-30)/2-8,(ha_x+ha_x+2+mx*10)/2+15,(ha_y+ha_ y-30)/2+8);/*--绘制开局框*/drawmat(kai12S,12,(ha_x+ha_x+2+mx*10)/2-13,(ha_y+ha_y-30)/2-6,BLACK);drawmat(ju12S,12,(ha_x+ha_x+2+mx*10)/2+1,(ha_y+ha_y-30)/2-6,BLACK);setfillstyle(SOLID_FILL,LIGHTGRAY);for(y=0;y<my;y++)/*显示小方格*/for(x=0;x<mx;x++){setcolor(WHITE);line(ha_x+2+x*10,ha_y+2+y*10,ha_x+2+x*10+8,ha_y+2+y*10);/*一横,使之有立体感*/line(ha_x+2+x*10,ha_y+2+y*10+1,ha_x+2+x*10,ha_y+2+y*10+8);/*一竖*//*setcolor(DARKGRAY);line(ha_x+2+x*10,ha_y+2+y*10+8,ha_x+2+x*10+8,ha_y+2+y*10+8); 一横 line(ha_x+2+x*10+8,ha_y+2+y*10+1,ha_x+2+x*10+8,ha_y+2+y*10+8); 一竖bar(ha_x+2+x*10+1,ha_y+2+y*10+1,ha_x+2+x*10+7,ha_y+2+y*10+7); */bar(ha_x+2+x*10+1,ha_y+2+y*10+1,ha_x+2+x*10+8,ha_y+2+y*10+8); }}void initmap(){/*地图初始化*/int i=0,x,y;dead=0;score=0;switch(hard){case 0:mx=9;my=9;count=10;break;case 1:mx=16;my=16;count=40;break;case 2:mx=30;my=16;count=99;break;}for(y=0;y<my;y++)/*地图数组设为0*/for(x=0;x<mx;x++)map[y][x]=0;for(;i<count;){/*随机埋雷*/y=rand()%my;x=rand()%mx;if(map[y][x]==0){map[y][x]++;i++;}}map_window();}void m_save(){/*储存menu挡住的部分*/int i,j;for(j=40;j<=93;j++)for(i=2;i<=52;i++)m_s[j-40][i-2]=getpixel(i,j);}void m_load(){/*恢复menu挡住的部分*/int i,j;for(j=40;j<=93;j++)for(i=2;i<=52;i++)putpixel(i,j,m_s[j-40][i-2]);}void ha_mouse(){int i,j,k,x = -1,y = -1,flag = 0,color;int tx1,ty1,tx2,ty2,tbx;int new_x = ha_x,new_y = ha_y;/*char tgraph[193][303],tg=0;*/union REGS inregs,outregs,regs2;inregs.x.ax = 0x03;while (!bioskey(1)){int86(0x33,&inregs,&outregs);/*调用鼠标中断*/ regs2.x.ax = 0x06;regs2.x.bx = 0x00;int86(0x33,&regs2,&regs2);/*CX=水平位置(最后释放时),DX=垂直位置(最后释放时)*/tx2 = regs2.x.cx;ty2 = regs2.x.dx;if (x != outregs.x.cx || y != outregs.x.dx || tbx != outregs.x.bx){ /*printf("%d",outregs.x.bx);*/if (flag){for (j = 0; j < 10; j++)/*恢复上次鼠标一定范围内的像素颜色*/ for(i = 0; i < 6; i++)putpixel(x+i,y+j,re[j][i]);}flag=1;/*================================================================================ ====================================扩充功能部分*/if(outregs.x.bx & 0x01){/*鼠标左键按下------------------------鼠标点击判断*/if(outregs.x.cx>=639-19 && outregs.x.cx<=638 && outregs.x.dx>=1 && outregs.x.dx<=18)exit(0);/*关闭按钮*/else if(outregs.x.cx>=1 && outregs.x.cx<=32 && outregs.x.dx>=21 && outregs.x.dx<=38){/*主菜单-游戏*/if(n1==-1)m_save();else if(n1==1)m_load();n1=0;n2=-1;menu_window();}else if(outregs.x.cx>=33 && outregs.x.cx<=64 && outregs.x.dx>=21 && outregs.x.dx<=38){/*主菜单-难度*/if(n1==-1)m_save();else if(n1==0)m_load();n1=1;n2=-1;menu_window();}else if(n1==0 && n2==1)exit(0);/*开局*/else if((n1==0 && n2==0) || (outregs.x.cx>=(ha_x+ha_x+2+mx*10)/2-16 && outregs.x.cx<=(ha_x+ha_x+2+mx*10)/2+16 && outregs.x.dx>=(ha_y+ha_y-30)/2-9 && outregs.x.dx<=(ha_y+ha_y-30)/2+8)){/*开局*/ dead=0;/*生*/n1=-1;m_load();initmap();}else if(n1==1 && n2==0){/*易*/dead=0;/*生*/n1=-1;m_load();hard=0;initmap();}else if(n1==1 && n2==1){/*中*/dead=0;/*生*/n1=-1;m_load();hard=1;initmap();}else if(n1==1 && n2==2){/*难*/dead=0;/*生*/n1=-1;m_load();hard=2;initmap();}/*else if(outregs.x.cx>=new_x && outregs.x.cx<=new_x+1+mx*10+1 && outregs.x.dx>+new_y-30 && outregs.x.dx<=new_y){ 拖动扫雷图标扫雷if(tg==0){ 扫雷部分存储tg++;for(j=0;j<=1+my*10+1+30;j++)for(i=0;i<=mx*10+2;i++)tgraph[j][i]=getpixel(ha_x+i,ha_y+j-30);}if(tbx&1 && x>=new_x && x<=new_x+1+mx*10+1 && y>=new_y-30 && y<=new_y){setcolor(YELLOW);rectangle(new_x,new_y-29,new_x+1+mx*10,new_y+1+my*10);rectangle(new_x,new_y-30,new_x+1+mx*10+1,new_y+1+my*10+1);new_x+=outregs.x.cx-x;new_y+=outregs.x.dx-y;tg=2;}else if(tg=2 && x>=new_x && x<=new_x+1+mx*10+1 && y>=new_y-30 && y<=new_y){tg=0;ha_x=new_x;ha_y=new_y;for(j=0;j<=1+my*10+1+30;j++)for(i=0;i<=mx*10+2;i++)putpixel(ha_x+i,ha_y+j-30,tgraph[j][i]);}}*/else{/*没有点击到按钮*/if(n1!=-1)m_load();n1=n2=-1;menu_window();}}if(n1==0 && outregs.x.cx>=2 && outregs.x.cx<=31 && outregs.x.dx>=40 && outregs.x.dx<=75){/*游戏下级菜单操作*/n2=(outregs.x.dx-40)/18;menu_window();}if(n1==1 && outregs.x.cx>=34 && outregs.x.cx<=52 && outregs.x.dx>=40 && outregs.x.dx<=93){/*难度下级菜单操作*/n2=(outregs.x.dx-40)/18;menu_window();}/*-----------------------------左键点击控制部分*/if(tx2-ha_x-2>=0 && ty2-ha_y-2>=0 && (tx2-ha_x-2)/10>=0 && (tx2-ha_x-2)/10<=mx-1 && (ty2-ha_y-2)/10>=0 && (ty2-ha_y-2)/10<=my-1 && dead==0 && (tx1!=tx2 || ty1!=ty2)){box_open((tx2-ha_x-2)/10,(ty2-ha_y-2)/10,1);}if(outregs.x.bx>>1 & 0x01 && dead==0){/*鼠标右键按下------------------------鼠标点击判断*/if((outregs.x.cx-ha_x-2)/10>=0 && (outregs.x.cx-ha_x-2)/10<=mx-1 && (outregs.x.dx-ha_y-2)/10>=0 && (outregs.x.dx-ha_y-2)/10<=my-1){box_mark((outregs.x.cx-ha_x-2)/10,(outregs.x.dx-ha_y-2)/10);/*插旗标记*/ }}/*================================================================================ ================================================*/for(j=0;j<10;j++)/*储存鼠标一定范围内的像素颜色*/for(i=0;i<6;i++)re[j][i]=getpixel(outregs.x.cx+i,outregs.x.dx+j);for(i=0;i<8;i++){/*确定鼠标各顶点位置*/m_now_poly[i]=m_poly[i]+outregs.x.cx;i++;m_now_poly[i]=m_poly[i]+outregs.x.dx;}setcolor(GREEN);drawpoly(4,m_now_poly);/*显示鼠标框架*/setfillstyle(SOLID_FILL,WHITE);/*填充鼠标,注意以白色填充,当遇到白色背景时会不能完全填充*/floodfill(m_now_poly[0]+1,m_now_poly[1]+5,GREEN); /*绿色*/setcolor(LIGHTRED);drawpoly(4,m_now_poly);/*显示鼠标框架*/}x=outregs.x.cx;/*存鼠标坐标,供恢复使用*/y=outregs.x.dx;tbx=outregs.x.bx;tx1=tx2;/*暂存鼠标释放的位置*/ty1=ty2;}}void full_window(){/*整体部分,包括标题栏的绘制*/setbkcolor(BLACK);setcolor(WHITE);line(0,20,639,20);rectangle(0,0,639,479);setfillstyle(SOLID_FILL,LIGHTGRAY);bar(1,1,638,19);drawmat(sao16S,16,7,4,BLACK);/*标题部分-汉字*/drawmat(lei16S,16,23,4,BLACK);drawmat(dash16S,16,42,4,RED);drawmat(zhi16S,16,60,4,MAGENTA);drawmat(zuo16S,16,75,4,MAGENTA);drawmat(cheng16S,16,90,4,MAGENTA);drawmat(yuan16S,16,105,4,MAGENTA);drawmat(mao16S,16,120,4,MAGENTA);drawmat(xu16S,16,135,4,BLUE);drawmat(chun16S,16,150,4,BLUE);drawmat(hui16S,16,165,4,BLUE);drawmat(xu16S,16,190,4,BLUE);drawmat(qun16S,16,205,4,BLUE);drawmat(yang16S,16,230,4,BLUE);drawmat(lei16S,16,245,4,BLUE);drawmat(yang16S,16,270,4,BLUE);drawmat(song16S,16,285,4,BLUE);setfillstyle(SOLID_FILL,RED);/*显示关闭图标*/bar(639-19,1,638,18);setcolor(WHITE);setlinestyle(0,0,3);/*X*/line(639-19+2,1+2,638-2,18-2);line(639-19+2,18-2,638-2,1+2);setlinestyle(0,0,1);}void menu_window(){/*------------------------------------------菜单栏*/ int i;setcolor(BLACK);for(i=0;i<2;i++){/*主菜单*/if(i==n1)setfillstyle(SOLID_FILL,DARKGRAY);else setfillstyle(SOLID_FILL,LIGHTGRAY);bar(32*i+1,21,32*(i+1),38);}drawmat(you12S,12,4,21+3,BLACK);/*游戏*/drawmat(xi12S,12,4+12+2,21+3,BLACK);drawmat(nan12S,12,32+4,21+3,BLACK);/*难度*/drawmat(du12S,12,32+4+12+2,21+3,BLACK);if(n1==0){/*------------------包括菜单----------------游戏菜单*/ for(i=0;i<2;i++){if(i==n2)setfillstyle(SOLID_FILL,DARKGRAY);else setfillstyle(SOLID_FILL,LIGHTGRAY);bar(2,39+(i*(12+6))+1,2+2+12*2+3,39+((i+1)*(12+6)));}drawmat(kai12S,12,4,39+3,GREEN);/*开局*/drawmat(ju12S,12,4+12+2,39+3,GREEN);drawmat(tui12S,12,4,39+6+3+12,RED);/*退出*/drawmat(chu12S,12,4+12+2,39+6+3+12,RED);}else if(n1==1){/*-------------------------------------难度菜单*/ for(i=0;i<3;i++){if(i==n2)setfillstyle(SOLID_FILL,DARKGRAY);else setfillstyle(SOLID_FILL,LIGHTGRAY);bar(2+32,39+(i*(12+6))+1,2+32+12+6,39+((i+1)*(12+6))); }drawmat(yi12S,12,2+32+4,39+3,YELLOW);/*易中难*/drawmat(zhong12S,12,2+32+4,39+18+3,YELLOW);drawmat(nan12S,12,2+32+4,39+36+3,YELLOW);}}ha_graph(){/*图形模式初始化*/int gd=DETECT,gm,errorcode;registerbgidriver(EGAVGA_driver);initgraph(&gd,&gm,"");errorcode = graphresult();if (errorcode != grOk){printf("Graphics error: %s",grapherrormsg(errorcode));printf("Author:JYL");getch();exit(1);}}int main(){int i;srand((unsigned)time(NULL));/*使每次执行程序得到的结果不一样*/ ha_graph();full_window();menu_window(-1,-1);/*菜单*/initmap();/*地图初始化*/ha_mouse();/*鼠标*/}9.参考文献[1] 谭浩强著.C程序设计[2]实验与课程设计指导[3]计算机文化。

相关文档
最新文档