永发信息网

c语言小游戏代码

答案:2  悬赏:0  手机版
解决时间 2021-01-26 19:01
c语言小游戏代码
最佳答案
楼上的可以参考。也可以自己上网搜索,但是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 < wid; ++iy) for(ix = 0; ix < len; ++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 < wid; ++iy) for(ix = 0; ix < len; ++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("game over"); sleep(3000); system("pause > nul"); exit(0); } void move_snake()//让蛇动起来 { int ix, iy; for(ix = 0; ix < len; ++ix)//先标记蛇头 for(iy = 0; iy < wid; ++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] < 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;//处理蛇头 } 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("title 贪吃毛毛蛇"); system("mode con: cols=80 lines=25"); hide_cursor(); gotoxy(61, 4); printf("you score:"); gotoxy(61, 6); printf("you level:"); gotoxy(61, 8); printf("the lenght:"); gotoxy(61, 10); printf("the speed:"); gotoxy(61, 12); printf("apple num:"); int i; for(i = 0; i < snake_len; ++i)//生成蛇 snake[10+i][15] = i+1; int iy, 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("■"); } } } void pri_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); } 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("\n"); printf("请输入你想要的速度\n"); scanf("%d",&speed2); level=1; wait_time=speed1-speed2; printf("请输入你想要的苹果数\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); } return 0; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
欧米茄地址在什么地方,想过去办事
如何锻炼外向性格
英语翻译最近看到一个CD 专辑:瑞典爵士女歌
iPhone6s有时唤醒延迟home键 锁屏键 抬起唤醒
没有德语基础想去德国读研究生
成语青红皁白的意思是什么啊?有知道释义的请
人口调查中,发现某种疾病在女性中的发病率高
GUCCI怎么去啊,我要去那办事
如何下载xx酷跑助手视频
下列词语中,没有错别字的一项是(4分)A. 斑
华夏人寿回访电话给被保险人打电话吗
龙兴花圈寿衣店地址在什么地方,我要处理点事
从山东自己开车去北京玩,车能放在哪里啊?
爱是唯一(万象店)地址在什么地方,我要处理点
数控便携式小蜜蜂火焰切割机的数控编程说明书
推荐资讯
成语镕今铸古的意思是什么啊?有知道释义的请
the line of mountains_____all the way from
winform下的datagridview绑定数据时怎么更改
丰田的雷凌,花冠卡,罗拉,威驰有什么区别
长泰县公证处地址在哪,我要去那里办事
肩周炎用艾条熏什么穴位?
前男友,说过彼此不再联系了,你会删除掉他的
关于大肠杆菌O157的说法,正确的是()
成语碎心裂胆的意思是什么啊?有知道释义的请
男友在别的城市干活他说他腰疼,我该怎么关心
成语通南彻北的意思是什么啊?有知道释义的请
韩国s美丽怎么去啊,我要去那办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?