Visual C++游戏编程基础之行为型AI游戏

本文介绍了使用Visual C++开发一个回合制游戏的基础,包括设计目标、基本思路和实现步骤。游戏中,玩家与怪物交替行动,怪物根据HP智能选择攻击方式。当一方HP归零时,游戏结束。文章还给出了详细代码实现。
摘要由CSDN通过智能技术生成

一、设计目标

1.建立一个回合制游戏,角色设定怪物与玩家,并在下方显示它们的生命值;

2.在背景图上贴上攻击标志,鼠标点击该标志时,玩家向怪物发动 攻击,并在左下角输出怪物的状态信息;

3.玩家回合结束后,轮到怪物,根据怪物的HP来决定要选择哪种攻击方式或者逃跑或重伤而死;

4.当某一方HP为0时,贴上游戏结束标志;

二、基本思路

1.初始化过程中,将背景图、怪物及其HP、玩家及其HP、攻击标志贴到mdc,最后在贴到hdc;

2.单击左键,WndProc函数处理该消息,获取光标位置判断是否在攻击标志范围内,有就将attack设为true;

3.接着回到MyPaint函数,玩家开始攻击,用f来表示贴图的次数,将攻击图像贴在怪物身上持续6个画面,然后f更新到第10个画

   面时,降低怪物的HP,并把伤害输出到左下角的文本框,并检查怪物的状态;

4.当f更新到第15个画面时,这次是怪物的回合,设定若怪物HP>20,有90%几率发动普通攻击,10%的几率发动魔法攻击,HP

   低于20就有5种情况:普攻、魔攻、全力攻、回血、逃跑,各有20%几率;

5.f更新到26个画面时,根据怪物的选择进行贴图,持续5个画面,当f更新到30时,减少玩家的HP并输出其状态到左下角,或者

   因血量太低逃跑或死亡;

6.一个回合结束,f重新设为0,等待下一回合,直到over=true,触发游戏结束标志;

三、效果

四、代码如下


#include "stdafx.h"
#include <stdio.h>

//结构体:储存怪物或玩家的状态信息
struct chr
{
	int		nHp;//目前生命值
	int		fHp;//最大生命值
	int		lv;//等级
	int		w;//加权值
	int		kind;//怪物的行为代号
};

//声明全局变量
HINSTANCE hInst;
HBITMAP	bg,sheep,girl,skill,slash,magic,recover,game;//skill--攻击命令图;slash--普通攻击图;magic--怪物魔法攻击图;recover--怪物恢复魔法图;game--游戏结束图
HDC		hdc,mdc,bufdc;
HWND	hWnd;
DWORD	tPre,tNow;
int		pNum,f,txtNum;//pNum--玩家跑动图编号;f--每一回合攻击更新的画面数;TxtNum--记录目前所要显示消息的总数
bool	attack,over;//attack记录玩家是否点击攻击命令;over一方生命值为0时,设为true
chr		player,monster;
char	text[5][100];//存储对战时要显示的消息

ATOM				MyRegisterClass(HINSTANCE hInstance);
BOOL				InitInstance(HINSTANCE, int);
LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);
void				MyPaint(HDC hdc);
void				MsgInsert(char*);//****新增要显示的消息到‘text’缓冲区,当显示的消息数目达到显示的上限数目时,删除最先的消息********************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值