精华内容
下载资源
问答
  • 本次C语言课程设计游戏为一款飞行射击游戏,名字为飞机大战。 用EasyX实现的小游戏,作为课程设计。
  • C语言课程设计报告-猜数游戏C语言课程设计报告-猜数游戏|c语言程序代码编程小程序设计|c语言课程设计报告课程案例#include#includeint dif_1();int dif_2();void menu_1();int menu_in();int dif_1(){int dif_1;dif_...

    C语言课程设计报告-猜数游戏

    C语言课程设计报告-猜数游戏|c语言程序代码编程小程序设计|c语言课程设计报告课程案例

    #include

    #include

    int dif_1();

    int dif_2();

    void menu_1();

    int menu_in();

    int dif_1()

    {

    int dif_1;

    dif_1=random(10);

    return dif_1;

    }

    int dif_2()

    {

    int dif_2;

    dif_2=random(100);

    return dif_2;

    }

    void menu_1()

    {

    int i;

    clrscr();

    for(i=0;i<8;i++) printf("\n");

    printf("                          Difficuty Choose\n");

    printf("\n\n");

    printf("                        1--Between 1 and 10\n\n");

    printf("                        2--Between 1 and 100\n\n");

    printf("                        3--Exit\n\n");

    }

    int menu_in()

    {

    int choose;

    printf("                            Choose:");

    scanf("%d",&choose);

    return choose;

    }

    void test(int gess)

    {

    int num=-1,sum=0;

    while(num!=gess)

    {

    printf("Please input number:");

    scanf("%d",&num);

    if(num>gess) {printf("high\n");sum++;}

    else if(num

    else printf("Good! You use %d\n",sum);

    }

    getchar();

    getchar();

    }

    void error()

    {

    printf("Choose error!");

    getchar();

    getchar();

    }

    main()

    {

    int choose;

    menu_1();

    choose=menu_in();

    switch(choose)

    {

    case 1: test(dif_1());break;

    case 2: test(dif_2());break;

    case 3: exit(0);break;

    default: error();

    }}

    展开全文
  • 16个C语言课程设计实验源代码 - C语言课程设计源码 - C语言课程设计案例精编源代码 课程设计实验源代码源代码包括: 基本语法操作实例; 小游戏; 管理系统; 网络编程; 仿视窗小工具; 图形用户界面等。。。 ...
  • C语言课程设计 C语言课程设计源代码 黑白棋游戏
  • 推箱子游戏(c语言课程设计)推箱子游戏(c语言课程设计)推箱子游戏(c语言课程设计)推箱子游戏(c语言课程设计
  • 骑士游戏设计 c语言课程设计 很好的```````
  • C语言课程设计_黑白棋游戏 大学课程设计
  • 结合C语言课程设计 猜数字游戏那个资源,这是那个程序的文档,便于童鞋们直接使用。其他说明请参见资源“C语言课程设计 猜数字游戏
  • C语言课程设计代码——一字棋小游戏C语言课程设计代码——一字棋小游戏C语言课程设计代码——一字棋小游戏C语言课程设计代码——一字棋小游戏
  • c语言课程设计教学大纲新版《C语言程序设计》课程设计教学大纲课程设计名称:C语言程序设计课程设计课程代码:???学 分:1周 数:1适用专业:电子信息科学与技术、光信息科学与技术一、课程设计的目的与任务...

    c语言课程设计教学大纲新版

    《C语言程序设计》课程设计教学大纲

    课程设计名称:C语言程序设计课程设计

    课程代码:???

    学 分:1

    周 数:1

    适用专业:电子信息科学与技术、光信息科学与技术

    一、课程设计的目的与任务

    “C语言课程设计”是在学习“C语言程序设计基础”课程之后进行的一个实践教学环节,课程设计的目的是进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解;针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

    掌握C语言的编程技巧和上机调试程序的方法。

    掌握程序设计的常用算法。

    二、课程设计的基本要求

    设计步骤的规范不但可以培养学生科学的工作方法和作风,而且还能有效地减少错误,提高工作效率。因此必须严格执行良好的实验步骤规范(包括上级操作规范)。本课程设计的基本步骤与要求是:

    1、问题分析及解决方案框架确定

    充分地分析和理解问题本身,弄清要求做什么。在确定解决方案框架过程中,考虑怎样使程序结构清晰、合理、简单和易于调试,并确定每个函数的简单功能,以及函数之间的调用关系。

    2、详细设计和编码

    确定算法的主要流程,再此基础上进行代码设计(Coding),每个明确的功能模块程序一般不超过60行,否则要进一步划分。

    3、上机前编写程序与检查

    上机前程序检查可有效提高调试效率,减少上机调试程序时的无谓错误。

    程序检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。把程序中的明显错误事先排除。

    4、上机调试程序

    5、完成课程设计报告

    ①问题描述:题目要解决的问题是什么。

    ②设计

    设计算法:主要算法思想,用流程图表示。

    实现注释:各项功能的实现程度。

    调试报告:调试过程中遇到的主要问题,是如何解决的;对设计和编码的回顾讨论和分析;改进设想;经验和体会等

    ③附录:源程序清单和结果。如果题目规定了测试数据,则结果要包含这些测试数据和运行输出,当然还可以含其他测试数据和运行输出。

    三、课程设计选题原则

    课题类型应该覆盖本专业培养目标和教学基本要求以及相关专业基本要求,包括软件设计和硬件设计,根据学生的实际情况确定课题,给学生较充分的选择余地,充分调动学生的积极性和创造性。以下是供学生参考的课程设计题目:

    1、猜数游戏(掌握程序结构及随机函数应用)

    程序说明:游戏的开始由机器产生一个随机数(1~100之间,用库函数random(),用法见后面的说明),然后游戏者在程序的提示下猜数,若输入的数比这个数大,程序提示:Your answer is HIGH,try again. ,否则,程序提示:Your answer is LOW,try again.,直到猜对为止。程序可实现连续猜数,直到游戏者退出。

    程序输出要求:累计游戏者猜对一个数所需次数n,当n=15时,用exit(0)库函数退出程序。

    2、简单计算器

    请编写一个程序计算表达式:data1 op data2的值。其中,op为运算符+、-、*、/。

    3、字符串处理函数

    编写三个函数:求字符串长度函数(函数原型为:int strlen(char *p)),字符串复制函数(函数原型为:void strcpy(char *p1,char *p2)),字符串比较函数(函数原型为:int strcmp(char *p1,char *p2),返回值为第一个不相同字符的ASCII码差。)。

    要求:在主函数中根据用户需要调用不同的函数功能。

    4、编一程序,实现将输入的一个无符号整数转换为二进制和八进制表示,分别存入字符数组中并输出。(提示:算法采用模拟人工法。)

    注:计算机模拟人工是编程中常用的方法,这种方法要求编程者首先分析在人工方式下解决问题的过程,从中找出步骤和规律,然后编写程序,按照人工解决问题的步骤和规律进行操作。

    5、计算分数的精确值

    使用数组精确计算M/N(0

    注:由于计算机内字长有限,常规的浮点运算都有精度限制,为了得到高精度的计算结果,就必须自行设计算法。

    提示:可将商存放在一维数组中,进行除法运算时,可模拟人的手工操作,即每次求出商的一位后,将余数乘以10,再计算商的下一位。若某次余数为0,则为有限不循环小数。若某次计算后的余数与前面

    展开全文
  • C语言课程设计,学习C语言的好帮手!大一的时候编写的C语言课程设计,供有需要的人参考参考
  • 使用C语言写的课程设计,就是手机里面的猜数字游戏,eg:输入1234,返回结果2A1B。文件缺少文档。文档请另行下载,在我的资源中有。
  • c语言课程设计猜数字游戏精选资料课 程 设 计 报 告课程名称 C语言程序设计课题名称 猜 数 字 游 戏专 业 机械设计及其自造化班 级 1185班学 号 201113090516姓 名指导教师 王 颖2 0 1 2年 6 月 2 2 日湖南工程学院...

    c语言课程设计猜数字游戏精选资料

    课 程 设 计 报 告

    课程名称 C语言程序设计

    课题名称 猜 数 字 游 戏

    专 业 机械设计及其自造化

    班 级 1185班

    学 号 201113090516

    姓 名

    指导教师 王 颖

    2 0 1 2年 6 月 2 2 日

    湖南工程学院

    课 程 设 计 任 务 书

    课程名称 C语言程序设计

    课 题 猜 数 字 游 戏

    专业班级 机 械 设 计 1185 班

    学生姓名

    学 号 201113090516

    指导老师 王 颖

    审 批 王 颖

    任务书下达日期 2012 年 6 月 1 日

    任务完成日期 2012 年 6 月 22 日

    设计课题四:猜数字游戏

    一、问题描述:

    该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。

    二、功能要求:

    1、本游戏显示这样的菜单:

    随机产生数据

    用户输入数据

    退出游戏

    2、游戏成功与否都能返回主菜单

    三、算法提示:

    数据结构:数组

    用简单的程序设计方法

    四、测试数据:

    测试数据: 3792

    第一次输入: 1234

    0A2B

    第二次输入: 5678

    0A1B

    第三次输入: 0867

    0A1B

    第四次输入: 9786

    1A1B

    第五次输入: 1794

    2A0B

    第六次输入: 2793

    2A2B

    第七次输入: 3792

    4A0B

    游戏过关!!!

    五、其它:

    对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能,如:破记录功能,若你所的次数小于纪录保持者,则为破纪录1

    第一节 项目背景1

    第二节 本课题所做的工作2

    第二章 需求分析

    第一节 用户需求分析…………………………………………………………...3

    第二节 开发环境分析…………………………………………………………...4

    第三章 程序设计5

    第一节 程序的功能5

    第二节 输入输出的要求5

    第三节 程序模块6

    第一条 模块组成6

    第二条 层次结构8

    第三条 模块调用9

    第四章 分析10

    第一节 模块解释与功能10

    第五章 调试14

    第一节 菜单测试14

    第二节 游戏测试16

    第一条 在自定义中16

    第二条 在随机游戏中19

    第六章 总结21

    第七章 附录23

    第一节 附录A 源程序23

    第二节 附录B 参考文献32

    课程设计评分表............................................33

    绪论

    项目背景

    C语言一共有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C语言可以像汇编语言一样对位、字节、和地址进行操作,而这三者是计算机最基本的工作单元。并且它功能丰富,表达能力强,程序执行效率高,可移植性好;C语言既有高级计算机程序设计语言的特点,同时又具有部分汇编语言的特点,因而C语言具有较强的系统处理能力。通过C语言函数结构可以方便的实现程序的模块化;在C语言的基础上发展起来的面向对象程序设计语言如C++,java,c#等于C语言有许多的共同特征,掌握C语言对学习进而应用这些面向对象的程序设计语言有极大的帮助。因为其独特的语言机制在计算机科学领域中得到了广泛的应用。目前,大部分工科专业的计算机程序语言都是C语言,主要学习面向过程的程序设计方法。

    课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。

    (2)掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;

    (3)掌握Java应用软件的开发环境和开

    展开全文
  • C语言课程设计-含报告和源程序代码(猜数范围可任意修改)
  • 基于C语言写的简单的扫雷游戏,写C语言课程设计的朋友们可以参考一下。
  • 一担挑游戏,即简单计算机模拟棋盘对奕。棋盘左上角坐标为(1,1),右下角坐标为(3,3)。 包括实验分析,流程图,源代码。
  • 计算机"想"-一个数请人猜,如果猜对了,提示"Right!”; 否则"Wrong! ", 并告诉所猜的数是大还是小,直到猜对结束,最后给出猜测的次数。
  • PAT代码:C语言课程设计游戏开发实践教程
  • 课程设计是采用C/C++语言开发扫雷游戏,该系统运行在MS-DOS命令行模式下。本课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力...
  • c语言课程设计实例

    2011-09-15 13:32:40
    c语言课程设计小程序实例,一些小游戏和小的管理系统
  • 课程设计,应付做来玩的,功能基本实现猜数字,排名,猜到第几轮结束,应付的所以做得很基础,大家需要的可以下来完善:)
  • c语言实现贪吃蛇代码可随意下载 c语言课程设计报告也可随意下载1.本代码在VS2013下可正常运行,其他版本需根据版本需要进行调试。2.代码在Csnake-Csnake里,想直接打开整个工程直接进入Cnak...

     

    原文作者:aircraft

    原文地址:https://www.cnblogs.com/DOMLX/p/8846529.html

     

    注:本文档需与c语言课程设计之贪吃蛇文档配套使用。c语言实现贪吃蛇代码可随意下载 c语言课程设计报告也可随意下载
    1.本代码在VS2013下可正常运行,其他版本需根据版本需要进行调试。
    2.代码在Csnake-Csnake里,想直接打开整个工程直接进入Cnake,点击Csnake.sln打开  注意这里可能需要使用相关的IDE环境才能打开,没有相关环境的话,复制代码自己创建个工程就行了很简单的。
    3.代码注释为全英文注释,若有疑问可借助百度翻译,或者看文档报告。

     

    文档链接可直接百度云下载:链接:https://pan.baidu.com/s/1vnXkR8d9-R5lAYpxzcMYxw 密码:i1q6

     

    后面在下的博客可能还会有大学常见的课设代码和报告发布,比如c++MFC课设,数据库课设,WEB课设,网络编程课设,linux课设,数据结构课设,python课设,matlab课设,,,想要的话就关注在下的博客吧嘿嘿-----

     

     

    说到大学都要做的课程设计和报告我还是决定分享出来,为什么呢?(大学就是给这些无聊的课程,无聊报告和画图耽误的,才会有那么多大学生找不到工作)节省大家时间啦 嘿嘿。。。。。。请叫我雷锋先生。。。

    说到贪吃蛇还是直接上代码吧,解释最后来。。。。。

    首先是main.cpp文件,控制调用函数。

    #include "snake.h"
    
    //Transposed structure object
    extern  struct Food food;
    extern  struct Snake snake;
    
    //main function
    int main()
    {
        ret = menu();
        if (ret == 1)
        {
            while (finish)
            {
                initMap();                                                                    //Initialization map
                while (TRUE)
                {
                    updataFood();                                                        //updata food
                    getSpeed();                                                            //speed
                    moveSnake();                                                        //move snake
                    Sleep(snake.speed);                                                    //Control the speed of the snake
                    printFont(FONT_WINDOW_STARTX, FONT_WINDOW_STARTY, snake.speed);        //Right interface
                    if (!(isAlive()))
                        break;
                }
                if (finish)                                                                    //Death or customs clearance
                {
                    system("cls");
                    gotoxy(22, 5);
                    printf("Game Over!");
                    gotoxy(24, 5);
                    printf("按(1)键退出游戏,按其他任意键重玩");
                    if (getch() == 49)
                        break;
                    system("cls");
                }
                else
                {
                    system("cls");
                    gotoxy(22, 5);
                    printf("恭喜你通关了");
                    gotoxy(24, 5);
                    printf("按(1)键退出游戏,按其他任意键重玩");
                    if (getch() == 49)
                        break;
                    system("cls");
                }
                
            }
            
        }
    
        return 0;
    }

     

    snake.h 主要声明函数和定义变量。

    #pragma once
    #ifndef _SNAKE_H_
    #define _SNAKE_H_
    #include <stdio.h>
    #include <windows.h>
    #include <time.h>
    #include <conio.h>
    #include <time.h>
    #pragma warning(disable: 4996)
    
    
    
    #define FONT_WINDOW_STARTY 41 //define font window 
    #define FONT_WINDOW_STARTX 2
    #define FRAME_HEIGHT 20 //define map size
    #define FRAME_WIDTH 40
    #define UP 'w' //define operate key
    #define DOWN 's'
    #define LEFT 'a'
    #define RIGHT 'd'
    #define SNAKE_LEN 50
    #define ADD 3
    
    
    static int i, j, k;
    static char ch = UP; //initial first direction
    static char Direction = UP;
    static int grow = 0; //flag: if snake grow
    static int ret = 0;
    static int finish = 1;
    
    //Structure declaration
    struct Food{
        int x;
        int y;
    };
    struct Snake{
        int x[SNAKE_LEN];
        int y[SNAKE_LEN];
        int len;
        int speed;
    }; //snake[0] is head
    
    
    //Initialization map
    void initMap(void);
    
    //updataFood
    void updataFood(void);
    
    //moveSnake
    void moveSnake(void);
    
    //Judge whether the snake is alive or not
    int isAlive(void);
    
    //get snake speed
    void getSpeed(void);
    
    //move cursor
    void gotoxy(int x, int y);
    
    //Right interface
    void printFont(int x, int y, int speed);
    
    //menu
    int menu();
    
    
    #endif

    snake.cpp文件 主要实现函数功能。

    #include "snake.h"
    
    //Initialization of structure
    struct Food food;
    struct Snake snake;
    
    
    
    //menu
    int menu()
    {
        gotoxy(14, 45);
        printf("欢迎来到贪吃蛇小游戏....");
        gotoxy(16, 45);
        printf("开始游戏请按(1)");
        gotoxy(18, 45);
        printf("按其他任意键退出游戏QAQ");
        int ch = getch();
    
        while (TRUE)
        {
            if (ch == 49)                                    //The ASCII value of 1
            {
                ret = 1;
                break;
            }
            else
            {
                break;
            }
    
    
        }
        system("cls");
        return ret;
    }
    
    //initialize Map
    void initMap(void)
    {
        ch = UP;
        Direction = UP;
        //initial food
        srand(time(NULL));                                    //Set random number seed
        food.x = rand() % (FRAME_HEIGHT - 2) + 1;
        food.y = rand() % (FRAME_WIDTH - 2) + 1;
        gotoxy(food.x, food.y);
        printf("!");
        //initial snake
        snake.x[0] = FRAME_HEIGHT / 2;
        snake.y[0] = FRAME_WIDTH / 2;
        gotoxy(snake.x[0], snake.y[0]);
        printf("@");
        snake.len = 3;
        snake.speed = 200;
        for (k = 1; k<snake.len; k++)
        {
            snake.x[k] = snake.x[k - 1] + 1;
            snake.y[k] = snake.y[k - 1];
            gotoxy(snake.x[k], snake.y[k]);
            printf("@");
        }
        //initial bar
        for (j = 0; j<FRAME_WIDTH; j++)
        {
            gotoxy(0, j);
            printf("#");
            gotoxy(FRAME_HEIGHT - 1, j);
            printf("#");
        }
        for (i = 1; i<FRAME_HEIGHT - 1; i++)
        {
            gotoxy(i, 0);
            printf("#");
            gotoxy(i, FRAME_WIDTH - 1);
            printf("#");
        }
    }
    
    //Right interface
    void printFont(int x, int y, int speed)
    {
        int i = 1;
        gotoxy(x, y);
        printf("召唤师,欢迎来到贪吃蛇峡谷");
    
        gotoxy(x + ADD, y);
        if (speed == 200)
        {
            printf("现在的速度是:%d级", i);
        }
        else if (speed == 100)
        {
            printf("现在的速度等级是:%d级", i + 1);
        }
        else if (speed == 50)
        {
            printf("现在的速度等级是:%d级", i + 2);
        }
        else
        {
            printf("恭喜你,召唤师,现在是最高级");
        }
        gotoxy(x + 2 * ADD, y);
        printf("上下左右操作键分别是:w,s,a,d");
    
        gotoxy(x + 3 * ADD, y);
        printf("当吃到自己身体或者撞墙时游戏结束");
    
        gotoxy(x + 4 * ADD, y);
        printf("按空格键暂停,在按空格键继续");
    }
    
    //generate food
    void updataFood()
    {
        if (snake.x[0] == food.x&&snake.y[0] == food.y)                //When the snake eats food update
        {
            srand(time(NULL));
            food.x = rand() % (FRAME_HEIGHT - 2) + 1;
            food.y = rand() % (FRAME_WIDTH - 2) + 1;
            gotoxy(food.x, food.y);
            printf("!");
    
    
            snake.len++;
            grow = 1;
        }
    }
    
    //move snake
    void moveSnake()
    {
    
        if (!grow)
        {
            gotoxy(snake.x[snake.len - 1], snake.y[snake.len - 1]);
            printf(" ");                            //The tail will be empty
        }
        for (k = snake.len - 1; k>0; k--)
        {
            snake.x[k] = snake.x[k - 1];
            snake.y[k] = snake.y[k - 1];
        }
        if (kbhit())
        {
            ch = getch();
            if (ch == ' ')                                                //Pause or continue by space
            while (getch() != ' '){};
            if (ch != UP && ch != DOWN && ch != LEFT && ch != RIGHT)    //Other keys to prevent interference
            {
                ch = Direction;
                goto sport;
            }
    
            if (Direction != ch)
            {
                if ((Direction == UP &&ch != DOWN) || (Direction == DOWN &&ch != UP) || (Direction == LEFT && ch != RIGHT) || (Direction == RIGHT && ch != LEFT)) //Prevent reverse movement
                {
                    Direction = ch;
                    goto sport;
                }
                else
                {
                    ch = Direction;
                    goto sport;
                }
    
            }
            else
            {
                goto sport;
            }
        }
        else
        {
        sport:
            switch (ch)                            //Move the snake's head
            {
            case UP: snake.x[0]--; break;
            case DOWN:  snake.x[0]++; break;
            case LEFT: snake.y[0]--; break;
            case RIGHT: snake.y[0]++; break;
            default: break;
    
            }
        }
    
        gotoxy(snake.x[0], snake.y[0]);
        printf("@");                            //print the snake's head
        grow = 0;
        gotoxy(FRAME_HEIGHT, 0);
    }
    
    //Judge whether the snake is alive or not
    int isAlive(void)
    {
        if (snake.x[0] == 0 || snake.x[0] == FRAME_HEIGHT - 1 || snake.y[0] == FRAME_WIDTH - 1 || snake.y[0] == 0)   //When you touch a wall or eat your own body, you die
            return 0;
        for (k = 1; k<snake.len; k++)
        if (snake.x[k] == snake.x[0] && snake.y[k] == snake.y[0])
            return 0;
        return 1;
    }
    
    //speed updata
    void getSpeed(void)
    {
        if (snake.len <= 6)
            snake.speed = 200;
        else if (snake.len <= 10)
            snake.speed = 100;
        else if (snake.len <= 20)
            snake.speed = 50;
        else if (snake.len <= 30)
            snake.speed = 30;
        else snake.speed = 20;
        if (snake.len == 40)
            finish = 0;
    }
    
    //move cursor
    void gotoxy(int x, int y)
    {
        HANDLE hout;                                //Defining handle objects
        COORD cor;                                    //Defining coordinate objects
        hout = GetStdHandle(STD_OUTPUT_HANDLE);        //Get the handle of the output screen buffer
        cor.X = y;
        cor.Y = x;
        SetConsoleCursorPosition(hout, cor);        //Move Cursor
    }

    接下来是课程设计的报告。

     

    1. 课程设计目的1

    2. 课程设计的内容1

    3. 课程设计的功能要求1

    3.1. 菜单模块:1

    3.2. 地图初始化模块:1

    3.3. 食物更新模块:1

    3.4. 移动贪吃蛇模块:1

    3.5. 贪吃蛇生命模块:1

    3.7.  获取贪吃蛇速度模块.........................................................................................................1

    3.7.  移动窗口光标模块.............................................................................................................1

    3.8    帮助系统模块.........................................................................................................................................1

    3.8    退出系统模块.........................................................................................................................................1

    4. 概要设计2

    4.1. 系统功能框架图2

    4.2. 功能模块描述2

    5. 详细设计3

    5.1. 各功能模块的具体实现算法——流程图3

    5.1.1. 主控main函数流程图3

    5.2. 重点设计描述3

    6. 系统测试与调试3

    7. 课程设计心得体会4

    参考资料4

     

    1. 课程设计目的

    进一步加深、巩固所学专业课程《C语言程序设计》的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。熟悉使用结构体与时间函数和windows窗口控制函数。

    2. 课程设计的内容

    设计并实现一个贪吃蛇小游戏,要求具有以下功能模块:

    (1) 页面菜单模块。

    (2) 初始化地图模块。

    (3) 食物更新模块。

    (4) 移动贪吃蛇模块。

    (5) 判断贪吃蛇是否存活模块。

    (6) 获取贪吃蛇速度模块

    (7) 移动窗口光标模块。

    (8) 帮助系统模块

    (9) 退出系统模块

    3. 课程设计的功能要求

    3.1. 页面菜单模块:

    ² 开始游戏

    ² 退出游戏

    3.2. 初始化地图模块:

    ² 实现贪吃蛇存在范围(这里用围墙来限定区域)

    ² 初始化贪吃蛇(3单位身体长度)

    ² 初始化食物

    3.3. 食物更新模块:

    ² 在区域内随机刷新食物

    ² 食物不与蛇身体重合

    3.4. 移动贪吃蛇模块:

    ² 根据玩家按键移动贪吃蛇(w,s,a,d)

    ² Space 空格可暂停或继续游戏

    ² 当贪吃蛇前进时按相反方向移动无效

    ² 除了程序控制键之外的其他按键不会影响贪吃蛇

    ² 移动贪吃蛇时不会造成屏幕闪烁BUG

    3.5. 贪吃蛇生命模块:

    ² 当蛇吃到自己身体或者触碰围墙时蛇死亡

    3.6. 获取贪吃蛇速度模块:

    ² 根据蛇的身体长度来设置速度等级

    ² 当身体长度足够长时则通关游戏

     

    3.7. 移动光标模块:

    ² 获取输出流窗口句柄

    ² 定义使用存储坐标结构体

    ² 将坐标与窗口句柄传入函数实现移动光标

     

    3.8. 帮助系统模块:

    ² 提示玩家一些按键控制和游戏规则

     

    3.9. 退出系统模块:

    ² 游戏通关或游戏结束时给予退出或重玩选择

     

     

     

    4. 概要设计

    4.1. 系统功能框架图

     

     

    1 系统功能模块图

    4.2. 各功能模块描述:

    4.3. 页面菜单模块:

    ² 开始游戏

    ² 退出游戏

    4.4. 初始化地图模块:

    ² 实现贪吃蛇存在范围(这里用围墙来限定区域)

    ² 初始化贪吃蛇(3单位身体长度)

    ² 初始化食物

    4.5. 食物更新模块:

    ² 在区域内随机刷新食物

    ² 食物不与蛇身体重合

    4.6. 移动贪吃蛇模块:

    ² 根据玩家按键移动贪吃蛇(w,s,a,d)

    ² Space 空格可暂停或继续游戏

    ² 当贪吃蛇前进时按相反方向移动无效

    ² 除了程序控制键之外的其他按键不会影响贪吃蛇

    ² 移动贪吃蛇时不会造成屏幕闪烁BUG

    4.7. 贪吃蛇生命模块:

    ² 当蛇吃到自己身体或者触碰围墙时蛇死亡

    4.8. 获取贪吃蛇速度模块:

    ² 根据蛇的身体长度来设置速度等级

    ² 当身体长度足够长时则通关游戏

     

    4.9. 移动光标模块:

    ² 获取输出流窗口句柄

    ² 定义使用存储坐标结构体

    ² 将坐标与窗口句柄传入函数实现移动光标

     

    4.10. 帮助系统模块:

    ² 提示玩家一些按键控制和游戏规则

     

    4.11. 退出系统模块:

    ² 游戏通关或游戏结束时给予退出或重玩选择

     

    5. 详细设计

    1. 思想:一条蛇可以看成由许多正方形的“小格子”拼凑成,称作节。节是蛇身上最小的单位。通过移动窗口光标来打印蛇。
    2. 参考资料:《徐飞机博客园》,网上资料,《c语言程序设计》,《windows程序设计》
    3. 基本设计理念:程序关键在于表示蛇的图形及蛇的移动。用一个@字符表示蛇的一节身体,身体每长一节,在身体最后增加一个@。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是吃到食物就在下一个坐标信息加一个@ 没吃到食物就将尾巴置空,蛇头前在加一个@,蛇的XY数组长度为保存蛇每个节点信息食物的出现是先确定一组随机数,再填充方格,食物的消失是由于被蛇身体覆盖,当吃掉食物后就不再重画本次食物,而是生成一组新的随机数,画新的食物当蛇头的位置坐标和围墙的坐标或者自己身体的某个节点的坐标相同时,蛇就死掉了,游戏结束。
    4. 代码模块示意:

    //Initialization map

    void initMap(void);

     

    //updataFood

    void updataFood(void);

     

    //moveSnake

    void moveSnake(void);

     

    //Judge whether the snake is alive or not

    int isAlive(void);

     

    //get snake speed

    void getSpeed(void);

     

    //move cursor

    void gotoxy(int x, int y);

     

    //Right interface

    void printFont(int x, int y, int speed);

     

    //menu

    int menu();

    5.1. 各功能模块的具体实现算法——流程图

    5.1.1. 主控main函数流程图

     

     

     

    2 主控main函数流程图

    5.2. 重点设计描述

    Gotoxy();函数来实现打印贪吃蛇整个程序的光标移动,在里面我们首先获取到输出流缓冲区的窗口句柄,然后在根据结构体存储X,Y坐标信息来实现整个窗口的光标移动

      控制蛇的移动模块moveSnake();这里在下根据grow值来判断是否吃到食物,并实现打印贪吃蛇的移动,贪吃蛇的移动只打印头部和尾部,这样防止了每次刷新页面造成的闪烁。当grow为0的时候代表没有吃到食物,先移动光标到蛇尾将蛇尾置空,然后根据位置信息在蛇头前加一个节点@,代表这个蛇往前移动了一个节点单位。当grow为1时则不对尾部进行操作,直接根据XY数组信息进行添加一个@节点代表蛇的移动。

    另外在移动蛇里我加了一些判断限制,避免了除系统指定按键之外按键的干扰导致程序提前终止,也加了一些过滤判断,比如当蛇向上移动时,不能直接向下移动。

    当按空格键的时候可以实现贪吃蛇游戏的暂停和继续。

     

    6. 系统测试与调试

    在调试贪吃蛇的过程中主要出现以下几个BUG

    第一:一开始调试时连续快速的按某个方向键会使程序崩溃(原因是程序内部没有进行过滤操作),此问题已经解决。

    第二:当贪吃蛇向上移动时,按下方向键程序奔溃游戏结束(原因是无过滤操作),此问题已解决。

    第三:贪吃蛇在移动的时候窗口会不断闪烁,影响游戏体验(原因是每次都打印一条蛇,导致整个窗口刷新),此问题已解决。

    第四:有时蛇的长度会自己增加(原因食物出现与身体重合),此问题已经解决。

    第五:主main函数文件调用其他文件变量时无法调用(原因没有用extern进行转置跨文件调用)

    7. 课程设计心得体会

    通过这次课程设计,我对c语言又有了更深刻的认识。也有了更深一步的喜爱,决定一定要努力学好c语言,并能更好的应用于以后的学习工作中。 
    这次贪吃蛇的设计,做的不是很完美,也没想象中的那么好,但也获得了许多宝贵的经验:

    1) 在设计程序之前,务必要对自己所要设计的题目和内容有一个系统的,大概的了解,知道所设计的题目和内容包含哪些资源。 
    2) 设计程序采用什么编程语言并不是非常重要,关键是要有一个清晰的思路和一个完整的软件流程图,所有要先把设计原理与思路搞清楚,再把流程图画出来,这样设计起来就简单多了。

     

    参考资料

    [1] Windows程序设计

    [2] c语言程序设计

     

     

    转载于:https://www.cnblogs.com/DOMLX/p/8846529.html

    展开全文
  • C语言课程设计报告

    2018-06-24 12:03:54
    简单的关于c语言五子棋游戏课程设计报告,关于基础的c语言知识
  • C语言编写软件完成以下任务: 由计算机随机产生一个4位整数,请人猜这四位整数是多少,其过程保存在文件data.dat中。人输入一个四位数后,计算机首先判断其中有几位猜对了,并且对的数字中有几位位置也正确,例如...
  • C1 / 10 C 语言课程设计--黄金矿工一、实验内容玩家通过键盘的按键控制矿工抓取金块,将钩子碰触到的金块抓取过来。 要求如下:1. 游戏的初始界面如下图(一),单机键盘上的空格键进入游戏,进入后界面如图(二),金块...
  • 24点 C语言课程设计

    2011-10-28 12:06:24
    C语言课程设计,就是常玩的24点。简单的游戏,C语言设计却不是一件简单的事,可以直接使用,但没有文档。
  • C语言课程设计贪吃蛇

    2016-11-07 23:30:36
    C语言课程设计 可直接运行的贪吃蛇源代码及实验报告文档 #include #include #include //MAXWIDTH、MAXHEIGHT、INITLEN 以字符记 #define MAXWIDTH (30) #define MAXHEIGHT MAXWIDTH struct{ char *ch; int ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,656
精华内容 5,462
关键字:

c语言课程设计游戏类

c语言 订阅