c 圖形與游戲編程基礎(chǔ),用C語(yǔ)言編寫的小游戲代碼是什么?
最基礎(chǔ)的貪吃蛇的代碼
#include<stdio.h>
#include<windows.h>//基本型態(tài)定義。支援型態(tài)定義函數(shù)。使用者界面函數(shù)圖形裝置界面函數(shù)。
#include<conio.h>
//用戶通過(guò)按鍵盤產(chǎn)生的對(duì)應(yīng)操作(控制臺(tái))
#include<stdlib.h>
#include<time.h>//日期和時(shí)間頭文件
#defineLEN30
#defineWID25
intSnake[LEN][WID]={0};
//數(shù)組的元素代表蛇的各個(gè)部位
charSna_Hea_Dir='a';//記錄蛇頭的移動(dòng)方向
intSna_Hea_X,Sna_Hea_Y;//記錄蛇頭的位置
intSnake_Len=3;//記錄蛇的長(zhǎng)度
clock_tNow_Time;//記錄當(dāng)前時(shí)間,以便自動(dòng)移動(dòng)
intWait_Time;//記錄自動(dòng)移動(dòng)的時(shí)間間隔
intEat_Apple=1;//吃到蘋果表示為1
intLevel;
intAll_Score=-1;
intApple_Num=-1;
HANDLEhConsole=GetStdHandle(STD_OUTPUT_HANDLE);
//獲取標(biāo)準(zhǔn)輸出的句柄<windows.h>
//句柄:標(biāo)志應(yīng)用程序中的不同對(duì)象和同類對(duì)象中的不同的實(shí)例方便操控,
voidgotoxy(intx,inty)//設(shè)置光標(biāo)位置
{
COORDpos={x,y};
//定義一個(gè)字符在控制臺(tái)屏幕上的坐標(biāo)POS
SetConsoleCursorPosition(hConsole,pos);
//定位光標(biāo)位置的函數(shù)<windows.h>
}
voidHide_Cursor()//隱藏光標(biāo)固定函數(shù)
{
CONSOLE_CURSOR_INFOcursor_info={1,0};
SetConsoleCursorInfo(hConsole,&cursor_info);
}
voidSetColor(intcolor)//設(shè)置顏色
{
SetConsoleTextAttribute(hConsole,color);
//是API設(shè)置字體顏色和背景色的函數(shù)格式:SetConsoleTextAttribute(句柄,顏色);
}
voidPrint_Snake()//打印蛇頭和蛇的脖子和蛇尾
{
intiy,ix,color;
for(iy=0;iy<WID;++iy)
for(ix=0;ix<LEN;++ix)
{
if(Snake[ix][iy]==1)//蛇頭
{
SetColor(0xf);//oxf代表分配的內(nèi)存地址setcolor:34行自定義設(shè)置顏色的函數(shù)
gotoxy(ix*2,iy);
printf("※");
}
if(Snake[ix][iy]==2)//蛇的脖子
{
color=rand()%15+1;
//rand()函數(shù)是產(chǎn)生隨機(jī)數(shù)的一個(gè)隨機(jī)函數(shù)。C語(yǔ)言里還有srand()函數(shù)等。
//頭文件:stdlib.h
if(color==14)
color-=rand()%13+1;
//變色
SetColor(color);
gotoxy(ix*2,iy);
printf("■");
}
if(Snake[ix][iy]==Snake_Len)
{
gotoxy(ix*2,iy);
SetColor(0xe);
printf("≈");
}
}
}
voidClear_Snake()//擦除貪吃蛇
{
intiy,ix;
for(iy=0;iy<WID;++iy)
for(ix=0;ix<LEN;++ix)
{
gotoxy(ix*2,iy);
if(Snake[ix][iy]==Snake_Len)
printf("");
}
}
voidRand_Apple()//隨機(jī)產(chǎn)生蘋果
{
intix,iy;
do
{
ix=rand()%LEN;
iy=rand()%WID;
}while(Snake[ix][iy]);
Snake[ix][iy]=-1;
gotoxy(ix*2,iy);
printf("⊙");
Eat_Apple=0;
}
voidGame_Over()//蛇死掉了
{
gotoxy(30,10);
printf("GameOver");
Sleep(3000);
system("pause>nul");
exit(0);
}
voidMove_Snake()//讓蛇動(dòng)起來(lái)
{
intix,iy;
for(ix=0;ix<LEN;++ix)//先標(biāo)記蛇頭
for(iy=0;iy<WID;++iy)
if(Snake[ix][iy]==1)
{
switch(Sna_Hea_Dir)//根據(jù)新的蛇頭方向標(biāo)志蛇頭
{
case'w':
if(iy==0)
Game_Over();
else
Sna_Hea_Y=iy-1;
Sna_Hea_X=ix;
break;
case's':
if(iy==(WID-1))
Game_Over();
else
Sna_Hea_Y=iy+1;
Sna_Hea_X=ix;
break;
case'a':
if(ix==0)
Game_Over();
else
Sna_Hea_X=ix-1;
Sna_Hea_Y=iy;
break;
case'd':
if(ix==(LEN-1))
Game_Over();
else
Sna_Hea_X=ix+1;
Sna_Hea_Y=iy;
break;
default:
break;
}
}
if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1&&Snake[Sna_Hea_X][Sna_Hea_Y]!=0&&Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)
Game_Over();
if(Snake[Sna_Hea_X][Sna_Hea_Y]<0)//吃到蘋果
{
++Snake_Len;
Eat_Apple=1;
}
for(ix=0;ix<LEN;++ix)//處理蛇尾
for(iy=0;iy<WID;++iy)
{
if(Snake[ix][iy]>0)
{
if(Snake[ix][iy]!=Snake_Len)
Snake[ix][iy]+=1;
else
Snake[ix][iy]=0;
}
}
Snake[Sna_Hea_X][Sna_Hea_Y]=1;//處理蛇頭
}
voidGet_Input()//控制蛇的移動(dòng)方向
{
if(kbhit())
{
switch(getch())
{
case87:
Sna_Hea_Dir='w';
break;
case83:
Sna_Hea_Dir='s';
break;
case65:
Sna_Hea_Dir='a';
break;
case68:
Sna_Hea_Dir='d';
break;
default:
break;
}
}
if(clock()-Now_Time>=Wait_Time)//蛇到時(shí)間自動(dòng)行走
{
Clear_Snake();
Move_Snake();
Print_Snake();
Now_Time=clock();
}
}
voidInit()//初始化
{
system("title貪吃毛毛蛇");
system("modecon:cols=80lines=25");
Hide_Cursor();
gotoxy(61,4);
printf("YouScore:");
gotoxy(61,6);
printf("YouLevel:");
gotoxy(61,8);
printf("TheLenght:");
gotoxy(61,10);
printf("TheSpeed:");
gotoxy(61,12);
printf("AppleNum:");
inti;
for(i=0;i<Snake_Len;++i)//生成蛇
Snake[10+i][15]=i+1;
intiy,ix;//打印蛇
for(iy=0;iy<WID;++iy)
for(ix=0;ix<LEN;++ix)
{
if(Snake[ix][iy])
{
SetColor(Snake[ix][iy]);
gotoxy(ix*2,iy);
printf("■");
}
}
}
voidPri_News()//打印信息
{
SetColor(0xe);
gotoxy(73,4);
All_Score+=Level;
printf("%3d",All_Score);
gotoxy(73,6);
printf("%3d",Level);
gotoxy(73,8);
printf("%3d",Snake_Len);
gotoxy(73,10);
printf("0.%3ds",Wait_Time/10);
gotoxy(73,12);
printf("%d",Apple_Num);
}
voidLev_Sys()//等級(jí)系統(tǒng)
{
if(((Apple_Num-1)/10)==Level)
{
++Level;
if(Wait_Time>50)
Wait_Time-=50;
else
if(Wait_Time>10)
Wait_Time-=10;
else
Wait_Time-=1;
}
}
intmain(void)
{
Init();
srand((unsigned)time(NULL));//設(shè)置隨機(jī)數(shù)的種子
Now_Time=clock();
intspeed1=1000,speed2,a;
printf("\n");
printf("請(qǐng)輸入你想要的速度\n");
scanf("%d",&speed2);
Level=1;
Wait_Time=speed1-speed2;
printf("請(qǐng)輸入你想要的蘋果數(shù)\n");
scanf("%d",&a);
while(a--)
Rand_Apple();
while(1)
{
if(Eat_Apple)
{
++Apple_Num;
Rand_Apple();
Lev_Sys();
Pri_News();
}
Get_Input();
Sleep(10);
}
return0;
}
最適合描述分類變量結(jié)構(gòu)的圖形?
下面的圖形中最適合描述分組數(shù)據(jù)分布的圖形是 ( C) A 條形圖 B 箱線圖 C 直方圖 D餅圖
能寫手游棋牌游戲需要程序員具備哪些條件?
C語(yǔ)言:
是許多高級(jí)計(jì)算機(jī)語(yǔ)言的基礎(chǔ),C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。C語(yǔ)言可作為工作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。學(xué)好C語(yǔ)言能更好的學(xué)習(xí)其他高級(jí)語(yǔ)言,為以后的學(xué)習(xí)打基礎(chǔ);往深學(xué)C語(yǔ)言的話那就是學(xué)到C在Linux里的應(yīng)用,Linux十分強(qiáng)大。
具備:游戲開(kāi)發(fā)中的程序開(kāi)發(fā)主要由圖形引擎、聲音引擎、物理引擎、游戲引擎、人工智能或游戲邏輯、游戲GUI界面(菜單)、游戲開(kāi)發(fā)工具、支持局域網(wǎng)對(duì)戰(zhàn)的網(wǎng)絡(luò)引擎開(kāi)發(fā)、支持互聯(lián)網(wǎng)對(duì)戰(zhàn)的網(wǎng)絡(luò)引擎開(kāi)發(fā)九部分組成。
其次一名開(kāi)發(fā)人員所具備的要求是熟練掌握計(jì)算機(jī)本科專業(yè)所學(xué)的知識(shí),主要包括C或C++語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)、編譯原理、算法等,另外線性代數(shù)、微積分、牛頓力學(xué)在圖形和物理引擎開(kāi)發(fā)方面用途也很廣泛,如果要提高的話還有必要了解硬件相關(guān)的知識(shí)如計(jì)算機(jī)體系結(jié)構(gòu)、匯編語(yǔ)言。
以上就是關(guān)于c 圖形與游戲編程基礎(chǔ)和用C語(yǔ)言編寫的小游戲代碼是什么的相關(guān)問(wèn)題解答,希望對(duì)你有所幫助。