当前位置: 首页 > news >正文

【C++】控制台小游戏

移动:W向上,S上下,A向左,D向右

程序代码:

#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;bool gameOver;
const int width = 20;
const int height = 17;
int x, y, fruitX, fruitY, score;
int tailX[100], tailY[100];
int nTail;
enum eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN };
eDirection dir;void ClearScreen() {HANDLE hOut;COORD Position;hOut = GetStdHandle(STD_OUTPUT_HANDLE);Position.X = 0;Position.Y = 0;SetConsoleCursorPosition(hOut, Position);
}void Setup() {gameOver = false;dir = STOP;x = width / 2;y = height / 2;fruitX = rand() % width;fruitY = rand() % height;score = 0;
}void Draw() {ClearScreen();for (int i = 0; i < width + 2; i++)cout << "#";cout << endl;for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {if (j == 0)cout << "#";if (i == y && j == x)cout << "O";else if (i == fruitY && j == fruitX)cout << "*";else {bool print = false;for (int k = 0; k < nTail; k++) {if (tailX[k] == j && tailY[k] == i) {cout << "o";print = true;}}if (!print) cout << " ";}if (j == width - 1)cout << "#";}cout << endl;}for (int i = 0; i < width + 2; i++)cout << "#";cout << endl;cout << "Score:" << score << endl;
}void Input() {if (_kbhit()) {switch (_getch()) {case 'a':dir = LEFT;break;case 'd':dir = RIGHT;break;case 'w':dir = UP;break;case 's':dir = DOWN;break;case 'x':gameOver = true;break;}}
}void Logic() {int prevX = tailX[0];int prevY = tailY[0];int prev2X, prev2Y;tailX[0] = x;tailY[0] = y;for (int i = 1; i < nTail; i++) {prev2X = tailX[i];prev2Y = tailY[i];tailX[i] = prevX;tailY[i] = prevY;prevX = prev2X;prevY = prev2Y;}switch (dir) {case LEFT:x--;break;case RIGHT:x++;break;case UP:y--;break;case DOWN:y++;break;default:break;}if (x >= width) x = 0;else if (x < 0) x = width - 1;if (y >= height) y = 0;else if (y < 0) y = height - 1;for (int i = 0; i < nTail; i++)if (tailX[i] == x && tailY[i] == y)gameOver = true;if (x == fruitX && y == fruitY) {score += 10;fruitX = rand() % width;fruitY = rand() % height;nTail++;}
}int main() {Setup();while (!gameOver) {Draw();Input();Logic();Sleep(100);}return 0;
}

运行结果

http://www.xdnf.cn/news/595171.html

相关文章:

  • 【人工智能】低代码基础技术讲解,规则引擎,在低代码平台上的作用,有哪些规则引
  • 前端请求状态出现CORS错误
  • CarPlay有线连接流程
  • 陕西安全员考试报名流程是怎样的?
  • 【Python3教程】Python3 文件(File)方法详解
  • 谷歌开源医疗领域多模态生成式AI模型:medgemma-4b-it
  • 完全禁用 Actuator 功能
  • 6个月Python学习计划 Day 1
  • Baklib企业知识中台AI实践
  • 2025年重庆水利水电安全员 A证考试精选题
  • Java设计模式
  • 爱博精电正式入驻京东平台,为客户提供更高效、便捷的采购体验
  • 结构型:装饰器模式
  • 项目开发中如何Git如何保持官方补丁更新
  • 工业物联网中隐私保护入侵检测的联邦学习增强型区块链框架
  • YOLOv11模型训练
  • Spring Ioc和Aop,Aop的原理和实现案例,JoinPoint,@Aspect,@Before,@AfterReturning
  • 如何使用小爱音响控制海尔等第三方平台设备
  • 从实验室到产业化:探究FSHD 技术发展史如何重塑显示行业格局?
  • 【物理学】声子:凝聚态物理中的关键概念
  • 视觉理解多模态模型转为API服务
  • 【Hexo】1.搭建本地初始默认的博客
  • 链表day4
  • 多线程初阶(3)
  • 数据表格控件TeeGrid for VCL/FMX:让数据“说话”更直观!
  • Android滑动冲突解决方法
  • 西交交互增强与细节引导的具身导航!OIKG:基于观察图交互与关键细节融合框架下的视觉语言导航
  • unittest
  • GITLIbCICD流水线搭建
  • 【Java高阶面经:数据库篇】17、分库分表分页查询优化:告别慢查询与内存爆炸