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 课程设计一、教学目标本课程旨在通过扫雷游戏C的学习,让学生掌握基本的计算机编程技能,培养逻辑思维和解决问题的能力。

具体目标如下:知识目标:使学生了解扫雷游戏的规则和原理,学习C语言的基本语法和编程方法。

技能目标:培养学生使用C语言编写程序的能力,学会调试和优化程序。

情感态度价值观目标:培养学生对计算机科学的兴趣,增强自信心,培养团队协作和沟通能力。

二、教学内容本课程的教学内容主要包括扫雷游戏的规则介绍、C语言的基本语法和编程方法。

具体安排如下:第1-2课时:扫雷游戏的规则介绍和原理分析。

第3-4课时:C语言的基本语法和编程方法。

第5-6课时:扫雷游戏的编程实践。

第7-8课时:程序调试和优化。

第9-10课时:团队协作完成扫雷游戏的编程任务。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。

具体方法如下:第1-2课时:采用讲授法介绍扫雷游戏的规则和原理。

第3-4课时:采用案例分析法讲解C语言的基本语法和编程方法。

第5-6课时:采用实验法让学生动手编写扫雷游戏的程序。

第7-8课时:采用讨论法分析程序的调试和优化方法。

第9-10课时:采用团队协作法完成扫雷游戏的编程任务。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:教材:《C语言程序设计》。

参考书:《C语言编程实例教程》。

多媒体资料:扫雷游戏的教学视频。

实验设备:计算机、网络设备等。

五、教学评估本课程的评估方式将包括平时表现、作业和考试等,以全面客观地反映学生的学习成果。

具体评估方式如下:平时表现:通过观察学生在课堂上的参与度、提问和回答问题的情况,以及小组合作的表现来评估学生的学习态度和理解程度。

作业:布置与课程内容相关的编程作业,要求学生在规定时间内完成,并根据作业的质量给予评分。

考试:安排一次期末考试,测试学生对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语言程序设计课程设计扫雷一、课程目标知识目标: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.平时表现:观察学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和理解程度。

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

C程序设计扫雷游戏一、设计题目:扫雷游戏二、设计目的1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。

2.培养学生综合运用所学知识独立完成课题的能力。

3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。

4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。

5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。

6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。

三、设计要求1.汪洋和孔维亮组成设计小组。

小组成员分工协作完成。

要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。

2.查阅相关资料,自学具体课题中涉及到的新知识。

3.采用结构化、模块化程序设计方法,功能要完善,界面要美观。

4.按要求写出课程设计报告,并于设计结束后1周内提交。

一概述1)掌握数组指针的概念及其应用2)培养团结合作精神2. 课程设计的要求要求我们有扎实的C语言知识,以及良好的编程习惯,能够熟练的应用循环,有毅力,还要求我们有较强的合作精神,善于总结。

同时还要求我们自学C语言作图部分知识。

在必要时还要上网查相关资料。

3.课程设计的主要设计思想扫雷游戏主要用了一个10行10列的二维数组,刚开始利用random随机布雷。

每一个程序最主要的是算法。

扫雷游戏算法的重点是一开始统计好每个格子周围有多少雷,当鼠标左键点在格子上时做出判断,如果周围8个格子有雷则显示出雷数,如果没有雷则显示空白格(在四个角的格子显示周围3个格子,其它边缘的格子显示周围5个的状态),我们在主函数中用两个for语句来判断周围雷数。

我们还加了鼠标处理函数。

如果格子上有雷则调用函FailExitGame(),显示“Fail!”,游戏结束。

若所有的雷都标出,且所有的格子都处理过,则调用函数ExitGame(),显示“OK,Good!”,游戏结束。

游戏结束后,按任意键出去。

二总体方案设计封面是由图形和动态文字,伴随声音接替出现。

程序用了一个10行10列的二维数组表示扫雷界面。

在游戏中要随机步雷,游戏开始前要统计好每个格子周围的雷数,游戏开始后可以点击鼠标玩游戏,游戏结束后,按任意键结束跳出游戏界面。

整体框图三详细设计程序流程以下是主函数中的一些主要的。

1.主函数2.主要定义常用到的常量,全局变量,有关的函数原形说明。

然后随机布雷,统计好每个格子周围的雷数,画扫雷游戏界面,游戏接受鼠标操作,按任意键结束游戏,关闭图形系统,程序结束。

BYTE MouseState() /*等待接受鼠标命令函数*/{union REGS regs;regs.x.ax = 3;int86(MOUSE, &regs, &regs); /*鼠标端口*/return(regs.x.bx);}void MouseShow() /*鼠标显示函数*/{union REGS regs;regs.x.ax = 1;int86(MOUSE, &regs, &regs);}void MouseHide() /*鼠标隐藏函数*/{union REGS regs;regs.x.ax = 2;int86(MOUSE, &regs, &regs);}BOOL InitMouse() /*取鼠标端口函数*/ {union REGS regs;regs.x.ax = 0;int86(MOUSE, &regs, &regs);return (regs.x.ax);}void WaitMouse(){int xx,yy;while (MouseState()){GetXY(&xx,&yy);if (xx!=x||yy!=y)SetXY(x,y);}}void Prt(int x,int y,BYTE ch,BYTE color) /*定义雷区地址入口*/ {pokeb(0xb800,y*160+x*2,ch);pokeb(0xb800,y*160+x*2+1,color);}BYTE Scr(int x,int y) /*返回雷区地址入口*/ {return peekb(0xb800,y*160+x*2);}void CursorHide() /*光标隐藏*/{_AH=3;geninterrupt(0x10);CursorMode=_CX;_AH=1;_CH=32;geninterrupt(0x10);}void CursorShow() /*光标显示*/{_AH=1;_CX=CursorMode;geninterrupt(0x10);}四、源程序如下:# include <dos.h># include <time.h># include <conio.h># include <stdio.h># include <stdlib.h># include <graphics.h># define BYTE unsigned char# define BOOL BYTE# define WORD unsigned int# define DWORD unsigned long# define TRUE 1# define FALSE !TRUE# define MOUSE 0x33# define LBUTTON 1# define RBUTTON 2# define SX 35# define SY 7# define MINE 9 /*在有雷的地方定义为MINE*/ BOOL InitMouse(); /*初始化鼠标*/BYTE Scr(int,int); /*屏幕显示坐标函数*/BYTE MouseState(); /*等待接受鼠标命令*/void Edge(int,int);void TurnBack(int,int);void MouseShow(); /*鼠标显示函数*/void MouseHide(); /*鼠标隐藏函数*/void CursorShow(); /*光标显示函数*/void CursorHide(); /*光标隐藏函数*/void SetRange(int,int,int,int);void GetXY(int*,int*);void SetXY(int,int);void WaitMouse();void WaitKey();void Prt(int,int,BYTE,BYTE); /*雷区的图形和颜色*/ void Locate(BYTE,BYTE);void FailExitGame(); /*游戏失败*/void ExitGame(); /*游戏胜利*/struct Snow{int x;int y;int speed;}snow[100];int snownum=0;int size;int change=10;void *save1,*save2;void Copy();void DrawSnow();void Pr();void load();void welcome1();void welcome2();void welcome3();void control();void star();BOOL Turn[10][10];BYTE Mine[10][10];BYTE Mark[10][2];WORD CursorMode;int x,y;void main(){ int i;int Total=0;BYTE Button;BOOL QUIT=FALSE;time_t lt; /*定义时间变量*/star(); /*调用游戏前景动画函数*/if (!InitMouse()){printf("Mouse not installed!"); /*对鼠标端口进行判断*/getch();}clrscr(); /*清屏*/CursorHide();randomize(); /*定义取随机数*/Locate(36,20); /*定义屏幕坐标*/printf("Mines:%d ",0); /* Mines表示做标记的次数*/lt = time(NULL);Locate(15,4); /*定义屏幕坐标*/printf("The Calendar Time now is %s\n", ctime(& lt));for (y=0;y<10;y++)for (x=0;x<10;x++){Mine[y][x]=NULL;Turn[y][x]=FALSE;}for (i=0;i<10;i++) /*随机产生地雷坐标*/{x=random(10);y=random(10);while (Mine[y][x]){x=random(10);y=random(10);}Mine[y][x]=MINE; /*定义在有了雷的地方坐标值为MINE*/ }for (y=0;y<10;y++)for (x=0;x<10;x++){i=0; /*判断每个格子周围的雷数*/ if (Mine[y][x]!=MINE){if ((Mine[y][x-1]==MINE)&&((x-1)>=0)) i++;if ((Mine[y][x+1]==MINE)&&((x+1)<10)) i++;if ((Mine[y-1][x]==MINE)&&((y-1)>=0)) i++;if ((Mine[y+1][x]==MINE)&&((y+1)<10)) i++;if ((Mine[y-1][x-1]==MINE)&&((x-1)>=0)&&((y-1)>=0)) i++;if ((Mine[y-1][x+1]==MINE)&&((x+1)<10)&&((y-1)>=0)) i++;if ((Mine[y+1][x+1]==MINE)&&((x+1)<10)&&((y+1)<10)) i++;if ((Mine[y+1][x-1]==MINE)&&((x-1)>=0)&&((y+1)<10)) i++;Mine[y][x]=i;}Prt(x+SX,y+SY,1,15); /*雷区的图形和颜色*/}MouseShow();while(!QUIT){if (kbhit()) if (getch()==27) QUIT=TRUE;Button=MouseState()&3;if (Button){GetXY(&x,&y);WaitMouse();x>>=3;y>>=3;x-=SX;y-=SY;if (x>=0&&x<10&&y>=0&&y<10){if (Button&LBUTTON){if (Mine[y][x]==MINE)FailExitGame();if (Mine[y][x]==NULL)Edge(x,y);elseTurnBack(x,y);}if (Button&RBUTTON){if (!(Turn[y][x]&1)){switch (Turn[y][x]){case 0:Turn[y][x]=2;MouseHide();Prt(x+SX,y+SY,'*',15);Locate(36,20);printf("Mines:%d ",++Total);MouseShow();Mark[Total][0]=x;Mark[Total][1]=y;if (Total==10) ExitGame();break;case 2:Turn[y][x]=0;MouseHide();Prt(x+SX,y+SY,5,8);Locate(36,20);printf("Mines:%d ",--Total);MouseShow();break;}}}}}}WaitKey();MouseHide();CursorShow();}BYTE MouseState() /*等待接受鼠标命令*/{union REGS regs;regs.x.ax = 3;int86(MOUSE, &regs, &regs); /*鼠标端口*/return(regs.x.bx);}void MouseShow() /*鼠标显示*/{union REGS regs;regs.x.ax = 1;int86(MOUSE, &regs, &regs);}void MouseHide() /*鼠标隐藏*/{union REGS regs;regs.x.ax = 2;int86(MOUSE, &regs, &regs);}BOOL InitMouse() /*取鼠标端口*/ {union REGS regs;regs.x.ax = 0;int86(MOUSE, &regs, &regs);return (regs.x.ax);}void SetRange(int start_x,int start_y,int end_x,int end_y){union REGS r;r.x.ax=7;r.x.cx=start_x;r.x.dx=end_x;int86(0x33,&r,&r);r.x.ax=8;r.x.cx=start_y;r.x.dx=end_y;int86(MOUSE,&r,&r);}void GetXY(int *x,int *y){union REGS ireg,oreg;ireg.x.ax=3;int86(MOUSE,&ireg,&oreg);*x=oreg.x.cx;*y=oreg.x.dx;}void SetXY(int x,int y){union REGS ireg;ireg.x.ax=4;ireg.x.cx=x;ireg.x.dx=y;int86(MOUSE,&ireg,&ireg);}void WaitMouse(){int xx,yy;while (MouseState()){GetXY(&xx,&yy);if (xx!=x||yy!=y)SetXY(x,y);}}void Prt(int x,int y,BYTE ch,BYTE color) /*定义雷区地址入口*/ {pokeb(0xb800,y*160+x*2,ch);pokeb(0xb800,y*160+x*2+1,color);}BYTE Scr(int x,int y) /*返回雷区地址入口*/ {return peekb(0xb800,y*160+x*2);}void CursorHide() /*光标隐藏*/{_AH=3;geninterrupt(0x10);CursorMode=_CX;_AH=1;_CH=32;geninterrupt(0x10);}void CursorShow() /*光标显示*/{_AH=1;_CX=CursorMode;geninterrupt(0x10);}void WaitKey(){_AH=0;geninterrupt(0x16);}void Edge(int xx,int yy){if (xx<0||xx>9||yy<0||yy>9||Turn[yy][xx]) return;TurnBack(xx,yy);if (Mine[yy][xx]==NULL){Edge(xx+1,yy);Edge(xx-1,yy);Edge(xx,yy+1);Edge(xx,yy-1);}}void TurnBack(int xx,int yy){if (!Turn[yy][xx]){MouseHide();Prt(xx+SX,yy+SY,Mine[yy][xx]+48,12);MouseShow();Turn[yy][xx]=Turn[yy][xx]||1;}}void Locate(BYTE Col,BYTE Line){pokeb(0x0,0x450,Col);pokeb(0x0,0x451,Line);}void FailExitGame(){ /*显示游戏失败*/sound(1000);delay(500);nosound();for (y=0;y<10;y++)for (x=0;x<10;x++)if (Mine[y][x]==MINE) Prt(x+SX,y+SY,'*',14+128);MouseHide();CursorShow();printf("\nFail!\n");getch();exit(0);}void ExitGame() /*显示游戏胜利*/{int i,m=0;for (i=0;i<10;i++)if (Mine[Mark[i][1]][Mark[i][0]]) m++;if (m<9) FailExitGame();MouseHide();CursorShow();printf("\nOK,Good!\n");getch();exit(0);}/* /////// 开机////// */ void star(){int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\turboc2");Copy();DrawSnow();welcome1();welcome2();welcome3();control();closegraph(); /*关闭图形函数*/}void Copy(){setcolor(0); /*涂色*/setfillstyle(SOLID_FILL,15);fillellipse(200,200,1,1); /*画椭圆*/size=imagesize(196,196,204,204);save1=malloc(size);save2=malloc(size);getimage(196,196,204,204,save1);getimage(96,96,104,104,save2);}void Pr(){ints[]={392,262,262,262,330,392,392,392,392,392,330,330,294,294,330,294,262,440,3 92,392,262,262,262,330,392,392,392,392,392,330,330,294,294,330,294,262,440,392};/*定义声音函数数组*/setcolor(change); /*字体颜色变换*/settextstyle(0,0,4); /*字体大小*/outtextxy(150,200,"Welcome to"); /*在屏幕上打印字符*/outtextxy(200,240,"C Game!");sound(s[change/10]); /*释放声音*/}void DrawSnow(){int i;int sx[62];randomize();for(i=0;i<62;i++)sx[i]=(i+2)*10;cleardevice(); /*清屏*/while(!kbhit()){Pr();if(snownum!=100){snow[snownum].speed=2+random(5);i=random(62);snow[snownum].x=sx[i];snow[snownum].y=10-random(100);}for(i=0;i<snownum;i++)putimage(snow[i].x,snow[i].y,save2,COPY_PUT); Pr(); if(snownum!=100)snownum++;else if(snownum>15) break;delay(300);setfillstyle(SOLID_FILL,15);for(i=0;i<snownum;i++){snow[i].y+=snow[i].speed;putimage(snow[i].x,snow[i].y,save1,COPY_PUT); if(snow[i].y>500)snow[i].y=10-random(200);}change++;if(change==140)change=10;}nosound();}void welcome1(){int a;for(a=0;a<450;a++){textbackground(16);setcolor(15);circle(315,240,a);delay(100);setcolor(16);circle(315,240,a-10);}}void welcome2(){float b;int c;for(b=0;b<320;b=b+0.5){setcolor(11);rectangle(0,240,b,240);rectangle(630,240,640-b,240);}for(c=0;c<240;c++){rectangle(0,240,640,240-c);rectangle(0,240,640,240+c);}}void welcome3(){int x,y=100,i,j;for(x=60;x<65;x++){setcolor(4); /*定义要打印字体的颜色*/ setbkcolor(1); /*定义背景色*/ settextstyle(0,0,6); /*定义要打印字体的大小*/ outtextxy(x,y,"扫"); /*在x,y位置打印汉字*/ delay(6000); /*延时*/}for(x=190;x<195;x++){setcolor(4);setbkcolor(1);settextstyle(0,0,6);outtextxy(x,y,"雷");delay(6000);}for(x=320;x<325;x++){setcolor(4);setbkcolor(1);settextstyle(0,0,6);outtextxy(x,y,"游");delay(6000);}for(x=480;x<485;x++){setcolor(4);setbkcolor(1);settextstyle(0,0,6);outtextxy(x,y,"戏");delay(6000);}sleep(0.5);setcolor(4);settextstyle(0,0,2);outtextxy(130,205,"制作组人员:范金龙闫佳佳");outtextxy(230,250,"倾");for(i=0;i<10;i=i+1){for(j=0;j<i/2;j=j+1){setcolor(4);setbkcolor(14);circle(282-j,256-j,i); /*画圆*/circle(286+j,256-j,i);delay(20);}}outtextxy(315,250,"打");outtextxy(350,250,"造");outtextxy(200,280,"1 . star the game");outtextxy(200,310,"2 . exit pattern");outtextxy(550,450,"V1.90");}void control() /*从键盘接受命令函数*/{int key;key=getch();switch(key) /*等待接受命令*/{case '1':load();break;case '2':exit(0);default:exit(0);}}void load(){float k;setcolor(4);rectangle(205,365,392,381);outtextxy(220,350,"loading...");for(k=0;k<187;k=k+0.2){rectangle(205,365,205+k,381); /*画矩形*/ delay(1000);}}。

相关文档
最新文档