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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

俄羅斯游戲軟件:C語言應用初步感受

?

C語言課程設以一節課,老師提供了一個C語言的飛俄羅斯方塊讓我們感受,我們所學的C語言課程,主要是各種語句的練習,這次是用我們所學過的知識來感受一個實際的系統。

? 首先安裝c-free,然后是將代碼貼進去運行

界面雖然有點簡單,但這確實使用C語言做出來的游戲。

分析一下程序,感覺沒有太復雜的,就是上學期學習的簡單語句的組合,但是用的非常好。首先看看用到了幾種語句:

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

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

應用方法

?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;

? ?}

?}?

}

用來控制左右移動和進入菜單,

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("**********下一個方塊:");

?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、光標移動位置

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

{

?COORD pos;

?pos.X = x; ?

?pos.Y = y; ?

?SetConsoleCursorPosition(hOut, pos);

}

5、實現俄羅斯方塊的移動

?個人感覺這個程序最吸引人的地方,就是每個方塊都可以變化方向,位置,和平時在游戲機中玩得幾乎完全一樣,感覺十分的神奇,通過c語言程序的設計,可以完成這樣一個游戲,真的令人大吃一驚,真的是簡單的語言,可以實現復雜的功能。

其他就是參數設置,已經不是軟件的重點了,但是在其中,學習了一個常用的C語言實現的菜單,

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();

?

?

體會:

1、C語言游戲程序可以看到,C語言是我們第一門編程語言,從對計算機沒有任何編程能力的菜鳥,到現在能讀懂C語言的程序,感覺自己在慢慢進步。

2、計算機應用系統,就是不斷接收用戶的輸入,然后根據相應的邏輯,顯示相應的內容的過程。

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

?

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

#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;

/*處理棋盤*/

char qipan[20][80];//定義棋盤

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;

}

}

?


轉載于:https://blog.51cto.com/10973602/1789483

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。