暗香涌动——送与girlfrend游戏(C语言实现)
Posted 是梦吧,是你吧!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了暗香涌动——送与girlfrend游戏(C语言实现)相关的知识,希望对你有一定的参考价值。
目录
1 暗香涌动
这几天下大雪了,很喜欢雪,在我眼中的雪另有一般暗香涌动:
雪,像一床棉被铺盖着大地;
大地,像新娘披着洁白的婚纱;
梅,在雪里倔强的绽放,像是
新郎手中的玫瑰,
暗香涌动,简谱而高贵........
2 开心的眼眸
心情很好,然后我很开心的选了几套很喜欢的衣服:
3 游戏展现
送给女朋友的小小游戏
4 代码实现(C语言)
//===========头文件一览===================//
//在正式介绍gamebody函数之前,我们先看看定义在头文件的全局变量以及他们的作用
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#include <conio.h> //需要用到的函数头文件
#define height 25 //宏定义游戏边界的高度
#define width 50 //宏定义游戏边界的宽度
#define enemy_max 5 //宏定义敌人的最多数量
enum Option //枚举增加代码可读性
EXIT,
PLAY,
GUIDE,
;
enum Condition //表示游戏幕布上的情况
backspace, //空
enemy, //敌人
bullet, //子弹
;
int canvas[height][width]; //游戏幕布存储对应位置上的Condition信息
int score; //记录游戏分数
int x, y; //飞机头部的xy坐标
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("*");
else
printf(" ");
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码值为27
case ' ': 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;
//===============组合而成的gamebody函数==============
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;
//====包含PLAY(游戏)功能、GUIDE(操作说明)、EXIT(退出游戏)三种功能。====//
void menu()
printf("*****************\\n");
printf("** 飞机游戏 **\\n");
printf("**-------------**\\n");
printf("** 1.PLAY **\\n");
printf("** 2.GUIDE **\\n");
printf("** 3.EXIT **\\n");
printf("*****************\\n");
//==================游戏操作指南======================//
void guide()
printf("******************\\n");
printf("** 游戏操作指南 **\\n");
printf("**--------------**\\n");
printf("** e->上移 **\\n");
printf("** x->下移 **\\n");
printf("** s->左移 **\\n");
printf("** f->右移 **\\n");
printf("** w->返回 **\\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;
以上是关于暗香涌动——送与girlfrend游戏(C语言实现)的主要内容,如果未能解决你的问题,请参考以下文章