本文目錄一覽:
可以用C語言編寫遊戲嗎?
可以用C語言編寫遊戲的。
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
儘管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標準規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
怎樣用C語言編寫一個小遊戲?
「貪吃蛇」C代碼:
#include stdio.h
#include stdlib.h
#include conio.h
#include time.h
#include Windows.h
#define W 78 //遊戲框的寬,x軸
#define H 26 //遊戲框的高,y軸
int dir=3; //方向變數,初值3表示向「左」
int Flag=0; //吃了食物的標誌(1是0否)
int score=0; //玩家得分
struct food{ int x; //食物的x坐標
int y; //食物的y坐標
}fod; //結構體fod有2個成員
struct snake{ int len; //身長
int speed; //速度
int x[100];
int y[100];
}snk; //結構體snk有4個成員
void gtxy( int x,int y) //控制游標移動的函數
{ COORD coord;
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void gtxy( int x,int y); //以下聲明要用到的幾個自編函數
void csh( ); //初始化界面
void keymove( ); //按鍵操作移動蛇
void putFod( ); //投放食物
int Over( ); //遊戲結束(1是0否)
void setColor(unsigned short p, unsigned short q); //設定顯示顏色
int main( ) //主函數
{ csh( );
while(1)
{ Sleep(snk.speed);
keymove( );
putFod( );
if(Over( ))
{system(「cls」);
gtxy(W/2+1,H/2); printf(「遊戲結束!T__T」);
gtxy(W/2+1,H/2+2); printf(「玩家總分:%d分」,score);
getch( );
break;
}
}
return 0;
}
void csh( ) //初始化界面
{ int i;
gtxy(0,0);
CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下兩行是隱藏游標的設置
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),cursor_info);
for(i=0;i=W;i=i+2) //橫坐標要為偶數,因為這個要列印的字元佔2個位置
{ setColor(2, 0); //設定列印顏色為綠字黑底
gtxy(i,0); printf(“■”); //列印上邊框
gtxy(i,H); printf(“■”); //列印下邊框
}
for(i=1;iH;i++)
{ gtxy(0,i); printf(“■”); //列印左邊框
gtxy(W,i); printf(“■”); //列印右邊框
}
while(1)
{ srand((unsigned)time(NULL)); //初始化隨機數發生器srand( )
fod.x=rand()%(W-4)+2; //隨機函數rand( )產生一個從0到比」(W-4)」小1的數再加2
fod.y=rand()%(H-2)+1; //隨機函數rand( )產生一個從0到比」(H-2)」小1的數再加1
if (fod.x%2==0) break; //fod.x是食物的橫坐標,要是2的倍數(為偶數)
}
setColor(12, 0); //設定列印顏色為淡紅字黑底
gtxy(fod.x,fod.y); printf(“●”); //到食物坐標處列印初試食物
snk.len=3; //蛇身長
snk.speed=350; //刷新蛇的時間,即是移動速度
snk.x[0]=W/2+1; //蛇頭橫坐標要為偶數(因為W/2=39)
snk.y[0]=H/2; //蛇頭縱坐標
setColor(9, 0); //設定列印顏色為淡藍字黑底
gtxy(snk.x[0], snk.y[0]); printf(“■”); //列印蛇頭
for(i=1;isnk.len;i++)
{ snk.x[i]=snk.x[i-1]+2; snk.y[i]=snk.y[i-1];
gtxy(snk.x[i],snk.y[i]); printf(“■”); //列印蛇身
}
setColor(7, 0); //恢復默認的白字黑底
return;
}
void keymove( ) //按鍵操作移動蛇
{ int key;
if( kbhit( ) ) //如有按鍵輸入才執行下面操作
{ key=getch( );
if (key==224) //值為224表示按下了方向鍵,下面要再次獲取鍵值
{ key=getch( );
if(key==72dir!=2)dir=1; //72表示按下了向上方向鍵
if(key==80dir!=1)dir=2; //80為向下
if(key==75dir!=4)dir=3; //75為向左
if(key==77dir!=3)dir=4; //77為向右
}
if (key==32)
{ while(1) if((key=getch( ))==32) break; } //32為空格鍵,這兒用來暫停
}
if (Flag==0) //如沒吃食物,才執行下面操作擦掉蛇尾
{ gtxy(snk.x[snk.len-1],snk.y[snk.len-1]); printf(” “); }
int i;
for (i = snk.len – 1; i 0; i–) //從蛇尾起每節存儲前一節坐標值(蛇頭除外)
{ snk.x[i]=snk.x[i-1]; snk.y[i]=snk.y[i-1]; }
switch (dir) //判斷蛇頭該往哪個方向移動,並獲取最新坐標值
{ case 1: snk.y[0]–; break; //dir=1要向上移動
case 2: snk.y[0]++; break; //dir=2要向下移動
case 3: snk.x[0]-=2; break; //dir=3要向左移動
case 4: snk.x[0]+=2; break; //dir=4要向右移動
}
setColor(9, 0);
gtxy(snk.x[0], snk.y[0]); printf(“■”); //列印蛇頭
if (snk.x[0] == fod.x snk.y[0] == fod.y) //如吃到食物則執行以下操作
{ printf(“\007”); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //007是響鈴
else Flag = 0; //沒吃到食物Flag的值為0
if(snk.speed150) snk.speed= snk.speed+5; //作弊碼,不讓速度無限加快
}
void putFod( ) //投放食物
{ if (Flag == 1) //如吃到食物才執行以下操作,生成另一個食物
{ while (1)
{ int i,n= 1;
srand((unsigned)time(NULL)); //初始化隨機數發生器srand( )
fod.x = rand( ) % (W – 4) + 2; //產生在遊戲框範圍內的一個x坐標值
fod.y = rand( ) % (H – 2) + 1; //產生在遊戲框範圍內的一個y坐標值
for (i = 0; i snk.len; i++) //隨機生成的食物不能在蛇的身體上
{ if (fod.x == snk.x[i] fod.y == snk.y[i]) { n= 0; break;} }
if (n fod.x % 2 == 0) break; //n不為0且橫坐標為偶數,則食物坐標取值成功
}
setColor(12, 0);
gtxy(fod.x, fod.y); printf(“●”); //游標到取得的坐標處列印食物
}
return;
}
int Over( ) //判斷遊戲是否結束的函數
{ int i;
setColor(7, 0);
gtxy(2,H+1); printf(「暫停鍵:space.」); //以下列印一些其它信息
gtxy(2,H+2); printf(「遊戲得分:%d」,score);
if (snk.x[0] == 0 || snk.x[0] == W) return 1; //蛇頭觸碰左右邊界
if (snk.y[0] == 0 || snk.y[0] == H) return 1; //蛇頭觸碰上下邊界
for (i = 1; i snk.len; i++)
{ if (snk.x[0] == snk.x[i] snk.y[0] == snk.y[i]) return 1; } //蛇頭觸碰自身
return 0; //沒碰到邊界及自身時就返回0
}
void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)
{ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute( handle, ForeColor + BackGroundColor * 0x10 );
} //用來設定顏色的函數
C語言主要用在哪些方面?
1、上層開發
其實用 C 語言做上層應用程序開發和寫界面不是明智的選擇,比如 Windows 上面,畫個窗口,寫個消息處理函數,麻煩的要死。
做上層應用程序開發,其實大家都在用:
Windows: C++,MFC/QT
Android: Java
IOS: ObjecTIve-c / swift
Linux: C\C++,GTK+/ QT(Linux 圖形界面應用程序)
2、底層開發
C 語言主要的用途還是底層編程,例如系統軟體:編譯器,JVM,驅動,操作系統內核,還有各種嵌入式軟體,固件。
下面列舉了C語言一些常見的領域。
(1)應用軟體。Linux操作系統中的應用軟體都是使用C語言編寫的,因此這樣的應用軟體安全性非常高。
(2)對性能要求嚴格的領域。一般對性能有嚴格要求的地方都是用C語言編寫的,比如網路程序的底層和網路伺服器端底層、地圖查詢等。
(3)系統軟體和圖形處理。C語言具有很強的繪圖能力和可移植性,並且具備很強的數據處理能力,可以用來編寫系統軟體、製作動畫、繪製二維圖形和三維圖形等。
(4)數字計算。相對於其他編程語言,C語言是數字計算能力超強的高級語言。
(5)嵌入式設備開發。手機、PDA等時尚消費類電子產品相信大家都不陌生,其內部的應用軟體、遊戲等很多都是採用C語言進行嵌入式開發的。
(6)遊戲軟體開發。遊戲大家更不陌生,很多人就是由玩遊戲而熟悉了計算機。利用C語言可以開發很多遊戲,比如推箱子、貪吃蛇等。
學習C語言,就來北京尚學堂!
CS是用什麼語言編寫的
主引擎是C語言編程,cstrike里是MIC(建築工程電腦模擬軟體)和HVE(CS專用3D圖片拼合)的編程,至於地圖嘛當然是WC做的,另外的一些東西是用NEC遍的附件,太老了,找不到了,再由hl提取。z這幾個東西我只在遊戲東西里看過,是國外的,baidu上找死了也找不到TMD
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/189467.html