-
单机的没什么意思?就直接讲双人
第一步,创建一个图形窗口,也就是所谓的画布,。第二步,定义三个结构体变量,分别是画布的长宽,还有玩家所控制的球的坐标和半径,以及作为养料的球,具体代码请看如下
struct initgr
{
int width;
int hight;
}initg;
struct cirStruct
{
double width;
double hight;
int radius;
}cir1,cir2;
struct recir {
int width;
int hight;
int radius;
};
2.球的移动
在这里我用的是WINDOWS的函数,就那个名字特别长的GetAsyncKeyState( ),作用就是接收键盘输入,然后改变玩家所控制的位置,当然,这个条件的实现是把这个过程放在一个死循环当中,就不停的进行打印和删除,以达到一个连续的过程
if ( GetAsyncKeyState(VK_UP)) {
if (cir1.hight <= initg.hight / static_cast<double>(2)) {
cir1.hight += speed;
}
}
if (GetAsyncKeyState(VK_DOWN)) {
if (cir1.hight >= -initg.hight / static_cast<double>(2)) {
cir1.hight -= speed;
}
}
if (GetAsyncKeyState(VK_LEFT)) {
if (cir1.width >= -initg.width / static_cast<double>(2)) {
cir1.width -= speed;
}
}
if (GetAsyncKeyState(VK_RIGHT)) {
if (cir1.width <= initg.width / static_cast<double>(2)) {
cir1.width += speed;
}
}
if ( GetAsyncKeyState('W')) {
if (cir2.hight <= initg.hight / static_cast<double>(2)) {
cir2.hight += speed;
}
}
if (GetAsyncKeyState('S')) {
if (cir2.hight >= -initg.hight / static_cast<double>(2)) {
cir2.hight -= speed;
}
}
if (GetAsyncKeyState('A')) {
if (cir2.width >= -initg.width / static_cast<double>(2)) {
cir2.width -= speed;
}
}
if (GetAsyncKeyState('D')) {
if (cir2.width <= initg.width / static_cast<double>(2)) {
cir2.width += speed;
}
}
3.讲不下去了,兄弟们,你们直接看代码实现
玩家所控制球移动的函数
void movecir(double speed) {
if ( GetAsyncKeyState(VK_UP)) {
if (cir1.hight <= initg.hight / static_cast<double>(2)) {
cir1.hight += speed;
}
}
if (GetAsyncKeyState(VK_DOWN)) {
if (cir1.hight >= -initg.hight / static_cast<double>(2)) {
cir1.hight -= speed;
}
}
if (GetAsyncKeyState(VK_LEFT)) {
if (cir1.width >= -initg.width / static_cast<double>(2)) {
cir1.width -= speed;
}
}
if (GetAsyncKeyState(VK_RIGHT)) {
if (cir1.width <= initg.width / static_cast<double>(2)) {
cir1.width += speed;
}
}
if ( GetAsyncKeyState('W')) {
if (cir2.hight <= initg.hight / static_cast<double>(2)) {
cir2.hight += speed;
}
}
if (GetAsyncKeyState('S')) {
if (cir2.hight >= -initg.hight / static_cast<double>(2)) {
cir2.hight -= speed;
}
}
if (GetAsyncKeyState('A')) {
if (cir2.width >= -initg.width / static_cast<double>(2)) {
cir2.width -= speed;
}
}
if (GetAsyncKeyState('D')) {
if (cir2.width <= initg.width / static_cast<double>(2)) {
cir2.width += speed;
}
}
}
好的,就先写到这里,代码太多,我也不愿意放了
最后,如果想要我这个代码的,评论区联系我,加QQ或者微信,我发给你,当然发完即删,你好,我也好
另外,我这个代码整个的实现是用VS2022
然后的话放一张图片
如上图所示,白跟绿是可以控制的,红球就是,是白球跟绿球变大的