日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

俄罗斯游戏软件:C语言应用初步感受

發(fā)布時(shí)間:2023/12/10 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 俄罗斯游戏软件:C语言应用初步感受 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

俄羅斯游戲軟件:C語(yǔ)言應(yīng)用初步感受

?

C語(yǔ)言課程設(shè)以一節(jié)課,老師提供了一個(gè)C語(yǔ)言的飛俄羅斯方塊讓我們感受,我們所學(xué)的C語(yǔ)言課程,主要是各種語(yǔ)句的練習(xí),這次是用我們所學(xué)過(guò)的知識(shí)來(lái)感受一個(gè)實(shí)際的系統(tǒng)。

? 首先安裝c-free,然后是將代碼貼進(jìn)去運(yùn)行

界面雖然有點(diǎn)簡(jiǎn)單,但這確實(shí)使用C語(yǔ)言做出來(lái)的游戲。

分析一下程序,感覺(jué)沒(méi)有太復(fù)雜的,就是上學(xué)期學(xué)習(xí)的簡(jiǎn)單語(yǔ)句的組合,但是用的非常好。首先看看用到了幾種語(yǔ)句:

1、首先是在屏幕上顯示的語(yǔ)句printf,

2、另外一個(gè)就是多條件判斷switch--case

應(yīng)用方法

?switch(tetris->flag) ? ? ?

?{

? case 1: ? ? ? ?

? ?{ ?

? ? a[tetris->x][tetris->y-1]=b[1];

? ? a[tetris->x+2][tetris->y-1]=b[2];

? ? a[tetris->x+2][tetris->y]=b[3];

? ? break;

? ?}

? case 2: ? ? ? ??

? ?{ ?

? ? a[tetris->x-2][tetris->y]=b[1];

? ? a[tetris->x+2][tetris->y]=b[2];

? ? a[tetris->x+4][tetris->y]=b[3];

? ? break;

? ?}

? case 3: ? ? ? ??

? ?{ ?

? ? a[tetris->x][tetris->y-1]=b[1];

? ? a[tetris->x][tetris->y-2]=b[2];

? ? a[tetris->x][tetris->y+1]=b[3];

? ? break;

? ?}

? case 4: ? ? ? ??

? ?{ ?

? ? a[tetris->x-2][tetris->y]=b[1];

? ? a[tetris->x+2][tetris->y]=b[2];

? ? a[tetris->x][tetris->y+1]=b[3];

? ? break;

? ?}

? case 5: ? ? ? ??

? ?{ ?

? ? a[tetris->x][tetris->y-1]=b[1];

? ? a[tetris->x][tetris->y+1]=b[2];

? ? a[tetris->x-2][tetris->y]=b[3];

? ? break;

? ?}

? case 6: ? ? ? ??

? ?{ ?

? ? a[tetris->x][tetris->y-1]=b[1];

? ? a[tetris->x-2][tetris->y]=b[2];

? ? a[tetris->x+2][tetris->y]=b[3];

? ? break;

? ?}

? case 7: ? ? ? ??

? ?{ ?

? ? a[tetris->x][tetris->y-1]=b[1];

? ? a[tetris->x][tetris->y+1]=b[2];

? ? a[tetris->x+2][tetris->y]=b[3];

? ? break;

? ?}

? case 8: ? ? ? ??

? ?{ ?

? ? a[tetris->x][tetris->y+1]=b[1];

? ? a[tetris->x-2][tetris->y]=b[2];

? ? a[tetris->x+2][tetris->y+1]=b[3];

? ? break;

? ?}

? case 9: ? ? ? ??

? ?{ ?

? ? a[tetris->x][tetris->y-1]=b[1];

? ? a[tetris->x-2][tetris->y]=b[2];

? ? a[tetris->x-2][tetris->y+1]=b[3];

? ? break;

? ?}

? case 10: ? ? ? ?

? ?{ ?

? ? a[tetris->x][tetris->y-1]=b[1];

? ? a[tetris->x-2][tetris->y-1]=b[2];

? ? a[tetris->x+2][tetris->y]=b[3];

? ? break;

? ?}

? case 11: ? ? ? ?

? ?{ ?

? ? a[tetris->x][tetris->y+1]=b[1];

? ? a[tetris->x+2][tetris->y-1]=b[2];

? ? a[tetris->x+2][tetris->y]=b[3];

? ? break;

? ?}

? case 12: ? ? ??

? ?{ ?

? ? a[tetris->x][tetris->y-1]=b[1];

? ? a[tetris->x][tetris->y+1]=b[2];

? ? a[tetris->x-2][tetris->y-1]=b[3];

? ? break;

? ?}

? case 13: ? ? ??

? ?{ ?

? ? a[tetris->x-2][tetris->y]=b[1];

? ? a[tetris->x-2][tetris->y+1]=b[2];

? ? a[tetris->x+2][tetris->y]=b[3];

? ? break;

? ?}

? case 14: ? ? ? ?

? ?{ ?

? ? a[tetris->x][tetris->y-1]=b[1];

? ? a[tetris->x][tetris->y+1]=b[2];

? ? a[tetris->x+2][tetris->y+1]=b[3];

? ? break;

? ?}

? case 15: ? ? ??

? ?{

? ? a[tetris->x-2][tetris->y]=b[1];

? ? a[tetris->x+2][tetris->y-1]=b[2];

? ? a[tetris->x+2][tetris->y]=b[3];

? ? break;

? ?}

? case 16: ? ? ??

? ?{?

? ? a[tetris->x][tetris->y+1]=b[1];

? ? a[tetris->x][tetris->y-1]=b[2];

? ? a[tetris->x+2][tetris->y-1]=b[3];

? ? break;

? ?}

? case 17: ? ? ? ?

? ?{?

? ? a[tetris->x-2][tetris->y]=b[1];

? ? a[tetris->x-2][tetris->y-1]=b[2];

? ? a[tetris->x+2][tetris->y]=b[3];

? ? break;

? ?}

? case 18: ? ? ? ?

? ?{ ?

? ? a[tetris->x][tetris->y-1]=b[1];

? ? a[tetris->x][tetris->y+1]=b[2];

? ? a[tetris->x-2][tetris->y+1]=b[3];

? ? break;

? ?}

? case 19: ? ? ??

? ?{ ?

? ? a[tetris->x-2][tetris->y]=b[1];

? ? a[tetris->x+2][tetris->y+1]=b[2];

? ? a[tetris->x+2][tetris->y]=b[3];

? ? break;

? ?}

?}?

}

用來(lái)控制左右移動(dòng)和進(jìn)入菜單,

3、游戲窗口的定義

void make_frame()

{

?HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); ?

?gotoxy(hOut,FrameX+Frame_width-5,FrameY-2); ?

?printf("俄羅斯方塊");

?gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+7); ?

?printf("**********下一個(gè)方塊:");

?gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+13);

?printf("**********");

?gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+17);

?printf("↑鍵:變體");

?gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+19);

?printf("空格:暫停游戲");

?gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+15);

?printf("Esc :退出游戲");

?gotoxy(hOut,FrameX,FrameY); ? ? ??

?printf("╔");

?gotoxy(hOut,FrameX+2*Frame_width-2,FrameY);

?printf("╗");

?gotoxy(hOut,FrameX,FrameY+Frame_height);

?printf("╚");

?gotoxy(hOut,FrameX+2*Frame_width-2,FrameY+Frame_height);

?printf("╝");

?a[FrameX][FrameY+Frame_height]=2; ? ??

?a[FrameX+2*Frame_width-2][FrameY+Frame_height]=2;

?for(i=2;i<2*Frame_width-2;i+=2)

?{

? gotoxy(hOut,FrameX+i,FrameY);

? printf("═"); ? ? ? ??

?}

?for(i=2;i<2*Frame_width-2;i+=2)

?{

? gotoxy(hOut,FrameX+i,FrameY+Frame_height);

? printf("═"); ? ? ? ??

? a[FrameX+i][FrameY+Frame_height]=2; ??

?}

?for(i=1;i<Frame_height;i++)

?{

? gotoxy(hOut,FrameX,FrameY+i);?

? printf("║"); ? ? ? ??

? a[FrameX][FrameY+i]=2; ? ? ??

?}

?for(i=1;i<Frame_height;i++)

?{

? gotoxy(hOut,FrameX+2*Frame_width-2,FrameY+i);?

? printf("║"); ? ? ? ??

? a[FrameX+2*Frame_width-2][FrameY+i]=2; ?

?}

}

4、光標(biāo)移動(dòng)位置

void gotoxy(HANDLE hOut, int x, int y)

{

?COORD pos;

?pos.X = x; ?

?pos.Y = y; ?

?SetConsoleCursorPosition(hOut, pos);

}

5、實(shí)現(xiàn)俄羅斯方塊的移動(dòng)

?個(gè)人感覺(jué)這個(gè)程序最吸引人的地方,就是每個(gè)方塊都可以變化方向,位置,和平時(shí)在游戲機(jī)中玩得幾乎完全一樣,感覺(jué)十分的神奇,通過(guò)c語(yǔ)言程序的設(shè)計(jì),可以完成這樣一個(gè)游戲,真的令人大吃一驚,真的是簡(jiǎn)單的語(yǔ)言,可以實(shí)現(xiàn)復(fù)雜的功能。

其他就是參數(shù)設(shè)置,已經(jīng)不是軟件的重點(diǎn)了,但是在其中,學(xué)習(xí)了一個(gè)常用的C語(yǔ)言實(shí)現(xiàn)的菜單,

void gotoxy(HANDLE hOut, int x, int y);

void make_frame();

void get_flag(struct Tetris *);

void make_tetris(struct Tetris *);

void print_tetris(HANDLE hOut,struct Tetris *);

void clear_tetris(HANDLE hOut,struct Tetris *);

int if_moveable(struct Tetris *);

void del_full(HANDLE hOut,struct Tetris *);

void start_game();

?

?

體會(huì):

1、C語(yǔ)言游戲程序可以看到,C語(yǔ)言是我們第一門(mén)編程語(yǔ)言,從對(duì)計(jì)算機(jī)沒(méi)有任何編程能力的菜鳥(niǎo),到現(xiàn)在能讀懂C語(yǔ)言的程序,感覺(jué)自己在慢慢進(jìn)步。

2、計(jì)算機(jī)應(yīng)用系統(tǒng),就是不斷接收用戶的輸入,然后根據(jù)相應(yīng)的邏輯,顯示相應(yīng)的內(nèi)容的過(guò)程。

3、按照這個(gè)思路,我可以把程序修改成一個(gè)貪吃蛇的游戲,控制蛇的左右。

?

例如:由此改編的貪吃蛇程序

#include<stdio.h>

#include<time.h>

#include<conio.h>

#include<stdlib.h>

int head=3,tail=0,f=0,s,t,m;

int main()

{ int i,j;

int zuobiao[2][80];

long start;

int direction=77;

int gamespeed;

int timeover;

int change(char qipan[30][80],int zuobiao[2][80],char direction);

printf("auto? Y/N\n");

m=getch();

if (m=='y')

{ zuobiao[0][tail]=1;zuobiao[1][tail]=1;zuobiao[0][1]=1;zuobiao[1][1]=2;zuobiao[0][2]=1;zuobiao[1][2]=3;zuobiao[0][head]=1;zuobiao[1][head]=4;

/*處理棋盤(pán)*/

char qipan[20][80];//定義棋盤(pán)

for(i=0;i<=19;i++) ?? ?

for(j=0;j<=79;j++)

qipan[i][j]=' ';

qipan[1][1]=qipan[1][2]=qipan[1][3]='*';

qipan[1][4]='#';

printf("start\n");

printf("Input your game level,please.\ 1-1000\n");

scanf("%d",&gamespeed);

s=rand()%20;

t=rand()%80;

qipan[s][t]='$';

while(direction!='q')

{ system("cls");

for(i=0;i<20;i++)

for(j=0;j<80;j++)

printf("%c",qipan[i][j]);

timeover=1;

start=clock();

while(!kbhit()&&(timeover=clock()-start<=1000-gamespeed));

if(direction==72||direction==80)

if(s!=zuobiao[0][head])

if(s-zuobiao[0][head]<0)

direction=72;

else direction=80;

else?

if(t-zuobiao[1][head]<0)

direction=75;

else direction=77;

else if(t!=zuobiao[1][head])

if(t-zuobiao[1][head]<0)

direction=75;

else direction=77;

else?

if(t-zuobiao[1][head]<0)

direction=72;

else direction=80;

if(!(direction==72||direction==80||direction==75||direction==77))

{

return 0;

system("cls");

printf("GAME OVER!\n");

}

if(!change(qipan,zuobiao,direction))

{

direction='q';

system("cls");

printf("GAME OVER!\n");

}

if(f==1)

{

s=rand()%20;

t=rand()%80;

qipan[s][t]='$';

f=0;

}

}

return 0;

}

else? zuobiao[0][tail]=1;zuobiao[1][tail]=1;zuobiao[0][1]=1;zuobiao[1][1]=2;zuobiao[0][2]=1;zuobiao[1][2]=3;zuobiao[0][head]=1;zuobiao[1][head]=4;

char qipan[20][80];

for(i=0;i<20;i++) ?? ?

for(j=0;j<80;j++)

qipan[i][j]=' ';

for(i=0;i<80;i++)

qipan[0][i]='_';

for(i=1;i<=20;i++)

qipan[i][0]='|';

for(i=1;i<=20;i++)

qipan[i][79]='|';

for(i=0;i<80;i++)

qipan[19][i]='_';

qipan[1][1]=qipan[1][2]=qipan[1][3]='*';

qipan[1][4]='#';

printf("start\n");

printf("Input your game level,please.\ 1-1000\n");

scanf("%d",&gamespeed);

s=rand()%20;

t=rand()%80;

qipan[s][t]='$';

while(direction!='q')

{ system("cls");

for(i=0;i<20;i++)

for(j=0;j<80;j++)

printf("%c",qipan[i][j]);

timeover=1;

start=clock();

while(!kbhit()&&(timeover=clock()-start<=1000-gamespeed));

if(timeover)

{

getch();

direction=getch();

}

else

direction=direction;

if(!(direction==72||direction==80||direction==75||direction==77))

{

return 0;

system("cls");

printf("GAME OVER!\n");

}

if(!change(qipan,zuobiao,direction))

{

direction='q';

system("cls");

printf("GAME OVER!\n");

}

if(f==1)

{

s=rand()%20;

t=rand()%80;

qipan[s][t]='$';

f=0;

}

}

return 0;

}

?

?

int change(char qipan[20][80],int zuobiao[2][80],char direction)

{

int x,y;

{if(direction==72)

{x=zuobiao[0][head]-1;

y=zuobiao[1][head]; }

if(direction==80)

{x=zuobiao[0][head]+1;

y=zuobiao[1][head];}

if(direction==75)

{x=zuobiao[0][head];

y=zuobiao[1][head]-1;}

if(direction==77)

{x=zuobiao[0][head];

y=zuobiao[1][head]+1;}

if(x<0)

x=18;

else if(x>18)

x=0;

else if(y>78)

y=0;

else if(y<0)

y=78;

if(qipan[s][t]!='$')

f=1;

qipan[zuobiao[0][tail]][zuobiao[1][tail]]=' ';

tail=(tail+1)%80;

qipan[zuobiao[0][head]][zuobiao[1][head]]='*';

head=(head+1)%80;

zuobiao[0][head]=x;

zuobiao[1][head]=y;

qipan[zuobiao[0][head]][zuobiao[1][head]]='#';

return 1;

}

}

?


轉(zhuǎn)載于:https://blog.51cto.com/10973602/1789483

總結(jié)

以上是生活随笔為你收集整理的俄罗斯游戏软件:C语言应用初步感受的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。