21xrx.com
2024-11-05 19:30:20 Tuesday
登录
文章检索 我的文章 写文章
C++编写跳一跳游戏代码
2023-07-14 16:50:15 深夜i     --     --
C++ 编程 跳一跳游戏 代码实现

跳一跳游戏现在已经成为了很多年轻人娱乐的一种方式,很多人也想尝试自己编写这个游戏的代码。那么,今天我将向大家分享一下用C++编写跳一跳游戏的代码。

首先,我们需要先了解跳一跳游戏的基本规则。在游戏中,玩家需要通过按住屏幕使小人跳跃来不断向前。每次跳跃的长度不同,分数也会有所变化。如果小人跳跃的距离不够到达下一个方块,游戏就会结束。那么,根据这些规则,我们可以开始编写代码了。

以下是代码的大致框架:


#include <iostream>

#include <graphics.h>

#include <conio.h>

#include <time.h>

#include <windows.h>

#include <cmath>

using namespace std;

const int width = 480; //游戏界面的宽度

const int height = 640; //游戏界面的高度

int score = 0; //分数初始化为0

bool flag_jump = false; //跳跃标志位

//小人的类

class Person {

private:

  int x; //小人的横坐标

  int y; //小人的纵坐标

  int speed; //小人跳跃的速度

public:

  Person()

    x = width / 2; //小人一开始出现在屏幕中央

    y = height - 80; //小人一开始站在最下面

    speed = 0; //小人跳跃的速度初始化为0

  

  //画小人

  void draw() {

    setcolor(YELLOW); //小人的颜色为黄色

    setfillcolor(RED); //小人的头部颜色为红色

    fillcircle(x, y, 25); //画出小人的头部

    bar(x - 25, y, x + 25, y + 50); //画出小人的身体

    setcolor(WHITE);

    setfillcolor(WHITE);

    fillellipse(x - 10, y - 10, x - 5, y - 5); //画出小人的左眼

    fillellipse(x + 10, y - 10, x + 5, y - 5); //画出小人的右眼

  }

  //让小人跳跃

  void jump() {

    y -= speed; //小人的纵坐标减去速度

    speed -= 1; //速度递减

    if (y >= height - 80)  //小人落到地面上

      y = height - 80;

      speed = 0; //速度归零

      flag_jump = false; //跳跃标志位变为false

    

  }

  //获取小人横坐标

  int getx()

    return x;

  

  //获取小人纵坐标

  int gety()

    return y;

  

  //设置小人跳跃的速度

  void setspeed(int s)

    speed = s;

  

};

//方块的类

class Block {

private:

  int x; //方块的横坐标

  int y; //方块的纵坐标

  int size; //方块的大小

public:

  Block(int x_, int y_, int size_)

    x = x_;

    y = y_;

    size = size_;

  

  //画出方块

  void draw() {

    setcolor(BROWN); //方块的颜色为棕色

    setfillcolor(BROWN);

    bar(x, y, x + size, y + size); //画出方块

  }

  //获取方块的横坐标

  int getx()

    return x;

  

  //获取方块的纵坐标

  int gety()

    return y;

  

  //获取方块的大小

  int getsize()

    return size;

  

};

//生成下一个方块的函数

Block generateNextBlock(int current_x, int current_y, int size_min, int size_max) {

  int size = rand() % (size_max - size_min + 1) + size_min; //随机一个大小

  if (current_x + size >= width)  //如果超出屏幕范围

  if (current_x - size <= 0)  //同理

  current_x += rand() % 100 - 50; //随机一个x方向上的偏移量

  current_y -= rand() % 200 + 50; //随机一个y方向上的偏移量

  Block block(current_x, current_y, size); //生成方块

  return block;

}

int main() {

  initgraph(width, height); //初始化窗口

  int current_x = width / 2; //小人一开始出现在屏幕中央

  int current_y = height - 80; //小人一开始站在最下面

  int size_min = 30; //方块的最小尺寸

  int size_max = 80; //方块的最大尺寸

  Person person; //实例化小人对象

  Block current_block = generateNextBlock(current_x, current_y, size_min, size_max); //生成第一个方块

  while (true) {

    if (_kbhit()) { //判断键盘是否有按键按下

      char input = _getch(); //获取按下的键盘按键

      if (input == ' ') { //如果按下的是空格,那么小人跳跃

        person.setspeed(15); //设置小人跳跃的速度

        flag_jump = true; //跳跃标志位变为true

      }

    }

    person.draw(); //画出小人

    if (flag_jump) {

      person.jump(); //如果小人跳跃,那么小人执行跳跃动作

    }

    current_block.draw(); //画出当前方块

    Sleep(10); //延迟一段时间,以便看清楚动作

    cleardevice(); //清空屏幕

    current_y += 2; //方块往下掉落

    if (current_y >= height) { //如果方块超过屏幕底端,就生成下一个方块

      current_block = generateNextBlock(current_x, current_y, size_min, size_max);

      score++; //分数加1

    }

  }

  return 0;

}

总之,以上代码是用C++实现跳一跳游戏的基本框架。当然,它还有很多扩展和优化的地方。但希望这个代码可以为大家提供一些思路和基础。因为编程本就不是一条固定的路,需要不断地去尝试、去实践,才能真正掌握它。

  
  
下一篇: C++ 考试试题

评论区

{{item['qq_nickname']}}
()
回复
回复