球球大作战(阉割版)

  1. 单机的没什么意思?就直接讲双人

第一步,创建一个图形窗口,也就是所谓的画布,。第二步,定义三个结构体变量,分别是画布的长宽,还有玩家所控制的球的坐标和半径,以及作为养料的球,具体代码请看如下

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

然后的话放一张图片d3687f0fe14b42f7bd22c46229d717b1.jpg

 如上图所示,白跟绿是可以控制的,红球就是,是白球跟绿球变大的

最后感谢你们的观看,能看到这里,真的十分感谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值