c语言:编写猜数字小游戏。(精选5篇)由网友“zhangqiao198888”投稿提供,下面是小编为大家带来的c语言:编写猜数字小游戏。,希望大家能够喜欢!
篇1:c语言:编写猜数字小游戏。
编写猜数字小游戏,
程序:
#include 结果: ***欢迎来挑战猜数字游戏*** *****请选择开始或退出***** ******1.start 0.exit****** 请选择:1 请猜数字:50 你真蠢,猜小了! 请猜数字:75 你真蠢,猜小了! 请猜数字:100 你好笨,猜大了! 请猜数字:85 你真蠢,猜小了! 请猜数字:93 你好笨,猜大了! 请猜数字:90 你好笨,猜大了! 请猜数字:87 你真蠢,猜小了! 请猜数字:88 你真蠢,猜小了! 请猜数字:89 你真聪明,猜对了! ***欢迎来挑战猜数字游戏*** *****请选择开始或退出***** ******1.start 0.exit****** 请选择:0 请按任意键继续. . . #include C语言小游戏 最基础的贪吃蛇的代码 #include #include//基本型态定义。支援型态定义函数。使用者界面函数 图形装置界面函数。 #include //用户通过按键盘产生的对应操作 (控制台) #include #include //日期和时间头文件 #define LEN 30 #define WID 25 int Snake[LEN][WID] = {0}; //数组的元素代表蛇的各个部位 char Sna_Hea_Dir = 'a';//记录蛇头的移动方向 int Sna_Hea_X, Sna_Hea_Y;//记录蛇头的位置 int Snake_Len = 3;//记录蛇的`长度 clock_t Now_Time;//记录当前时间,以便自动移动 int Wait_Time ;//记录自动移动的时间间隔 int Eat_Apple = 1;//吃到苹果表示为1 int Level ; int All_Score = -1; int Apple_Num = -1; HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //获取标准输出的句柄 //句柄 :标志应用程序中的不同对象和同类对象中的不同的实例 方便操控, void gotoxy(int x, int y)//设置光标位置 { COORD pos = {x,y}; //定义一个字符在控制台屏幕上的坐标POS //定位光标位置的函数 SetConsoleCursorPosition(hConsole, pos); } void Hide_Cursor//隐藏光标 固定函数 { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(hConsole, &cursor_info); } void SetColor(int color)//设置颜色 { SetConsoleTextAttribute(hConsole, color); //是API设置字体颜色和背景色的函数 格式:SetConsoleTextAttribute(句柄,颜色); } void Print_Snake()//打印蛇头和蛇的脖子和蛇尾 { int iy, ix, color; for(iy = 0; iy for(ix = 0; ix { if(Snake[ix][iy] == 1)//蛇头 { SetColor(0xf); //oxf代表分配的内存地址 setcolor:34行自定义设置颜色的函数 gotoxy(ix*2, iy); printf( } if(Snake[ix][iy] == 2)//蛇的脖子 { color = rand()%15 + 1; //rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。 //头文件: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( } //变色 } } void Clear_Snake()//擦除贪吃蛇 { int iy, ix; for(iy = 0; iy for(ix = 0; ix { gotoxy(ix*2, iy); if(Snake[ix][iy] == Snake_Len) printf( } } void Rand_Apple()//随机产生苹果 { int ix, iy; do { ix = rand() % LEN; iy = rand() % WID; }while(Snake[ix][iy]); Snake[ix][iy] = -1; gotoxy(ix*2, iy); printf( Eat_Apple = 0; } void Game_Over()//蛇死掉了 { gotoxy(30, 10); printf( Sleep(3000); system( exit(0); } void Move_Snake()//让蛇动起来 { int ix, iy; for(ix = 0; ix for(iy = 0; iy if(Snake[ix][iy] == 1) { switch(Sna_Hea_Dir)//根据新的蛇头方向标志蛇头 { 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] { ++Snake_Len; Eat_Apple = 1; } for(ix = 0; ix for(iy = 0; 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;//处理蛇头 } void Get_Input()//控制蛇的移动方向 { if(kbhit()) { switch(getch()) { case 87: Sna_Hea_Dir = 'w'; break; case 83: Sna_Hea_Dir = 's'; break; case 65: Sna_Hea_Dir = 'a'; break; case 68: Sna_Hea_Dir = 'd'; break; default: break; } } if(clock() - Now_Time >= Wait_Time)//蛇到时间自动行走 { Clear_Snake(); Move_Snake(); Print_Snake(); Now_Time = clock(); } } void Init()//初始化 { system( system( Hide_Cursor(); gotoxy(61, 4); printf( gotoxy(61, 6); printf( gotoxy(61, 8); printf( gotoxy(61, 10); printf( gotoxy(61, 12); printf( int i; for(i = 0; i Snake[10+i][15] = i+1; int iy, ix;//打印蛇 for(iy = 0; iy for(ix = 0; ix { if(Snake[ix][iy]) { SetColor(Snake[ix][iy]); gotoxy(ix*2, iy); printf( } } } void Pri_News()//打印信息 { SetColor(0xe); gotoxy(73,4); All_Score += Level; printf( gotoxy(73, 6); printf( gotoxy(73, 8); printf( gotoxy(73, 10); printf( gotoxy(73, 12); printf( } void Lev_Sys()//等级系统 { 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; } } int main(void) { Init(); srand((unsigned)time(NULL));//设置随机数的种子 Now_Time = clock(); int speed1=1000,speed2,a; printf( printf( scanf( Level=1; Wait_Time=speed1-speed2; printf( scanf( while(a--) Rand_Apple(); while(1) { if(Eat_Apple) { ++Apple_Num; Rand_Apple(); Lev_Sys(); Pri_News(); } Get_Input(); Sleep(10); } return 0; } Tc2.0中怎么样设置图形显示? Tc2.0中有两种显示模式,一种是我们所熟知的字符模式,另一种是图形模式,在字符模式下只能显式字符,如ASCII字符。一般是显示25 行,每行80个字符。程序缺省的是字符模式。在字符模式下不能显式图形和进行绘图操作。要想进行图形显示和绘图操作,必须切换到图形模 式下。 Tc2.0中用initgraph()函数可以切换到图形模式,用closegraph()可以从图形模式切换回字符模式。initgraph()和closegraph()都是图形 函数,使用图形函数必须包括头文件graphics.h。 void far initgraph(int far *graphdriver,int far *graphmode,char far *pathtodriver);graphdriver是上涨指向图形驱动序号变量的指针;graphmode是在graphdriver选定后,指向图形显示模式序号变量的指针。pathtodriver表示存放图形驱动文件的路径。 Tc2.0中有多种图形驱动,每种图形驱动下又有几种图形显示模式。在我的程序中图形驱动序号为VGA,图形显示模式序号为VGAHI。这是一种分辨率为640*480(从左到右坐标依次为0-639,从上到下坐标依次为0-479),能够显示16种颜色的图形模式。别的图形驱动序号和图形显示模式序号,可以从手册或联机帮助中找到。 pathtodriver指示存放图形驱动文件的路径。图形驱动序号不同,图形驱动文件也不同。序号为VGA图形驱动对应egavga.bgi这个图形驱动文件。egavga.bgi一般在Tc目录下。 void far closegraph(void); 没有参数,从图形模式直接返回字符模式。 initgraph()和closegraph()的常用用法如下: int gdriver = VGA, gmode=VGAHI, errorcode; /* initialize graphics mode */ initgraph(&gdriver, &gmode, e:tc2); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf(Graphics error: %sn, grapherrormsg(errorcode)); printf(Press any key to halt:); getch(); exit(1); /* return with error code */ } /* return to text mode */ closegraph(); Tc2.0中常用图形函数的用法? 在这里讲几个游戏中用到的绘图用的图形函数: setcolor(); line(); rectangle(); settextjustify(); outtextxy(); setfillstyle(); bar(); void far setcolor(int color); 设置画线、画框和在图形模式下显示文字的当前颜色。这个函数将影响line()、rectangle()和outtextxy()函数绘图的颜色。 color可以取常的颜色常量: BLACK ? 0 BLUE ? 1 GREEN ? 2 CYAN ? 3 RED ? 4 MAGENTA ? 5 BROWN ? 6 LIGHTGRAY ? 7 DARKGRAY ? 8 LIGHTBLUE ? 9 LIGHTGREEN ?10 LIGHTCYAN ?11 LIGHTRED ?12 LIGHTMAGENTA ?13 YELLOW ?14 WHITE ?15 void far line(int x1,int y1,int x2,int y2); 用当前颜色从(x1,y1)画一条到(x2,y2)的线段, void far rectangle(int left,int top,int right,int bottom); 用当前颜色画一个左上角为(left,top)、右下角为(right,bottom)的矩形框。 void far settextjustify(int horz,int vert); 设置图形模式下文字输出的对齐方式。主要影响outtextxy()函数。 horiz和vert可取如下枚举常量: horiz ?LEFT_TEXT ? 0 ?Left-justify text ?CENTER_TEXT ? 1 ?Center text ?RIGHT_TEXT ? 2 ?Right-justify text vert ?BOTTOM_TEXT ? 0 ?Justify from bottom ?CENTER_TEXT ? 1 ?Center text ?TOP_TEXT ? 2 ?Justify from top void far outtextxy(int x,int y,char * textstring); 在(x,y)处用当前字体(缺省的字体是DEFAULT_FONT)显示字符串textstring,字符串的对齐方式由settextjustify()指定。 void far setfillstyle(int pattern,int color); 设置图形的填充模式和填充颜色,主要影响bar()等函数。 pattern一般取枚举常量值SOLID_FILL,color的取值与setcolor(int color)中color的取值范围相同。 介绍完了前面两个问题,现在来写一个程序。这个程序演示前了面所介绍的几个图形函数。 程序prog1.c 怎样获取I盘输入? 在Tc2.0中有一个处理键盘输入的函数bioskey(); int bioskey(int cmd); 当cmd为1时,bioskey()检测是否有键按下。没有键按下时返回0;有键按下时返回按键码(任何按键码都不为0),但此时并不将检测到的按 键码从键盘缓冲队列中清除。 当cmd为0时,bioskey()返回键盘缓冲队列中的按键码,并将此按键码从键盘缓冲队列中清除。如果键盘缓冲队列为空,则一直等到有键按 下,才将得到的按键码返回。 Escape键的按键码为0x11b,下面的小程序可以获取按键的按键码。 for (;;) { key=bioskey(0); /* wait for a keystroke */ printf(0x%xn,key); if (key==0x11b) break; /* Escape */ } 常用按键的按键码如下: #define VK_LEFT 0x4b00 #define VK_RIGHT 0x4d00 #define VK_DOWN 0x5000 #define VK_UP 0x4800 #define VK_HOME 0x4700 #define VK_END 0x4f00 #define VK_SPACE 0x3920 #define VK_ESC 0x011b #define VK_ENTER 0x1c0d 完整的程序请参见prog2.c、prog3.c。 prog2.c获取按键的按键码,按Escape键退出程序。 prog3.c根据不同的按键进行不同的操作,按Escape键退出程序。 怎样控制方块的移动? 方块移动的实现很简单,将方块原来的位置用背景色画一个同样大小的方块,将原来的方块涂去。然后在新的位置上重新绘制方块就可以 #include #include #include /*玫瑰花*/ #define FNX(x) (int)(xo+(x)*1.0) #define FNY(y) (int)(getmaxy()-(yo+(y)*1.0)) #define FNX2(phi) cos(phi)*ac-sin(phi)*bs #define FNY2(phi) cos(phi)*as+sin(phi)*bc /*画旋转的椭圆*/ void elli(int xo,int yo,int a,int b,double theta) { int i; double da,c,s,ac,as,bc,bs,xf,yf,phi,x,y; theta=theta*0.01745; da=3*0.1745; c=cos(theta);s=sin(theta); ac=a*c;as=a*s;bc=b*c;bs=b*s; x=FNX2(0);y=FNY2(0); moveto(FNX(x),FNY(y)); for(i=1;i<=360;i++) { phi=i*da;xf=x*cos(phi)*0.1;yf=b*sin(phi)*0.1; x=FNX2(phi);y=FNY2(phi); lineto(FNX(x),FNY(y)); } } /*花*/ void hua(int x,int y) { register i; /*画粉红色玫瑰*/ setcolor(12); arc(x+65,y-60,150,350,8); arc(x+66,y-54,300,470,8); arc(x+65,y-56,30,230,10); arc(x+64,y-57,300,490,17); ellipse(x+73,y-30,250,450,27,40); ellipse(x+59,y-30,100,290,27,40); ellipse(x+65,y-40,140,270,20,30); setfillstyle(SOLID_FILL,5); floodfill(x+65,y-20,12); /*画红色玫瑰*/ arc(x,y,150,350,12); arc(x+1,y+8,280,470,12); arc(x,y+2,30,230,16); arc(x,y+3,80,240,28); arc(x+2,y+8,180,330,22); arc(x-2,y+2,310,460,25); ellipse(x-12,y+30,120,300,30,40); ellipse(x+10,y+28,250,423,30,42); ellipse(x-4,y+10,290,393,30,40); setfillstyle(SOLID_FILL,4); floodfill(x+5,y+31,12); /*画紫色花骨朵*/ ellipse(x+120,y+5,0,360,15,25); setfillstyle(SOLID_FILL,1); floodfill(x+120,y,12); /*画黄色花骨朵*/ ellipse(x-70,y+10,0,360,14,20); setfillstyle(SOLID_FILL,14); floodfill(x-70,y+10,12); setcolor(10); /*画红花花萼*/ ellipse(x-15,y+32,190,310,30,35); ellipse(x+16,y+32,235,355,26,35); ellipse(x,y+35,190,350,43,50); arc(x,y+82,190,350,6); setfillstyle(SOLID_FILL,2); floodfill(x,y+75,10); /*画粉花花萼*/ ellipse(x+50,y-48,190,320,22,50); ellipse(x+80,y-48,220,350,22,50); ellipse(x+65,y-28,180,360,36,50); floodfill(x+65,y+18,10); /*画主枝*/ for(i=0;i<3;i++ ) { ellipse(x-98,y+100+i,255,371,100,80); ellipse(x-20,y+30+i,260,358,140,140); ellipse(x+224,y+20+i,180,218,160,140); } /*画侧枝*/ ellipse(x+70,y+34,180,233,140,140); ellipse(x,y+40,205,255,100,120); ellipse(x+135,y-30,209,249,72,120); ellipse(x,y+20,263,301,100,120); ellipse(x+85,y-10,278,305,100,120); ellipse(x+100,y-62,282,308,90,120); 【c语言:编写猜数字小游戏。(精选5篇)】相关文章: 5的乘法口诀小学数学教案2024-04-12 认识钟表小学一年级数学教学计划2023-05-13 小学四年级英语工作教学计划2023-03-06 小学三年级英语教学计划2024-04-04 优秀的小学数学《可能性》教学设计与反思2023-04-29 认识钟表教学设计2023-02-19 五年级数学上册《数学广角,数字编码》教学反思2023-09-21 小学三年级英语的教学计划2023-01-05 pep小学英语三上册教学计划2023-05-22 小学三年级英语课堂教学计划示例2022-11-14篇2:c语言实现猜数字小游戏
篇3:C语言小游戏
篇4:C语言编写的俄罗斯方块
篇5:C语言编写实现玫瑰花