闲来无事用VC++写一个小游戏,消灭星星【连载五】

闲来无事用VC++写一个小游戏,消灭星星【连载五】

大家每次都可以在页面中下载本节内容的实现代码,一步一步从简单开始,逐步完成游戏的各种功能,如果大家有任何问题也欢迎留言交流。

1、本节要达到的效果:给游戏界面添加两个按键,鼠标经过时能高亮显示并显示提示信息,点击鼠标左键能够执行相应自定义操作,弹出提示对话框。

在这里插入图片描述

2、准备添加一个游戏按键

上一节我们说到了图像的移动,增加了很多游戏色彩。那么我们这一节,需要添加一个和玩家互动的游戏按钮。我们都知道一个游戏或程序少不了的控件要素,就是游戏按钮,它能让我们用户根据按钮选择不同的游戏内容,从而产生互动。从另一方面来说,如果游戏不能从玩家那里获取到一定的交互信息,游戏会变得非常枯燥无味。按键效果如下:

在这里插入图片描述

备注:我们暂时去掉上节图片随鼠标移动的效果,调整好图片的位置后继续添加游戏内容。

3、添加按键前的准备工作

从这里开始,我们需要添加一些类,为了文件便于管理,我们将所有的类文件都放在一个名为Library的文件夹中。具体添加类的操作方法各异,这里就不具体描述,达到目的就行,如果还有问题请留言讨论。

我们将在程序开始位置加入以下代码,在Library.h和Library.cpp中引用所有自定义类的头文件和源文件,详细代码见本节附件。

//插入自定义类,并放入Library文件夹

#include "Library/Library.h"

#include "Library/Library.cpp"

第一步:添加矩形(Rect)类

所有的按键都需要响应鼠标点击等消息后做出相应的处理,那么怎么判断鼠标是否在按键上呢,就需要给按键指定一个矩形区域,如果鼠标点击时的坐标在按键的矩形区域内则说明需要进行处理,否则无需处理。

在这里插入图片描述

加添一个矩形区域Rect类的的代码如下:

class Rect  
{
   

public:

	//矩形的左上角和右下角坐标分别为(ax,ay)和(bx,by)

	float ax;

	float ay;

	float bx;

	float by;

public:

	Rect(float rx=0,float ry=0,float tx=0,float ty=0);

	//获取矩形区域的水平宽度

	float	GetWidth();

	//获取矩形区域的垂直高度

	float	GetHeight();

	//将矩形区域移动到指定位置,有四个参数时,矩形的宽度和高度可能会根据参数改变宽度和高度

	void	MoveTo(float rx,float ry,float tx,float ty);

	//将矩形区域移动到指定位置,有两个参数时,矩形会在保持宽度和高度的情况下,移动到指定的位置坐标

	void	MoveTo(float rx,float ry);

	//判断指定坐标是否在矩形区域范围内

	bool	OnOver(float rx,float ry);

};
Rect::Rect(float rx,float ry,float tx,float ty)
{
   

	MoveTo(rx,ry,tx,ty);

}

float	Rect::GetWidth()
{
   

	return bx-ax;

}

float	Rect::GetHeight()
{
   

	return by-ay;

}

void	Rect::MoveTo(float rx,float ry,float tx,float ty)
{
   

	ax=rx;

	ay=ry;

	bx=tx;

	by=ty;

}

void	Rect::MoveTo(float rx,float ry)
{
   

	bx+=rx-ax;

	by+=ry-ay;

	ax=rx;

	ay=ry;
		
}

bool	Rect::OnOver(float rx,float ry)
{
   

	if((ax<=rx && rx<bx) && (ay<=ry && ry<by))
	{
   
		
		return true;
	
	}
	else
	{
   
		
		
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 我会用Java语言一个简单的扑克游戏,包括玩家与电脑之间的游戏,玩家可以从一副牌中选择5张卡牌,电脑也会从一副牌中选择5张卡牌,然后比较双方的牌权,最终确定胜负。首先,我会定义一个类,用于表示一张扑克牌,其中包括花色和点数。然后,我会定义一个方法,用于创建一副扑克牌,其中包括52张牌,每种花色13张牌。最后,我会定义一个函数,用于比较双方的牌,以确定胜负。 ### 回答2: 作为程序员,我可以使用Java编一个简单的扑克游戏。 首先,我会创建一个名为Card的类来表示一张扑克牌,其中包含花色和点数两个属性。然后,我会创建一个名为Deck的类来表示一副扑克牌,其中包含一个Card类型的数组来存储所有的牌。在Deck类中,我会实现初始化一副牌、洗牌和抽牌等方法。 接下来,我会创建一个名为Player的类来表示一个玩家,其中包含一个ArrayList来存储该玩家手中的牌。在Player类中,我会实现抽牌、出牌和计算手牌点数等方法。 然后,我会创建一个名为Game的类来表示整个游戏过程。在Game类中,我会创建两个玩家对象和一副扑克牌对象,并实现发牌、判断胜负和游戏结束等方法。 最后,我会创建一个名为Main的类作为程序的入口,用于初始化游戏和调用相关方法来进行游戏的进行。 以上就是用Java编一个简单的扑克游戏的基本思路。当然,根据游戏的复杂程度和具体要求,还可以对代码进行更多的优化和功能的扩展。 ### 回答3: 作为程序员,我会使用Java语言来编一个简单的扑克游戏。 首先,我会创建一个包含所有扑克牌的牌组,共计52张牌。每张牌有一个花色(黑桃、红心、方块、梅花)和一个点数(A、2-10、J、Q、K)。 然后,我会在游戏开始时洗牌,即将牌组中的所有牌打乱顺序。这可以通过随机交换牌组中的牌来实现。 接下来,我会定义两名玩家,一名玩家(玩家1)作为庄家,另一名玩家(玩家2)作为闲家。每名玩家会依次发两张牌。 游戏开始后,闲家可以选择要不要继续抽牌,直到他认为自己的牌足够接近21点,或者超过了21点(爆牌)。庄家则必须按照一定的规则来决定是否继续抽牌,例如当他的手牌点数小于17时必须继续抽牌。 然后,根据玩家手牌点数的大小来决定胜负。点数最接近21点且不超过的一方获胜。如果双方点数相同,则为平局。 最后,根据玩家的选择和游戏结果显示相应的信息,例如显示每位玩家的手牌、点数,以及谁赢谁输或者平局。 通过以上步骤,我会完成一个简单的扑克游戏。当然,还有很多细节可以完善和优化,例如加入更多的游戏规则、实现游戏的GUI界面等。这只是一个简单的示例,供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhooyu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值