C++基础知识(一) 键盘输入

        不得不说已经学过C++有两年的时间了,但是之前不论是做实验还是干活,所使用的工具都不是CPP。所以现

在,基本上已经忘得差不多很可以了。现在重新开始对C++进行学习,写一些博客,对自己所学过的东西进行总结与思

考。这里说的C++的基础知识是指,除过C++的面向对象那一套的所有的东西,因为这些是学习后面的面向对基

础,所以称之为C++基础知识。


              废话了这么多。我首先学习的是C++的键盘输入。


              在C++中,有两个标准的输入输出流对象——cin和cout,他们包含在iostream这个头文件中。cin和cout分别

接键盘和显示器。这里只介绍cin,cin的语法格式为

              <
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的C++实现贪吃蛇的示例代码,供参考: ```c++ #include <iostream> #include <conio.h> // 用于控制台输入输出 #include <windows.h> // 用于控制台窗口大小和光标位置 using namespace std; const int width = 20; // 游戏区域宽度 const int height = 20; // 游戏区域高度 int x, y; // 蛇头位置 int fruitX, fruitY; // 水果位置 int tailX[100], tailY[100]; // 蛇身位置 int nTail; // 蛇身长度 enum eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN }; // 枚举方向 eDirection dir; // 当前方向 void Setup() { srand(time(NULL)); // 随机数种子 dir = STOP; // 初始方向为静止 x = width / 2; // 初始蛇头位置 y = height / 2; fruitX = rand() % width; // 初始水果位置随机生成 fruitY = rand() % height; nTail = 0; // 初始蛇身长度为0 } void Draw() { system("cls"); // 清空控制台窗口 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 << "F"; // 输出水果 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; } 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': dir = STOP; 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) dir = STOP; } if (x == fruitX && y == fruitY) // 如果蛇头碰到水果,长度加一,重新生成水果 { nTail++; fruitX = rand() % width; fruitY = rand() % height; } } int main() { Setup(); while (dir != STOP) { Draw(); Input(); Logic(); Sleep(50); // 控制帧率 } return 0; } ``` 这段代码中用到了控制台窗口输出、随机数生成、键盘输入、帧率控制等技巧,需要了解一些C++基础知识才能看懂。如果您对这些知识还不熟悉,建议先学习一下C++的基础语法和控制台编程相关的知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值