游戏中与用户移动与道具移动相结合

//下边是一个用户与电脑对战的<飞机大战>游戏

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>

//这里为了大部分小白方便查看,游戏中的数据都使用全局变量,可以自行对比代码尝试用指针去实现
int Fx,Fy;//飞机位置
int High,Width,Top,Bottom;//地图边框
int pand=0,Xx,Xy;//我方子弹位置
int Qx,Qy;//敌方飞机的位置
int Qpand=0,Mx,My;//敌方子弹位置

void gotoxy();//窗口句柄
void Num();//初始化数据
void Map();//打印地图
char DateWithInput();//与用户输入有关的数据更新
char DateWithoutInput();//与用户输入无关的更新
void XPand();//判断用户是否发射子弹
void QFox();//敌方飞机
void QPand();//判断敌方子弹是否发射
void Pause();//按ESC实现暂停
int main ()
{
char cChar;
Num();
while(1)
{
Map();
cChar=DateWithInput();
DateWithoutInput(cChar);
}
system("pause");
return 0;
}
void gotoxy(int x,int y)
{
COORD pre = {x,y};
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut,pre);
}
void Num()
{
High=20; Top=0;
Width=40; Bottom=0;
Fx=10; Fy=10;
Xx=-1; Xy=-1;
Qx=3; Qy=2;
Mx=-1; My=-1;
}
void Map()
{
int i,j;
gotoxy(0,0);
for(i=0;i<High;i++)
{
for(j=0;j<Width;j++)
{
if((i==Top||i==High-1)||(j==Bottom||j==Width-1))
printf("*");
else if(i==Fx&&j==Fy)
printf("A");
else if(i==Xx&&j==Xy)
printf("m");
else if(i==Qx&&j==Qy)
printf("@");
else if(i==Mx&&j==My)
printf("$");
else
printf(" ");
}
printf("\n");
}
}
char DateWithInput()
{
char cChar;
if(kbhit())
{
cChar=getch();
switch(cChar)
{
case ‘w‘:
if(Fx==High-1||Fx==Top+1)
break;
Fx--;
break;
case ‘a‘:
if(Fy==Width-1||Fy==Bottom+1)
break;
Fy--;
break;
case ‘s‘:
if(Fx==High-1||Fx==Top+1)
break;
Fx++;
break;
case ‘d‘:
if(Fy==Width-1||Fy==Bottom+1)
break;
Fy++;
break;
default:
return cChar;
break;
}
}
return cChar;
}
char DateWithoutInput(char cChar)
{
XPand(cChar);
Pause(cChar);
QFox();
}
void XPand(char cChar)
{
if(pand==0)
{
if(cChar==‘j‘)
{
Xx=Fx-1;
Xy=Fy;
pand=1;
}
}
else
{
if(Xx==0)
{
pand=0;
Xx=-1;
Xy=-1;
}
if(Xx==Qx&&Xy==Qy)
{
system("cls");
printf("敌方失败!");
Sleep(2000);
exit(0);
}
Xx--;
}
}
void QFox()
{
if(Qpand==0)
{
Sleep(50);
if(Qy<Fy)
Qy++;
else if(Qy>Fy)
Qy--;
else
{
Qpand=1;
Mx=Qx+1;
My=Qy;
}
}
else
{
if(Qy>Fy)
Qy++;
else if(Qy<Fy)
Qy--;
else
{
if(Width-Qy>Qy)
Qy--;
else
Qy++;
}
if(Mx==High)
{
Mx=-1;
My=-1;
Qpand=0;
}
if(Mx==Fx&&My==Fy)
{
system("cls");
printf("失败!");
Sleep(2000);
exit(0);
}
Mx++;

}
}
void Pause(char cChar)
{
if(cChar==27)
{
system("cls");
system("pause");
}
}

原文地址:https://www.cnblogs.com/yylgoodjob/p/11875377.html

时间: 2024-10-17 02:01:33

游戏中与用户移动与道具移动相结合的相关文章

游戏中百万用户排行设计与实现

排行榜在游戏中非常常见的功能之一,在游戏中有各种排行榜,如工会活跃度,玩家的英雄战斗力排行等.当数据上亿时,如果使用数据库直排是致命的慢,远远超出用户接受的响应时间.也对数据库造成非常大的压力.本文将会讲述千万用户级别的用户排行系统的一些设计理念并讲述数据库直排以及使用桶排和内存数据优化排行榜. 在讲述设计前,有必要先了解一些基础理论,文章将会先讲述什么排行榜的类别,排行规则和排名分布,然后进一步结合以往写的一个简单的排行系统Nagi,讲述数据库直排和使用桶排技术,以及内存缓存技术等. 排行榜的

负责制作游戏中场景和非武器类道具的建模、贴图、渲染。

http://www.acfun.tv/a/aa4304304 http://www.acfun.tv/a/aa4304443 http://www.acfun.tv/a/aa4304594 http://www.acfun.tv/a/aa4304743 http://www.acfun.tv/a/aa4304878 http://www.acfun.tv/a/aa4305035 http://www.acfun.tv/a/aa4305230 http://www.acfun.tv/a/aa43

游戏中的音效

1. 游戏中的即时音效: 在游戏中,根据情况播放的即时音效较为短暂.可以重复.也可以同时播放.由于Android中提供的MediaPlayer会占用大量的系统资源,而且播放时还会进行缓冲,有较大的延时,因此使用MediaPlayer无法实现即时音效的播放.而在Android中专门提供的SoundPool类主要用于管理和播放应用程序中的声音资源,使用该类时首先需要通过该类将声音资源加载到内存中,然后在需要的即时音效的地方播放即可,几乎没有延时现象.[由于SoundPool设计的初衷是用于无延时地播

游戏中的技能数据结构

问题:游戏中上百个技能是如何储存的,如果调用的,不会是一起加载,if判断一个一个的吧? 回答: 蓝色的字体是我们游戏中的做法 主流的做法是通过 Add Buff 和DeBuff 来实现的,下面简单Buff的释放方式 最简单的Buff需要有如下通用属性: 1.生效时间->在添加到对象上后,作用的时间长度,一般有立即作用,延迟一段时间生效等等 2.作用时间->指该Buff在对象身上作用的时间,生效后立即完全,如普通攻击,还有持续作用的,如中毒后持续扣血,眩晕等等 3.作用对象->某些技能制定

silverlight开发游戏中的大坑

最初做<金X>使用silverlight是因为看了深蓝色的右手的silverlight游戏开发教程,这里赞一下,教程写的非常好!做游戏的基础思想均涵盖了,能够给游戏开发的新手提供很多思维方式上的引导. 但是在我个人开发.发布金X的过程中,陆续发现有一些silverlight的大坑,这里给大家分享一下,防止大家犯重复错误. 1.DateTime数据结构的处理 在游戏中,如果想使用DateTime数据结果来存时间的话,一定要慎用DateTime.ToString和DateTime.Parse方法.

浅谈游戏中BOSS设计的思路

对于大多数游戏来说,BOSS在其设计上都有着不可替代的作用,也是玩家印象最为深刻的一部分.近期自己也有在做BOSS的设计工作,有一些心得想要分享一下: 1.明确BOSS的设计目的 在设计之初,我们一定要想明白,设计这个BOSS的目的在于什么,一场BOSS战往往需要花费巨大的成本来制作:美术需要花费大量时间.经历制作与其相关的多种美术资源:开发需要编写大量代码来实现BOSS相对复杂的行为,以及实现对应动画.特效及相关音频资源.一场失败的BOSS战设计,不仅会花费大量的成本,还会令玩家感到十分反感.

详解 C 语言开发五子棋游戏以及游戏中的重要算法与思路

重拾 C 语言之后发现,原来 C 语言是那么的简洁,对于写小项目来讲,C 语言是那么的合适,然后,博主自己写了一个五子棋游戏,同样是基于博主自己封装的 nkCEngine 代码库编写,其实整个游戏里面大部分代码都用在逻辑处理上了,图形处理以及窗口创建的部分,因为有高度封装的 nkCEngine,基本上可以忽略不计,这篇博文来讲一讲 C 语言开发一个简单的五子棋游戏,这个游戏不包含人机对战的逻辑,所以唯一的难点估计就是在于如何判断下棋的一方在下棋时候是否获胜了,同时博主也会介绍一个游戏开发中最经常

pygame系列_游戏中的事件

先看一下我做的demo: 当玩家按下键盘上的:上,下,左,右键的时候,后台会打印出玩家所按键的数字值,而图形会随之移动 这是客观上面存在的现象. 那么啥是事件呢? 你叫我做出定义,我不知道,我只能举个例子说明,例如接下来的代码中,列出来一些关于游戏中的事件 ''' 事件 产生途径 参数 QUIT 用户按下关闭按钮 none ATIVEEVENT Pygame被激活或者隐藏 gain, state KEYDOWN 键盘被按下 unicode, key, mod KEYUP 键盘被放开 key, m

[原创图书]《ActionScript3.0游戏中的图像编程》连载——前言

1946年,计算机在第三次工业革命的推动下得以诞生并发展.从此地球上多了一类人,他们的世界很简单,每天不是和0接触,就是跟1来往.他们低调做人,高调做事,他们务实为民,不求名利,他们,就是可爱可人,可歌可泣的IT工作者--程序员! 都说程序员不善表达,没错,离开0和1,程序员就几乎不会说话了.与此同时,程序员也恰恰是最善于表达的人,他们只用0和1这两个数字,就可以准确无误地将用户的需求传达给电脑并使其正确运行,其语言之简炼,其算法之精准,其逻辑之严谨,其结果之准确,试问除了程序员,还有谁可以做得