21xrx.com
2024-09-20 00:55:18 Friday
登录
文章检索 我的文章 写文章
C++小游戏源代码
2023-06-29 04:16:16 深夜i     --     --
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++语言的编程技巧。

  
  

评论区

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