21xrx.com
2025-04-02 05:10:11 Wednesday
文章检索 我的文章 写文章
C++小游戏源代码
2023-06-29 04:16:16 深夜i     13     0
C++ 小游戏 源代码

在计算机编程领域中,C++语言是一种非常流行的编程语言。由于其独特的面向对象编程特性,使得C++在游戏设计领域得到了广泛的应用。许多经典的电子游戏和小游戏都是用C++语言开发的,如《全民超神》、《愤怒的小鸟》等。

下面是一个使用C++语言编写的小游戏源代码。这个游戏是一个简单的拼图游戏,通过交换图片块来组成正确的图片,需要玩家具备良好的观察能力和反应速度。

#include<iostream>
#include<cstring>
#include<windows.h>
#include<conio.h>
#include<ctime>
using namespace std;
void gotoxy(int x, int y)//移动光标函数
{
  COORD c;
  c.X = x - 1;
  c.Y = y - 1;
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void setcolor(int color)//设置字体颜色
{
  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}
class Picture {//游戏类
private:
  int x, y, width, height;//各个方块的坐标和长宽
  int area[16];//各个方块的编号
public:
  Picture() {//初始化游戏
    x = 12;
    y = 5;
    width = 120;
    height = 40;
    for (int i = 0; i < 16; i++) {
      area[i] = i;
    }
    srand(time(NULL));//随机数种子
    for (int i = 15; i >= 0; i--) {//打乱方块顺序
      int r = rand() % (i + 1);
      swap(area[i], area[r]);
    }
  }
  void move() {//移动方块,即交换方块
    setcolor(7);
    int sel = getch();
    switch (sel) {
    case 72://up
      if (y == 5)
        break;
      
      swap(area[(y - 6) / 5 * 4 + (x - 12) / 30], area[(y - 11) / 5 * 4 + (x - 12) / 30]);
      y -= 5;
      break;
    case 80://down
      if (y == 35)
        break;
      
      swap(area[(y - 6) / 5 * 4 + (x - 12) / 30], area[(y + 1 - 6) / 5 * 4 + (x - 12) / 30]);
      y += 5;
      break;
    case 75://left
      if (x == 12)
        break;
      
      swap(area[(y - 6) / 5 * 4 + (x - 37) / 30], area[(y - 6) / 5 * 4 + (x - 12) / 30]);
      x -= 25;
      break;
    case 77://right
      if (x == 87)
        break;
      
      swap(area[(y - 6) / 5 * 4 + (x + 5 - 12) / 30], area[(y - 6) / 5 * 4 + (x + 30 - 12) / 30]);
      x += 25;
      break;
    }
  }
  void draw() {//输出屏幕
    gotoxy(1, 1);
    setcolor(7);
    cout << "F2:重新开始  ESC:退出游戏" << endl;
    for (int i = 0; i < 16; i++) {
      int yy = i / 4 * 5 + y;
      int xx = i % 4 * 30 + x;
      int k = area[i];
      if (k != 15) {
        gotoxy(xx, yy);
        cout << "####";
        gotoxy(xx, yy + 1);
        cout << "# " << k + 1 << " #";
        gotoxy(xx, yy + 2);
        cout << "####";
      }
      else {
        gotoxy(xx, yy);
        cout << "  ";
        gotoxy(xx, yy + 1);
        cout << "  ";
        gotoxy(xx, yy + 2);
        cout << "  ";
      }
    }
  }
  bool check() {//判断是否完成拼图
    for (int i = 0; i < 15; i++) {
      if (area[i] != i)
        return false;
      
    }
    return true;
  }
};
int main() {
  Picture pic;//实例化游戏
  pic.draw();//输出初始屏幕
  bool end = false;
  while (!end) {//循环
    pic.move();//移动交换方块
    pic.draw();//输出当前屏幕
    if (pic.check()) {//检查是否完成拼图
      setcolor(11);//输出恭喜语句
      gotoxy(1, 2);
      cout << "                   " << endl;
      gotoxy(1, 2);
      cout << "CONGRATULATIONS! YOU WON!" << endl;
      end = true;
      getch();//等待按键
    }
    int sel = getch();//等待按键
    switch (sel) {
    case 27://ESC退出
      end = true;
      break;
    case 60://F2重新开始
      pic = Picture();
      pic.draw();
      break;
    }
  }
  return 0;
}

以上就是一个简单的使用C++语言编写的拼图小游戏源代码。要想学习更多的C++语言知识,需要进行系统的学习和实践。希望各位编程爱好者可以通过这个小游戏源代码的学习,更好地了解和掌握C++语言的编程技巧。

  
  

评论区

请求出错了