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語言的論文如何寫呀
論文寫作,先不說內容,首先格式要正確,一篇完整的畢業論文,題目,摘要(中英文),目錄,正文(引言,正文,結語),致謝,參考文獻。學校規定的格式,字體,段落,頁眉頁腳,開始寫之前,都得清楚的,你的論文算是寫好了五分之一。
然後,選題,你的題目時間寬裕,那就好好考慮,選一個你思考最成熟的,可以比較多的閱讀相關的參考文獻,從裡面獲得思路,確定一個模板性質的東西,照著來,寫出自己的東西。如果時間緊急,那就隨便找一個參考文獻,然後用和這個參考文獻相關的文獻,拼出一篇,再改改。
正文,語言必須是學術的語言。一定先列好提綱,這就是框定每一部分些什麼,保證內容不亂,將內容放進去,寫好了就。
參考文獻去中國知網搜索,校園網免費下載。
合適採納