当前位置: 首页 > news >正文

国家工商行政管理总局官网常熟seo关键词优化公司

国家工商行政管理总局官网,常熟seo关键词优化公司,wap文字网页游戏,建设地方性宠物网站一、前言 [设计难度 : ★☆☆☆☆ [参考书籍:《C语言课程设计与游戏开发实践教程》 [主要涉及知识:函数封装 循环判断语句 [程序运行效果图: [主要的游戏功能: 通过按键’w’,‘s’,‘a’,d’分别实现飞机的上下左右移动 按空格…

一、前言
[设计难度 : ★☆☆☆☆
[参考书籍:《C语言课程设计与游戏开发实践教程》
[主要涉及知识:函数封装 + 循环判断语句
[程序运行效果图:


[主要的游戏功能:

通过按键’w’,‘s’,‘a’,'d’分别实现飞机的上下左右移动
按空格键发射子弹
按ESC实现游戏暂停
按q键返回菜单界面
实现子弹和敌机位置的自动更新
敌机的生成速度和下落速度随分数的增加而变快
实时打印得分和生命值。生命值为0时游戏结束
以下为飞机游戏全部的代码,大家可以直接拷贝运行:
 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <time.h>#define height 25   //设置游戏边界
#define width 50
#define enemy_max 5enum Option			//枚举增加代码可读性
{EXIT,PLAY,GUIDE,
};enum Condition      //表示游戏幕布上的情况
{backspace,enemy,bullet,
};int canvas[height][width]; //游戏幕布存储对应的信息
int score;
int x, y;				   //飞机头部坐标
int Std_Speed;		       //敌机标准下落速度
int Std_Time;		       //敌机生成的标准速度
int HP;                    //玩家生命值
int enemy_num;
int times;void gotoxy(int x, int y)				//清屏函数
{HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X = x;pos.Y = y;SetConsoleCursorPosition(handle, pos);
}void HideCursor()					   //光标隐藏函数
{CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}void Initgame()
{for (int i = 0; i < height; i++){for (int j = 0; j < width; j++)		//将幕布上先初始化为空格canvas[i][j] = backspace;}HP = 3;score = 0;x = width / 2;							//初始化飞机位置y = height / 2;enemy_num = 0;Std_Speed = 60;Std_Time = 60;
}void show()
{gotoxy(0, 0);for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){if (i == y && j == x)			//打印飞机printf("*");else if (i == y + 1 && j == x - 2){printf("*****");j += 4;}else if (i == y + 2 && j == x - 1){printf("* *");j += 2;}else if (canvas[i][j] == bullet)	// 打印子弹printf("|");else if (canvas[i][j] == enemy)printf("@");elseprintf(" ");}printf("|\n");	//打印游戏边框}for (int j = 0; j < width; j++)   //打印游戏边框printf("-");printf("\n[得分:>%d\n", score);	  //打印游戏分数和血量printf("[生命值:>%d\n", HP);
}int updateWithinput()
{if (_kbhit()){int input = _getch();switch (input){case 'w': if (y > 0)			//防止飞机飞出游戏边界y--;break;case 's': if (y < height - 3)y++;break;case 'a': if (x > 2)x--;break;case 'd': if (x < width - 3)x++;break;case 27: system("pause"); break;	//ESC的ascll码值为27case ' ': if (y > 0)canvas[y - 1][x] = bullet;break;case 'q': return 1;					//退出游戏}}return 0;
}int enemy_update()
{static int enemy_speed = 0;static int enemy_time = 0;int flag = 0;if (enemy_speed < Std_Speed)				//依靠循环来控制更新速度enemy_speed++;if (enemy_time < Std_Time)enemy_time++;if (enemy_num < enemy_max && enemy_time >= Std_Time){int i, j;do{i = rand() % (height / 5);j = rand() % (width - 4) + 2;		//j的范围:[2, width - 3]} while (canvas[i][j] != backspace);canvas[i][j] = enemy;enemy_num++;enemy_time = 0;}if (enemy_speed >= Std_Speed){flag = 1;enemy_speed = 0;}for (int i = height - 1; i >= 0; i--){for (int j = width - 1; j >= 0; j--){if (canvas[i][j] == enemy)			//遇到敌机的情况{if (i == height - 1)			//敌机飞到边界{score--;HP--;if (HP == 0)return 1;enemy_num--;canvas[i][j] = backspace;}else if (i < height - 1 && canvas[i + 1][j] == bullet)//检测是否被子弹击中{score++;printf("\a");enemy_num--;if (score % 5 == 0 && Std_Speed >= 12) //分数到达一定程度后下落加快,生成加快{Std_Speed -= 3;			//下落加快Std_Time -= 3;			//生成速度加快}canvas[i][j] = backspace;}else if (flag)					//flag为1更新敌机位置{canvas[i + 1][j] = enemy;canvas[i][j] = backspace;}}}}return 0;
}void bullet_update()
{for (int i = 0; i < height; i++)			//控制子弹的移动{for (int j = 0; j < width; j++){if (canvas[i][j] == bullet){if (i > 0 && canvas[i - 1][j] == enemy){score++;printf("\a");enemy_num--;if (score % 5 == 0 && Std_Speed >= 6) //分数到达一定程度后下落加快,生成加快{Std_Speed -= 3;			//下落加快Std_Time -= 3;			//生成速度加快}canvas[i - 1][j] = bullet;}else if (i > 0)canvas[i - 1][j] = bullet;canvas[i][j] = backspace;}}}
}void gamebody()
{system("cls");Initgame();HideCursor();srand((unsigned int)time(NULL));while (1){show();bullet_update();if (updateWithinput() || enemy_update()){show();printf("[本次游戏结束:>");system("pause");break;}}
}void menu()
{printf("*****************\n");printf("**  飞机游戏   **\n");printf("**-------------**\n");printf("**   1.PLAY    **\n");printf("**   2.GUIDE   **\n");printf("**   0.EXIT    **\n");printf("*****************\n");
}void guide()
{printf("******************\n");printf("** 游戏操作指南 **\n");printf("**--------------**\n");printf("**    w->上移   **\n");printf("**    s->下移   **\n");printf("**    a->左移   **\n");printf("**    d->右移   **\n");printf("**    q->返回   **\n");printf("**   ESC->暂停  **\n");printf("**   空格->射击 **\n");printf("******************\n\n\n");}int main()
{int input = 0;do{menu();printf("[请选择:>");scanf("%d", &input);switch (input){case PLAY: gamebody(); break;case GUIDE: guide(); break;case EXIT: printf("成功退出游戏!\n"); break;default: printf("输入错误,请重新选择\n");}} while (input);return 0;
}

如果觉得还挺有意思的,那就继续保持着轻松的心情看下去吧!

二、从设计初始菜单界面开始

一个基本的游戏初始选择框架:

int main()
{int input = 0;do{menu();printf("[请选择:>");scanf("%d", &input);switch (input){case xxx:case xxx:case xxx:default: }}while (input);return 0;
}

我们根据游戏所包含的功能设计好相应的menu选项以及其对应的case事件即可。作为我们飞机游戏的第一个简单版本,我们先不考虑其他的模式和功能,仅包含PLAY(游戏)功能、GUIDE(操作说明)、EXIT(退出游戏)三种功能。根据这个思路,我们写下这样的menu函数

void menu()
{printf("*****************\n");printf("**  飞机游戏   **\n");printf("**-------------**\n");printf("**   1.PLAY    **\n");printf("**   2.GUIDE   **\n");printf("**   0.EXIT    **\n");printf("*****************\n");
}

为了增加代码的可读性,我们在头文件处创建枚举变量。

enum Option			//枚举增加代码可读性
{EXIT,           // printf("%d", EXIT);的结果为 0PLAY,			// printf("%d", PLAY);的结果为 1GUIDE,			// printf("%d", GUIDE);的结果为 2
};

每个枚举常量都是有值的,第一个枚举成员的值默认为0(不人为修改的话),之后的随前一个递增。这恰好与我们的menu中功能序号相对应,于是我们可以用枚举变量作为case的整形常量表达语句,最终写出的主函数是这样的:

int main()
{int input = 0;srand((unsigned int)time(NULL));  //初始化rand函数,只需要初始化一次即可,所以放在主函数内do{menu();printf("[请选择:>");scanf("%d", &input);switch (input){case PLAY: gamebody(); break;case GUIDE: guide(); break;case EXIT: printf("成功退出游戏!\n"); break;default: printf("输入错误,请重新选择\n");}}while (input);return 0;
}

http://www.tj-hxxt.cn/news/45459.html

相关文章:

  • lsp必备公众号惠州百度seo在哪
  • 祁阳网站建设最有效的线上推广方式
  • 做移动网站优化快速排名软件app推广员怎么做
  • 学校网站建设设想游戏代理加盟平台
  • 网站官网认证怎么做的第一站长网
  • 温州网站制作网站下载百度极速版免费安装
  • 企业网站建设服务哪家好中国企业网
  • 网站怎么做背景网络推广怎么做效果好
  • axure 做网站百度seo优化规则
  • 做一个付费网站多少钱优化用户体验
  • 深圳网站制作就找兴田德润十大短视频平台排行榜
  • 顺德网站制作案例信息新闻发布会新闻通稿
  • 组培实验室建设网站制作网站的基本步骤
  • 那里有学做网站的如何进行百度推广
  • 电商企业排行西安百度推广优化托管
  • 毕业设计网站怎么做中国新闻最新消息今天
  • 网站制作视频教程免费百度地图推广
  • 提供电商网站建设域名注册服务网站查询
  • 视频分享网站怎么做的自媒体135网站
  • bootstrap做的网站谷歌网站优化推广
  • 网页搜索关键词长沙seo公司排名
  • 将自己做的网站发布到网上十大引擎网址
  • 旅游商城网站建设网络营销的概念与含义
  • 家政网站怎么做郑州seo技术代理
  • 做冻品海鲜比较大的网站有哪些网络营销的含义是什么
  • 深圳网站建设吗如何去推广一个app
  • 个人网站的留言板数据库怎么做株洲做网站
  • 网站建设试题以及答案广州seo网络优化公司
  • 电子政务网站系统发布软文平台
  • 做饼的网站热门关键词排名查询