c语言课程设计贪吃蛇


    




    XX 学
    C语言程序设计 课程设计(文)


    题目: 贪吃蛇




    院(系): 软件学院
    专业班级:
    学 号:
    学生姓名:
    指导教师:
    教师职称:
    起止时间:2010122020101231




    课程设计(报告)务评语
    院(系):软件学院 教研室:软件教研窒
    学 号

    学生姓名

    专业班级

    程序设计(报告)题目
    贪吃蛇
    程序设计(报告)务

    程序设计务求:
    (1)掌握C语言编程基础知识
    (2)较熟练编写C语言应程序
    (3)解C语言常标准函数编程技巧异常处理
    (5)联系已学容巩固学理增强独立工作力
    (6)通设计学生独立编写程序程理学动手力提高
    (7)通次设计进步培养学生热爱专业思想时专业综合素质提高起积极推动作
    课程设计程中严格遵守实践环节时间安排听指导教师指导正确完成述容记录实日记规范完整撰写出课程设计报告

    指导教师评语成绩











    成绩: 指导教师签字:

    2011 年 X 月 X 日


    目 录
    第1章 课程设计目求 1
    11 课程设计目 1
    12 课程设计实验环境 1
    13 课程设计预备知识 1
    14 课程设计求 1
    第2章 课程设计容 2
    21程序功介绍 2
    22程序整体设计说明 2
    221设计思路 2
    222数结构设计法说明 3
    223程序结构(流程图) 4
    224模块功程序说明 5
    225程序结果 5
    23程序源代码注释 6
    第3章 课程设计总结 15
    参考资料 ……………………………………………………………………………………17

    第1章 课程设计目求
    11 课程设计目
    课程设计计算机科学技术专业重实践性环节学生学完程序设计语言(C)课程进行次全面综合练课程设计目务:
    1 巩固加深学生C语言课程基知识理解掌握
    2 掌握C语言编程程序调试基技
    3 利C语言进行基软件设计
    4 掌握书写程序设计说明文档力
    5 提高运C语言解决实际问题力
    12 课程设计实验环境
    硬件求运行Windows 2000XP操作系统微机系统C语言程序设计相应开发环境
    13 课程设计预备知识
    熟悉C语言C语言开发工具
    14 课程设计求
    1 分析课程设计题目求
    2 写出详细设计说明
    3 编写程序代码调试程序正确运行
    4 设计完成软件便操作
    5 设计完成提交课程设计报告

    第2章 课程设计容
    21程序功介绍
    贪吃蛇游戏封闭围墙里机出现食物通键盘左右四光标键控制蛇移动方蛇头撞倒食物食物吃掉蛇身体长节时记10分果蛇移动中撞墙身体交叉蛇头撞身体游戏结束
    22程序整体设计说明
    221设计思路
    矩形块表示蛇节身体增加矩形块蛇身长节蛇头俩节表示必须蛇头开始移动蛇相反方移动果光标键蛇行前方前移动效方键蛇头着该方移动步移动节身体效方键应先确定蛇头位置然蛇身体蛇头移动图形实现蛇头新位置开始画出蛇时未清屏原原蛇位置新蛇位置相差单位起蛇会节身体蛇节背景色覆盖食物出现消失画矩形块覆盖矩形块便理解定义两结构体:食物蛇表示食物蛇矩形块设计10*10素单位食物基数域出现位置xy座标表示矩形块函数rectangle(xyx+10y+10)rectangle(xyx+10y10)画出次出现食物设定yes表示否出现食物蛇节身体矩形块表示矩形块需起点座标xy身体断增长数组存放节座标设定N200node表示前节数保存蛇移动方变量direction生命变量life旦life1表示蛇死游戏结束



    222数结构设计法说明
    int key
    键获
    int score0

    int gamespeed50000
    游戏速度调整
    struct Food
    {
    int x
    食物横坐标
    int y
    食物坐标
    int yes
    判断否出现食物变量
    }food
    食物结构体
    struct Snake
    {
    int x[N]
    int y[N]
    int node
    蛇节数
    int direction
    蛇移动方
    int life
    蛇生命0活着1死亡
    }snake
    223程序结构(流程图)

    224模块功程序说明
    函数定义常数全局变量函数原型说明初始化图形系统调drawk()画开始画面调gameplay()关闭图形系统成语结束画界面函数drawk 面封闭围墙两循环语句分水垂直方输出连续宽度高度均10单位矩形方块表示围墙函数setlinestyle(solidlinethickwidth)设置线形宽度3素设置3素围墙线游戏函数gameplay()次移动时重节倒数第2节前节坐标付节坐标移动节颜色覆盖然蛇头方键更改位置游戏结束函数gameover()函数结束清屏输出分数显示游戏结束信息Prscore()输出分数指定位置Prscore()整数转字符串outtextxy()函数输出void main() 游戏程序
    算法:(1)设置初始值食物设置机数发生器初始时蛇蛇头设定开始方(2)循环执行esc退出1)没键时循环执行没食物机出现食物食物显示食物蛇移动身体根蛇移动方改变坐标判断蛇否撞墙蛇死调结束函数gameover()结束游戏重新开始蛇吃食物蛇身体长节数组元素增加身体节数分数增加新位置画出蛇2)果键识键值键ESC结束游戏键方键根该键改变代表蛇方变量direction值反方键效游戏结束函数gameover()游戏结束清屏输出分数显示游戏结束信息prscore()输出分数指定位置sprintf()整数转字符串outtextxy()输出bar()函数处覆盖原值close()图形结束显示游戏结束信息画面时意键关闭图形系统程序结束
    225程序结果
    图贪吃蛇运行图运行中方键左右控制蛇身运行方蛇吃食物蛇身加长继续游戏蛇身体交叉蛇头撞身体撞墙蛇死游戏结束
    图2251图2252示

    图2251 贪吃蛇运行图

    图2252贪吃蛇运行结果图

    23程序源代码注释
    #define N 200
    #include
    #include
    #include
    #define LEFT 0x4b00
    #define RIGHT 0x4d00
    #define DOWN 0x5000
    #define UP 0x4800
    #define ESC 0x011b
    int ikey
    int score0
    *分*
    int gamespeed50000
    *游戏速度调整*
    struct Food
    {
    int x
    *食物横坐标*
    int y
    *食物坐标*
    int yes
    *判断否出现食物变量*
    }food
    *食物结构体*
    struct Snake
    {
    int x[N]
    int y[N]
    int node
    *蛇节数*
    int direction
    *蛇移动方*
    int life
    * 蛇生命0活着1死亡*
    }snake
    void Init(void)
    *图形驱动*
    void Close(void)
    *图形结束*
    void DrawK(void)
    *开始画面*
    void GameOver(void)
    *结束游戏*
    void GamePlay(void)
    *玩游戏具体程*
    void PrScore(void)*输出成绩*
    *函数*
    void main(void)
    {
    Init()
    *图形驱动*
    DrawK()
    *开始画面*
    GamePlay()
    *玩游戏具体程*
    Close()
    *图形结束*
    }
    *图形驱动*
    void Init(void)
    {
    int gdDETECTgm
    registerbgidriver(EGAVGA_driver)
    initgraph(&gd&gmc\\program files\\winyes\\tc20h\\bgi)
    cleardevice()
    }
    *开始画面左角坐标(5040)右角坐标(610460)围墙*
    void DrawK(void)
    {
    *setbkcolor(LIGHTGREEN)*
    setcolor(11)
    setlinestyle(SOLID_LINE0THICK_WIDTH)
    *设置线型*
    for(i50i<600i+10)
    *画围墙*
    {
    rectangle(i40i+1049)
    *边*
    rectangle(i451i+10460)
    *边*
    }
    for(i40i<450i+10)
    {
    rectangle(50i59i+10)
    *左边*
    rectangle(601i610i+10)
    *右边*
    }
    }
    *玩游戏具体程*
    void GamePlay(void)
    {
    randomize()
    *机数发生器*
    foodyes1
    *1表示需出现新食物0表示已存食物*
    snakelife0
    *活着*
    snakedirection1
    *方右*
    snakex[0]100snakey[0]100
    *蛇头*
    snakex[1]110snakey[1]100
    snakenode2
    *节数*
    PrScore()
    *输出分*
    while(1)
    *重复玩游戏压ESC键结束*
    {
    while(kbhit())
    *没键情况蛇移动身体*
    {
    if(foodyes1)
    *需出现新食物*
    {
    foodxrand()400+60
    foodyrand()350+60
    while(foodx100)
    *食物机出现必须食物够整格样蛇吃*
    foodx++
    while(foody100)
    foody++
    foodyes0
    *画面食物*
    }
    if(foodyes0)
    *画面食物显示*
    {
    setcolor(GREEN)
    rectangle(foodxfoodyfoodx+10foody10)
    }
    for(isnakenode1i>0i)
    *蛇环节前移动贪吃蛇关键算法*
    {
    snakex[i]snakex[i1]
    snakey[i]snakey[i1]
    }
    *1234表示右左四方通判断移动蛇头*
    switch(snakedirection)
    {
    case 1snakex[0]+10break
    case 2 snakex[0]10break
    case 3 snakey[0]10break
    case 4 snakey[0]+10break
    }
    for(i3i*蛇第四节开始判断否撞蛇头两节第三节拐*
    {
    if(snakex[i]snakex[0]&&snakey[i]snakey[0])
    {
    GameOver()
    *显示失败*
    snakelife1
    break
    }
    }
    if(snakex[0]<55||snakex[0]>595||snakey[0]<55||
    snakey[0]>455)
    *蛇否撞墙壁*
    {
    GameOver()
    *次游戏结束*
    snakelife1
    *蛇死*
    }
    if(snakelife1)
    *两种判断果蛇死跳出循环重新开始*
    break
    if(snakex[0]foodx&&snakey[0]foody)
    *吃食物*
    {
    setcolor(0)
    *画面食物东西掉*
    rectangle(foodxfoodyfoodx+10foody10)
    snakex[snakenode]20snakey[snakenode]20
    *新节先放见位置次循环取前节位置*
    snakenode++
    *蛇身体长节*
    foodyes1
    *画面需出现新食物*
    score+10
    PrScore()
    *输出新分*
    }
    setcolor(4)
    *画出蛇*
    for(i0i rectangle(snakex[i]snakey[i]snakex[i]+10
    snakey[i]10)
    delay(gamespeed)
    setcolor(0)
    *黑色蛇节*
    rectangle(snakex[snakenode1]snakey[snakenode1]
    snakex[snakenode1]+10snakey[snakenode1]10)
    } *endwhile(kbhit)*
    if(snakelife1)
    *果蛇死跳出循环*
    break
    keybioskey(0)
    *接收键*
    if(keyESC)
    *ESC键退出*
    break
    else
    if(keyUP&&snakedirection4)
    *判断否相反方移动*
    snakedirection3
    else
    if(keyRIGHT&&snakedirection2)
    snakedirection1
    else
    if(keyLEFT&&snakedirection1)
    snakedirection2
    else
    if(keyDOWN&&snakedirection3)
    snakedirection4
    }*endwhile(1)*
    }
    *游戏结束*
    void GameOver(void)
    {
    cleardevice()
    PrScore()
    setcolor(RED)
    settextstyle(004)
    outtextxy(200200GAME OVER)
    getch()
    }
    *输出成绩*
    void PrScore(void)
    {
    char str[10]
    setfillstyle(SOLID_FILLYELLOW)
    bar(501522035)
    setcolor(6)
    settextstyle(002)
    sprintf(strscoredscore)
    outtextxy(5520str)
    }
    *图形结束*
    void Close(void)
    {
    getch()
    closegraph()
    }
    
    第3章 课程设计总结
    通次课程设计学关计算机方面知识时通次实际操作C语言更进步解更加喜欢学科样次锻炼机会
    课程设计培养学生综合运学知识发现提出分析解决实际问题锻炼实践力重环节学生实际工作力具体训练考察程着科学技术发展日新月异计算机应生活中说处作二十世纪学说掌握计算机开发技术十分重设计程中遇问题说困难重重毕竟第次做难免会遇种样问题时次课程设计中认识做程序设计项工作中具备素质:1强团队精神协作力文档惯相信车山前必路说法认懒惰者寻懒惰口积极握努力做仅已力觉程序段必太高级天事高低分决定优劣集体中某部分强弱起决定作组合元素谐集体中发挥长处避免短处集体实际组合量优良文档正规研发流程中非常重环节缺乏文档软件系统缺乏生命力未查错升级模块复时会遇极麻烦外编程项高精度工作规范化标准化代码编写惯通次编程深深感受代码变量命名代码注释格式甚嵌套中行缩进长度函数间空行数字明确规定良编写惯助代码移植纠错助员间协作2模块化思维力模块化思维编程功模块函数时候想局限完成前务简单思路想想该模块否脱离系统存否通简单修改参数方式系统应环境直接引样极避免重复性开发工作3学总结善总结学力种体现次完成编程务段代码应目踪该程序应状况时总结找足样编写程序逐步提高生活样汗水预示着结果见证着收获课程设计程中学生哲理懂样制定计划样实现计划掌握执行程中样克服心理良情绪黑夜收获黎明次实际操作必成生旅途非常美回忆
    通次文设计初步学会文设计基方法学会样鉴方法验知道查找资料整合处理资料学毕业设计文初步基础获益享受种成功喜悦两星期中开始确定做文题目然网图书馆查找资料编写C语言原程序进行编译环节非常痛苦艰难常常会点错误编译失败然次修改失败次数越考验越编译程序运行成功享受成功喜悦越外调试程序程中断思考运已学知识提高

    参考资料
    [1] 姜仲秋C语言程序设计基础南京南京学出版社1998
    [2] 张颖江C语言程序设计北京科学出版社1998
    [3] 李友C语言程序设计基础北京清华学出版社1999
    [4] 谭浩强C语言程序设计北京清华学出版社2000
    [5] 钱启C语言程序设计基础北京中国铁道出版社2000
    [6] 胡元义邓亚玲等数结构(c语言)实践教程西安电子科技学出版社2007
    [7] 鲁沐浴C语言新编程技巧200例电子工业出版社2008
    [8] 李春葆 张植民 肖忠付C语言程序设计题典清华学出版社2006
    [9] 刑馥生刘志远姜德森C语言程序设计应高等教育出版社2008
    [10] 徐金梧杨德斌TURBO C实全机械工业出版社2009
    [11] 朱战立数结构—c语言西安交通学出版社2005
    [12] 刘变红C语言高级编程实例剖析 民邮电出版社2008
    [13] 徐德民新C语言程序设计北京电子工业出版社2008
    [14] 科钦C语言程序设计北京电子工业出版社2010
    [15] 李成付C语言程序设计基础北京科学出版社2008
    辽ning工业学

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    C++语言课程设计一迷你高尔夫

    C++语言课程设计一迷你高尔夫一、实验内容 玩家通过按下键盘上的上下左右方向键控制球的移动,使其最终到达出口则游戏通关。 要求如下:1、 游戏分成3关,第一关、第二关、第三关界面图如下:第一关...

    3年前   
    607    0

    2021年c语言课程设计小结

     2021年c语言课程设计小结撰写人:___________日 期:___________2021年c语言课程设计小结关键词:图书管理系统关系模型功能模块随着社会的进步与发展,资源高效利用提...

    3年前   
    597    0

    C语言课程设计学生考勤系统

    设计任务:C语言课程设计任务书题目:学生考勤系统设计功能:学生考勤系统应包含各班学生的全部信息。每个学生是一条记录,包括姓名、性别、学号、出勤情况等。本系统可模拟考勤过程,记录考勤结果,并能够...

    2年前   
    521    0

    c语言课程设计总结5篇

    c语言课程设计总结5篇c语言课程设计总结(一):  c语言课程设计总结心得  经过一个学期的学习,我对C语言有了必须的了解。C语言是学习计算机科学的基础,作为一名计算机专业学生,掌握C语言更是...

    3年前   
    1289    0

    C语言课程设计通讯录管理系统

     课程设计报告书 课程名称: C语言课程设计 班 级: 学 号: ...

    5年前   
    2398    0

    C语言课程设计学生通讯录管理系统设计

    C语言课程设计学生通讯录管理系统设计一、题目内容的描述学生通讯录管理系统设计设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类...

    4年前   
    720    0

    C语言课程设计学校运动会管理系统

    C语言课程设计 学 校 运 动 会 管理系统代码有误运行不了 专业:网络工程 班级: 报告人: ...

    1年前   
    231    0

    数据结构课程设计运动会分数统计(C语言版)

    数据结构课程设计运动会分数统计(C语言版)目 录第一章 绪 论 1 1.1 运动会分数统计系统的背景 1 1.2 运动会分数统计系统的任务和目标 1第二章 运动会分数统...

    3年前   
    637    0

    C语言代码大全

     乘法口诀表 #include <stdio.h> #include <conio.h> void main(void) { int i,j,x,y; clrscr(); pr...

    5年前   
    1757    0

    专升本C语言题及答案

    C语言精编100题一、单选题1. 由C语言编写的代码程序( )A. 可直接执行 B. 是一个源程序C. 经过编译即可执行 D. 经过编译解释才能执行2. 按照C语言规...

    3年前   
    1167    0

    (1小时学会C语言51单片机)C语言入门教程

    △Victor Hugo 维克多?雨果相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。...

    4年前   
    740    0

    C课程设计题目及要求

    课程设计题目 选题一: 学生信息管理系统设计 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。(测试数据不少5个人,可以用本班同学的具体数据为背景) 软件由下...

    7年前   
    3873    0

    51单片机秒表计时器课程设计报告(含C语言程序)课程设计

    XXXXXX学院 51单片机系统设计 课程设计报告题 目: 秒表系统设计 专业、班级: 学...

    2年前   
    441    0

    数据结构(C语言版)课程设计报告表达式求值说明书

    XX大学数据结构课程设计说明书题目: 表达式求值 院 系: 计算机科学与工程学院 专业班级: 计算机班 学...

    3年前   
    536    0

    笔记本电脑销售管理系统C语言课程设计实验

    笔记本电脑销售管理系统要求:实验6 笔记本电脑销售管理系统笔记本电脑销售信息包括:产品名称、品牌、产品型号、销售数量、进价、库存数量、售价、总金额(销售数量*售价)。系统的主要功能包括:1.创...

    2年前   
    439    0

    嵌入式ARM的贪吃蛇游戏课程设计

    成 绩 评 定 表学生姓名班级学号专 业测控课程设计题目基于ARM的贪吃蛇游戏设计评语组长签字:成绩日期 20 年 月 日课程设计任务书学 院信息科学与工程...

    1年前   
    311    0

    电脑编程 所有C语言题库

    试卷编号:2203所属语言:C语言试卷方案:所有C语言题库试卷总分:1220分共有题型:1种一、程序填空 共122题 (共计1220分)第1题 (10.0分) 题号:558 ...

    4年前   
    949    0

    技能高考专题:C语言练习

    第1题 (20.0分) 题号:332 难度:难 第3章/*----------------------------------------------...

    3年前   
    618    0

    c语言实验报告

    c语言实验报告  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:__________    成...

    11年前   
    791    0

    C语言上机题库WORD版

    C语言习题集3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。输入格式:B输出格式:26#include<stdio.h>int main...

    3年前   
    874    0

    文档贡献者

    文***品

    贡献于2021-07-02

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档