0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C/C++自制程序:双人击球游戏

C语言编程学习基地 来源:C语言编程学习基地 2023-02-13 14:51 次阅读

每天一个编程小项目,提升你的编程能力!

游戏说明

Player1玩家通过 W、S 按键控制左板上下移动,Player2 玩家通过 O、L 按键控制右板上下移动。在游戏过程中,小球的速度会随着接触木板的次数增加而加快,增加游戏难度。当小球没有碰到木板时游戏结束。

游戏效果

ee0b542c-aaa0-11ed-bfe3-dac502259ad0.png

简单了解游戏后我们就来试试吧!(直接上源码,大家可以看注释)

///////////////////////////////////////////////////
// 程序名称:双人击球游戏
// 编译环境:VS2010,EasyX_20200902
//


#include 
#include 


int main()
{
  initgraph(640, 480);
  srand(GetTickCount());
  setbkcolor(WHITE);
  cleardevice();


  setfillcolor(BLACK);
  setlinecolor(BLACK);
  settextstyle(30, 0, L"verdana");
  settextcolor(BLACK);


  int p1_x, p1_y, p2_x, p2_y, ball_x, ball_y;
  int dx, dy;
  int win = 1;              // 赢玩家
  p1_x = 45;                // 左板
  p1_y= 240;
  p2_x = 595;                // 右板
  p2_y = 240;  
  ball_x = rand() % 240 + 200;      // 小球 x 坐标
  ball_y = rand() % 180 + 150;      // 小球 y 坐标
  dx = (rand() % 2 * 2 - 1)*2;      // 小球移动增量
  dy = (rand() % 2 * 2 - 1)*2;      // 小球移动增量


  outtextxy(190, 200, L"Put Enter To Begin");
  while(_getwch() != 13);


  cleardevice();


  // player
  settextstyle(20, 0, L"Verdana");
  outtextxy(20, 50, L"Payer1");
  outtextxy(565, 50, L"Player2");


  // 提示
  settextstyle(15, 0, L"Verdana");
  outtextxy(20, 400, L"W 向上");
  outtextxy(20, 425, L"S 向下");
  outtextxy(590, 400, L"O 向上");
  outtextxy(590, 425, L"L 向下");


  line(50, 100, 590, 100);                      // 上边界
  line(50, 380, 590, 380);                      // 下边界
  solidcircle(ball_x, ball_y, 10);


  wchar_t key=0;
  while(true)
  {
    clearcircle(ball_x, ball_y, 10);                // 清除小球位置
    clearrectangle(p1_x - 5, p1_y - 20, p1_x + 5, p1_y + 20);    // 清除左板
    clearrectangle(p2_x - 5, p2_y - 20, p2_x + 5, p2_y + 20);    // 清除右板


    if(_kbhit())
    {
      // 获取按键
      key = _getwch();    
  
      // 判断板移动的位置
      if(key == L's')
        p1_y += 30;
      else if(key == L'w')
        p1_y -= 30;
      else if(key == L'l')
        p2_y += 30;
      else if(key == L'o')
        p2_y -= 30;
    }


    // 判断左右俩板是否超出移动界限
    if((p1_y - 20) < 100)
      p1_y = 120;
    else if((p1_y + 20) > 380)
      p1_y = 360;
    else if((p2_y - 20) < 100)
      p2_y = 120;
    else if((p2_y + 20)> 380)
      p2_y = 360;


    // 画左右两板位置
    solidrectangle(p1_x - 5, p1_y - 20, p1_x + 5, p1_y + 20);
    solidrectangle(p2_x - 5, p2_y - 20, p2_x + 5, p2_y + 20);


    ball_x = ball_x + dx;
    ball_y = ball_y + dy;


    // 判断小球遇到左右板反弹
    if(ball_x < 62 )
    {
      if(ball_y < p1_y + 20 && ball_y > p1_y - 20)
      {
        dx = -dx;
        dx += dx / 10;
      }
      else 
      {
        win = 2;
        solidcircle(ball_x, ball_y, 10);
        break;
      }
    }
    else if(ball_x > 578)
    {
      if(ball_y < p2_y + 20 && ball_y > p2_y - 20)
      {
        dx = -dx;
        dx += dx / 10;
      }
      else
      {
        solidcircle(ball_x, ball_y, 10);
        break;
      }
    }


    // 判断小球遇到上下边界反弹
    if(ball_y < 115)
      dy = -dy;
    else if(ball_y > 364)
      dy = -dy;


    solidcircle(ball_x, ball_y, 10);


    Sleep(20);
  }


  settextstyle(30, 0, L"Verdana");
  if(win == 1)
    outtextxy(250, 200, L"Player1 赢");
  else
    outtextxy(250, 200, L"Player2 赢");
  
  _getch();
  closegraph();
  return 0;
}

大家赶紧去动手试试吧!

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 游戏
    +关注

    关注

    2

    文章

    727

    浏览量

    26257
  • 编程
    +关注

    关注

    88

    文章

    3557

    浏览量

    93524
  • 程序
    +关注

    关注

    116

    文章

    3753

    浏览量

    80720
  • C++
    C++
    +关注

    关注

    21

    文章

    2094

    浏览量

    73445

原文标题:【项目实战】C/C++自制程序:双人击球游戏

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言与C++的区别

    在很大程度上,C++C的超集,这意味着一个有效的C程序也是一个有效的C++程序
    发表于 09-16 10:20 1118次阅读

    c++程序设计教程

    C++是一种高效应用的程序设计语言,它即可进行过程化程序设计,也可进行面向对象程序设计,因而成了编程人员最广泛使用的工具。学好C++,很容易
    发表于 04-08 00:36 124次下载
    <b class='flag-5'>c++</b><b class='flag-5'>程序</b>设计教程

    C/ C++/ Java 程序设计经典教程》

    C/ C++/ Java 程序设计经典教程》(Deitel 著) ●集作者几十年程序设计经验之精华,从软件工程的原理强调结构化程序设计方
    发表于 04-08 02:10 398次下载

    c++程序设计语言题解

    c++程序设计语言题解是与Bjarne Stroustrup的《C++程序设计语言》一书配套使用的习题解答,为从《C++
    发表于 09-05 16:00 121次下载
    <b class='flag-5'>c++</b><b class='flag-5'>程序</b>设计语言题解

    c++程序设计习题答案

    本书是与Bjarne Stroustrup的《C++程序设计语言》一书配套使用的习题解答,为从《C++程序设计语言》中精选出
    发表于 09-05 16:21 2次下载
    <b class='flag-5'>c++</b><b class='flag-5'>程序</b>设计习题答案

    C++课件、习题及答案

    *1.1  从CC++*1.2  最简单的C++程序 1.3  C++
    发表于 09-08 09:35 108次下载
    <b class='flag-5'>C++</b>课件、习题及答案

    C++C/C++程序设计教程_C/C++概述

    C++基础知识,简要介绍了C++的一些简单知识,概念,函数
    发表于 12-25 10:15 0次下载

    面向对象的程序设计(C++

    面向对象的程序设计(C++).面向对象的基本思想 C++C的非面向对象扩充 继承性与派生类 类库和基于C++的良好OOP风格。
    发表于 03-22 14:40 0次下载

    C++程序设计原理与实践

    C++程序设计原理与实践
    发表于 02-28 23:01 0次下载

    《Visual C++游戏编程基础》电子书.pdf

    《Visual C++游戏编程基础》电子书.pdf
    发表于 04-23 11:27 0次下载
    《Visual <b class='flag-5'>C++</b><b class='flag-5'>游戏</b>编程基础》电子书.pdf

    C++程序设计上机指导.pdf

    C++程序设计上机指导
    发表于 05-02 10:20 28次下载

    C++入门教程之C++程序设计的课件资料免费下载

    本文档的主要内容详细介绍的是C++入门教程之C++程序设计的课件资料免费下载主要内容包括了:1. 认识C++2. C++的现状和发展3.
    发表于 12-07 08:00 33次下载
    <b class='flag-5'>C++</b>入门教程之<b class='flag-5'>C++</b><b class='flag-5'>程序</b>设计的课件资料免费下载

    C++程序设计教程之C++的初步知识的详细资料说明

    C++程序设计教程之C++的初步知识的详细资料说明包括了:1. 从CC++,2 . 最简单的C++
    发表于 03-14 14:48 31次下载
    <b class='flag-5'>C++</b><b class='flag-5'>程序</b>设计教程之<b class='flag-5'>C++</b>的初步知识的详细资料说明

    C++程序设计的基础知识初步了解C++的资料免费下载

    本文档的主要内容详细介绍的是C++程序设计的基础知识初步了解C++的资料免费下载包括了:1 认识C++,2 C++的现状和发展,3
    发表于 06-10 08:00 25次下载
    <b class='flag-5'>C++</b><b class='flag-5'>程序</b>设计的基础知识初步了解<b class='flag-5'>C++</b>的资料免费下载

    qt用C++写的2048小游戏源代码

    qt用C++写的2048小游戏源代码
    发表于 09-27 11:48 1次下载