A. 求c语言的贪吃蛇毕业论文、毕业设计
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <time.h>
const int H = 8; //地图的高
const int L = 16; //地图的长
char GameMap[H][L]; //游戏地图
int key; //按键保存
int sum = 1, over = 0; //蛇的长度, 游戏结束(自吃或碰墙)
int dx[4] = {0, 0, -1, 1}; //左、右、上、下的方向
int dy[4] = {-1, 1, 0, 0};
struct Snake //蛇的每个节点的数据类型
{
int x, y; //左边位置
int now; //保存当前节点的方向, 0,1,2,3分别为左右上下
}Snake[H*L];
const char Shead = '@'; //蛇头
const char Sbody = '#'; //蛇身
const char Sfood = '*'; //食物
const char Snode = '.'; //'.'在地图上标示为空
void Initial(); //地图的初始化
void Create_Food(); //在地图上随机产生食物
void Show(); //刷新显示地图
void Button(); //取出按键,并判断方向
void Move(); //蛇的移动
void Check_Border(); //检查蛇头是否越界
void Check_Head(int x, int y); //检查蛇头移动后的位置情况
int main()
{
Initial();
Show();
return 0;
}
void Initial() //地图的初始化
{
int i, j;
int hx, hy;
system("title 贪吃蛇"); //控制台的标题
memset(GameMap, '.', sizeof(GameMap)); //初始化地图全部为空'.'
system("cls");
srand(time(0)); //随机种子
hx = rand()%H; //产生蛇头
hy = rand()%L;
GameMap[hx][hy] = Shead;
Snake[0].x = hx; Snake[0].y = hy;
Snake[0].now = -1;
Create_Food(); //随机产生食物
for(i = 0; i < H; i++) //地图显示
{
for(j = 0; j < L; j++)
printf("%c", GameMap[i][j]);
printf("\n");
}
printf("\n小小C语言贪吃蛇\n");
printf("按任意方向键开始游戏\n");
getch(); //先接受一个按键,使蛇开始往该方向走
Button(); //取出按键,并判断方向
}
void Create_Food() //在地图上随机产生食物
{
int fx, fy;
while(1)
{
fx = rand()%H;
fy = rand()%L;
if(GameMap[fx][fy] == '.') //不能出现在蛇所占有的位置
{
GameMap[fx][fy] = Sfood;
break;
}
}
}
void Show() //刷新显示地图
{
int i, j;
while(1)
{
_sleep(500); //延迟半秒(1000为1s),即每半秒刷新一次地图
Button(); //先判断按键在移动
Move();
if(over) //自吃或碰墙即游戏结束
{
printf("\n**游戏结束**\n");
printf(" >_<\n");
getchar();
break;
}
system("cls"); //清空地图再显示刷新吼的地图
for(i = 0; i < H; i++)
{
for(j = 0; j < L; j++)
printf("%c", GameMap[i][j]);
printf("\n");
}
printf("\n小小C语言贪吃蛇\n");
printf("按任意方向键开始游戏\n");
}
}
void Button() //取出按键,并判断方向
{
if(kbhit() != 0) //检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
{
while(kbhit() != 0) //可能存在多个按键,要全部取完,以最后一个为主
key = getch(); //将按键从控制台中取出并保存到key中
switch(key)
{ //左
case 75: Snake[0].now = 0;
break;
//右
case 77: Snake[0].now = 1;
break;
//上
case 72: Snake[0].now = 2;
break;
//下
case 80: Snake[0].now = 3;
break;
}
}
}
void Move() //蛇的移动
{
int i, x, y;
int t = sum; //保存当前蛇的长度
//记录当前蛇头的位置,并设置为空,蛇头先移动
x = Snake[0].x; y = Snake[0].y; GameMap[x][y] = '.';
Snake[0].x = Snake[0].x + dx[ Snake[0].now ];
Snake[0].y = Snake[0].y + dy[ Snake[0].now ];
Check_Border(); //蛇头是否越界
Check_Head(x, y); //蛇头移动后的位置情况,参数为: 蛇头的开始位置
if(sum == t) //未吃到食物即蛇身移动哦
for(i = 1; i < sum; i++) //要从蛇尾节点向前移动哦,前一个节点作为参照
{
if(i == 1) //尾节点设置为空再移动
GameMap[ Snake[i].x ][ Snake[i].y ] = '.';
if(i == sum-1) //为蛇头后面的蛇身节点,特殊处理
{
Snake[i].x = x;
Snake[i].y = y;
Snake[i].now = Snake[0].now;
}
else //其他蛇身即走到前一个蛇身位置
{
Snake[i].x = Snake[i+1].x;
Snake[i].y = Snake[i+1].y;
Snake[i].now = Snake[i+1].now;
}
GameMap[ Snake[i].x ][ Snake[i].y ] = '#'; //移动后要置为'#'蛇身
}
}
void Check_Border() //检查蛇头是否越界
{
if(Snake[0].x < 0 || Snake[0].x >= H
|| Snake[0].y < 0 || Snake[0].y >= L)
over = 1;
}
void Check_Head(int x, int y) //检查蛇头移动后的位置情况
{
if(GameMap[ Snake[0].x ][ Snake[0].y ] == '.') //为空
GameMap[ Snake[0].x ][ Snake[0].y ] = '@';
else
if(GameMap[ Snake[0].x ][ Snake[0].y ] == '*') //为食物
{
GameMap[ Snake[0].x ][ Snake[0].y ] = '@';
Snake[sum].x = x; //新增加的蛇身为蛇头后面的那个
Snake[sum].y = y;
Snake[sum].now = Snake[0].now;
GameMap[ Snake[sum].x ][ Snake[sum].y ] = '#';
sum++;
Create_Food(); //食物吃完了马上再产生一个食物
}
else
over = 1;
}
B. 求一篇基于C语言的计算机毕业论文,要求有源程序
机顶盒上游戏开发可以么,也是用C语言写的
目 录
第一章 绪论 1
1.1机顶盒的产生背景 1
1.2机顶盒的发展及其现状 1
1.3游戏模块设计的必要性 2
1.4模块设计需要解决的问题 3
第二章 系统开发环境及相关技术介绍 4
2.1 XX-XX硬件平台 4
2.2 XX操作系统 4
2.2.1 内核 4
2.2.2 任务机制 5
2.2.3 消息队列 6
2.2.4 信号量 7
2.3 C语言的特点 7
第三章 开发流程 9
3.1 功能需求分析 9
3.2 可行性分析 9
3.3 模块设计 10
3.4 编码 10
3.5 测试 11
第四章 系统设计 12
4.1游戏模块接口设计 12
4.1.1游戏的初始化 12
4.1.2游戏的按键读取和转化 12
4.1.3游戏的暂停、恢复和退出 12
4.2 游戏算法设计 13
4.2.1推箱子游戏设计 13
4.2.2 俄罗斯方块游戏设计 14
4.2.3 黑白棋游戏设计 14
结 论 16
谢 辞 17
参 考 文 献 18
附录 推箱子游戏源程序 19
C. 计算机应用技术毕业论文(C语言编程)
Abstract
With the development of the small supermarket scale extending continuously, nasty play of the merchandise quantity increases and concerning various information quantity of the merchandise also becomes doubly long. The supermarket needs to carry on statistic sing the analysis to various information of merchandise every moment, the statement, monthly bulletin form, the annual report form of everyday, management of employee"s information, etc. But the function of the large supermarket management is so strong that it causes the operation tedious and reces the working efficiency of the small supermarket. This system is one of the most popular systems for supermarkets on the market. It mainly includes the following moles: the setting of the system legal power, the inputting of original data, the gathering and searching of the data .etc. Thus, it makes Invoicing and Inventory information"s Management System in a total, dynamic and timely way.
The paper systematically analyses the system development background and development process. Firstly, the paper introce the software development circumstance, secondly, it discussed the system development detailed design process which includes database designing, function blocks designing and implement and interface designing as well. Finally, I summarize some problems that met ring the course of development.
目 录
摘要 I
ABSTRACT II
1 绪论
1.1 课题背景 1
1.2 课题研究的目的和意义 2
1.3 国内外概况 2
1.4 方案和可行性分析 3
2 系统开发的概述和理论
2.1 SQL SERVER 2000 简介 4
2.2 VISUAL BASIC 6.0 简介 5
2.3 数据库技术 5
2.4 面向对象的程序设计介绍 6
2.5系统开发理论介绍 7
3 系统总体设计
3.1 系统功能分析及功能的实现 9
3.2 数据库设计 11
3.3 系统运行环境 12
4 系统详细设计
4.1 系统功能总括 14
4.2 模块的详细设计 16
4.3 系统功能模块实现 37
4.4 系统的问题与调试 37
5 总结与展望 39
致谢 41
参考文献 42
QQ:191209791
D. 求C语言的贪吃蛇毕业论文
#include<stdio.h>#include<graphics.h>#include<stdlib.h>#include<dos.h>/*引用的库函数*/#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800#defineESC0x011b/*宏定义键名*/#defineN200inti,key;intlevel;/*游戏等级*/intscore=0;/*得分*/intgamespeed;/*游戏速度*/structFood{intx;/*食物的横坐标*/inty;/*食物的纵坐标*/intyes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/structSnake{intx[N];inty[N];intnode;/*蛇的节数*/intdirection;/*蛇移动方向*/intlife;/*蛇的生命,0活着,1死亡*/}snake;/*蛇的结构体*/voidChoicelevle(void);/*选择游戏等级*/voidInit(void);/*图形驱动*/voidClose(void);/*图形结束*/voidDRAW(void);/*游戏区域*/voidGameOver(void);/*结束游戏*/voidGamePlay(void);/*玩游戏具体过程*/voidPrScore(void);/*输出成绩*//*主函数*/voidmain(void){Init();/*图形驱动*/Choicelevle();/*选择游戏等级*/DRAW();/*游戏区域*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/voidInit(void){intgd=DETECT,gm;initgraph(&gd,&gm,"\turboc2");/*初始化图形系统*/cleardevice();/*清除图形界面*/}/*选择游戏等级*/voidChoicelevle(void){charname[20];setcolor(YELLOW);settextstyle(0,0,6);outtextxy(150,150,"Snake");setcolor(GREEN);settextstyle(0,0,1);outtextxy(200,250,"pleaseputinyourEnglishname:");outtextxy(200,270,"Choicelevlefrom1-9.");outtextxy(300,320,"name:yangzilong");/*制作人姓名*/outtextxy(300,350,"number:0902060226");/*制作人学号*/outtextxy(300,380,"class:computerscience0602");/*制作人班级*/getch();printf("pleaseputinyourname:");gets(name);printf("pleasechoicelevle:");scanf("%d",&level);gamespeed=100000-400*level-300*level*level;if(level>9||level<1){cleardevice();/*清除图形界面*/setcolor(YELLOW);/*设置字体颜色*/settextstyle(0,0,2);/*设置字体类型*/outtextxy(150,200,"levelinputerror");/*显示文本*/getch();level=1;}}voidDRAW(void){cleardevice();/*清屏*/setcolor(2);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/rectangle(45,45,465,325);}/*玩游戏具体过程*/voidGamePlay(void){setcolor(5);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x[0]=320;snake.y[0]=240;/*蛇头*/snake.x[1]=330;snake.y[1]=240;/*蛇的第二节位置*/snake.node=3;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{if(food.yes==1)/*需要出现新食物*/{food.x=rand()%360+70;food.y=rand()%250+60;while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x++;while(food.y%10!=0)food.y++;food.yes=0;/*画面上有食物了*/}if(food.yes==0)/*画面上有食物了就要显示*/{setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);}for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}/*1,2,3,4表示右,左,上,下四个方向,通过这个控制来移动蛇头*/switch(snake.direction){case1:snake.x[0]+=10;break;case2:snake.x[0]-=10;break;case3:snake.y[0]-=10;break;case4:snake.y[0]+=10;break;}for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/{if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){GameOver();/*显示失败*/snake.life=1;/*蛇死*/break;}}/*如果蛇头碰到墙壁,蛇头从对面墙出来*/if(snake.x[0]<50){snake.x[0]=450;/*如果蛇头越过左边界,则从右边界进入*/snake.y[0]=snake.y[0];/*纵坐标不变*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];/*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0);/*设置填充模式和颜色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}elseif(snake.x[0]>450){snake.x[0]=50;/*如果蛇头越过右边界,则蛇头从左边界进入*/snake.y[0]=snake.y[0];/*纵坐标不变*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];/*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0);/*设置填充模式和颜色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}elseif(snake.y[0]<60){snake.y[0]=320;/*如果蛇头越过上边界,则从下边界进入*/snake.x[0]=snake.x[0];/*横坐标不变*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];/*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0);/*设置填充模式和颜色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}elseif(snake.y[0]>320){snake.y[0]=60;/*如果蛇头越过下边界,则从上边界进入*/snake.x[0]=snake.x[0];/*横坐标不变*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];/*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0);/*设置填充模式和颜色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}if(snake.life==1)/*如果蛇死就跳出内循环,重新开始*/break;if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/{setcolor(0);/*把画面上的食物东西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);/*用当前线型和颜色画一矩形*/snake.x[snake.node]=-20;snake.y[snake.node]=-20;/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/snake.node++;/*蛇的身体长一节*/food.yes=1;/*画面上需要出现新的食物*/score+=10;/*每吃掉一食物,得分累加10分*/if(score%100==0){level++;gamespeed=100000-400*level-300*level*level;/*每吃掉10食物提升一级,速度加快*/PrScore();/*输出新得分*/setcolor(YELLOW);/*设置字体颜色*/settextstyle(0,0,4);/*设置字体类型*/outtextxy(150,200,"LEVELUP");/*显示文本*/if(level==10){level=1,gamespeed=100000-400*level-300*level*level;}delay(6000000);delay(6000000);delay(6000000);delay(6000000);delay(6000000);delay(6000000);delay(6000000);bar(50,55,455,315);/*bar是表示填充的范围的函数*/}PrScore();/*输出新得分*/}setcolor(4);/*画出蛇*/for(i=0;i<snake.node;i++)rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);delay(gamespeed);/*控制游戏速度*/setcolor(0);rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);}/*endwhile(!kbhit)*//*用黑色去除蛇的的最后一节*/if(snake.life==1)/*如果蛇死就跳出循环*/break;key=bioskey(0);/*接收按键*/if(key==ESC)/*按ESC键退出*/break;elseif(key==UP&&snake.direction!=4)/*判断是否往相反的方向移动*/snake.direction=3;elseif(key==RIGHT&&snake.direction!=2)snake.direction=1;elseif(key==LEFT&&snake.direction!=1)snake.direction=2;elseif(key==DOWN&&snake.direction!=3)snake.direction=4;}/*endwhile(1)*/}/*游戏结束*/voidGameOver(void){cleardevice();/*清屏*/PrScore();setcolor(RED);/*设置字体颜色*/settextstyle(0,0,4);/*设置字体类型*/outtextxy(200,200,"GAMEOVER");/*显示文本*/getch();}/*输出成绩及游戏等级*/voidPrScore(void){charstr1[20];/*设置字符型数组*/setfillstyle(SOLID_FILL,0);bar(50,15,390,35);/*填充矩形框*/setcolor(6);/*设置文本颜色*/settextstyle(0,0,2);/*设置数组显示位置*/sprintf(str1,"score%dlevel%d",score,level);/*显示数组内容*/outtextxy(55,20,str1);setcolor(YELLOW);/*设置字体颜色*/settextstyle(0,0,2);/*设置字体类型*/outtextxy(250,400,"EXIT=ESC");/*显示文本*/}voidClose(void){closegraph();}
E. c语言毕业论文课题做什么比较好 求高手给推荐
如果能力够的话可以写一个自创的小型语言编译器或解释器,保准通过。
具体你可以参考Brainfuck语言的源代码
#include <stdio.h>
#include <stdlib.h>
char g_DataBlock[30000] = {0}; // 堆数据区
char g_CodeSegment[100000]; // BF代码指令区
int g_CodeLen = 0; // 代码指令长度,尾指针
int g_Stack[100]; // 栈,当进入'[',']'时用于维护指令指针
int g_StackLen = 0; // 栈指针
int analysis(); // 解析指令
int main(int argc, char **argv)
{
FILE* fSrcCodeFile; // 用于读去源代码文件
if (argc == 2)
{
fSrcCodeFile = fopen(argv[1], "r");
if (fSrcCodeFile == NULL)
{
perror("fopen");
return 1;
}
while (fread(&g_CodeSegment[g_CodeLen], 1, 1, fSrcCodeFile) == 1)
{// 从源文件中读取代码指令
g_CodeLen++;
}
}
else
{
fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
return 2;
} // end of if (argc == 2)
fclose(fSrcCodeFile);
setbuf(stdout, NULL);
return analysis(); // 解析指令
}
int analysis()
{
int iCurrCodePos = 0; // 当前指令位置
char* pCurrData = g_DataBlock + 10000; // 让当前指针指向数据区10000号单元,以便在指针的前后都是有效操作区域
while (iCurrCodePos < g_CodeLen)
{
switch (g_CodeSegment[iCurrCodePos])
{ // 解析指令动作
case '+': // 当前数据加1
++(*pCurrData);
break;
case '-': // 当前数据减1
--(*pCurrData);
break;
case '>': // 指针右移动,向前移动
++pCurrData;
break;
case '<': // 指针做移动,向后移动
--pCurrData;
break;
case '.': // 数据当前数据
putchar((int)(*pCurrData));
//printf("put:%hd\n",*p);
break;
case ',': // 从IO获取一个输入作为当前数据
*pCurrData = getchar();
break;
case '[': // 循环指令处理
if (*pCurrData)
{// 当前数据不为0,将指令指针压入栈中
g_Stack[g_StackLen++] = iCurrCodePos;
}
else
{ // 当前数据为0,找到与其匹配的']',然后开始执行']'后的指令
int j, k;
for (k = iCurrCodePos, j = 0; k < g_CodeLen; k++)
{
g_CodeSegment[k] == '[' && j++;
g_CodeSegment[k] == ']' && j--;
if (j == 0) // 找到匹配的']', 退出循环
break;
}
if (j == 0)
{ // for循环因找到匹配的']'而退出
iCurrCodePos = k;
}
else
{
fprintf(stderr, "%s:%d\n" ,__FILE__, __LINE__);
return 3;
}
} // end of if(*p)
break;
case ']': // 从栈里获得指令指针,跳转到对应的'['位置
iCurrCodePos = g_Stack[g_StackLen - 1]; // 取出栈顶保存的指令指针,作为当前指针
iCurrCodePos -= 1; // 指令指针后退一位,指向上一条指令。(此处减1的原因的下一条语句要加加—— ++iCurrCodePos;)
--g_StackLen; // 移动栈指针
break;
default:
break;
} // end of switch (g_CodeSegment[iCurrCodePos])
++iCurrCodePos;
} // end of while (iCurrCodePos < g_CodeLen)
return 0;
}
F. C语言的论文如何写呀
论文写作,先不说内容,首先格式要正确,一篇完整的毕业论文,题目,摘要(中英文),目录,正文(引言,正文,结语),致谢,参考文献。学校规定的格式,字体,段落,页眉页脚,开始写之前,都得清楚的,你的论文算是写好了五分之一。
然后,选题,你的题目时间宽裕,那就好好考虑,选一个你思考最成熟的,可以比较多的阅读相关的参考文献,从里面获得思路,确定一个模板性质的东西,照着来,写出自己的东西。如果时间紧急,那就随便找一个参考文献,然后用和这个参考文献相关的文献,拼出一篇,再改改。
正文,语言必须是学术的语言。一定先列好提纲,这就是框定每一部分些什么,保证内容不乱,将内容放进去,写好了就。
参考文献去中国知网搜索,校园网免费下载。
合适采纳