我是c ++的初学者,我想创造简单的游戏。你有字符串向量,然后检查行输入是否与正确答案匹配。
我想生成随机数1,2或3.然后检查行是否匹配正确答案并计算点数。
我可能遗漏了一些基本的东西,但我不知道是什么。
问题:
码:
#include <iostream>
#include <vector>
#include <stdlib.h>
#include <time.h>
#include <string>
int main() {
int runde;
int tocke;
int cas;
std::cout << "\n" << "Pravila igre:" << "\n" << "Za pravilen odgovor dobis 1 tocko, za napacnega zgubis 2!"<<
"\n" << "Stevilo zivljenj si izberes sama!"<< "\n" << "\n" ;
std::cout << "Izberi stevilo zivljenj!:" << "\n";
std::cin >> runde ;
std::vector<std::string> latin = {"carum carvi", "artemisia absiinthium","coriandrum sativum"};
std::vector<std::string> slovene = {"navadna kumina", "pravi pelin", "koriander"};
tocke << 0;
cas << 0;
do {
int ind;
cas << cas + 1;
std::cout << "Round " << cas <<"! Ladies and gentlemans, buckle your seatbelts!"<<"\n" << "\n" ;
ind = std::rand() % 3;
std::cout << "ime rastline: " << slovene[ind] << "\n";
std::cin.ignore();
std::string line;
getline(std::cin, line);
std::cout << "\n";
if (latin[ind] == line){
std::cout << "Pravlino! Tocka zate!" << "\n";
tocke << tocke + 1;
std::cout << "Tocke == " << tocke << "\n" << "Zivjenja == " << runde << "\n" << "Prezivete runde == " << cas << "\n"<< "\n";
}
else
{
std::cout << "Napaka! :D" << "\n";
std::cout << "Pravilen odgovor == " << latin[ind] << "\n";
-- runde ;
tocke << tocke - 2;
std::cout << "Tocke == " << tocke << "\n" << "Zivjenja == " << runde << "\n" << "Prezivete runde == " << cas << "\n"<< "\n";
}
}while(runde >= 0 );
std::cout << "\n"<<"Stevilo tock == " << tocke <<"\n" << "St. prezivetih rund == " << cas - 1
<< "\n" ;
}
你似乎对运营商存在误解。 <<
不是作业,而是使用=
。所以tocke << 0;
不会将0
分配给tocke
,它会进行位移(在未初始化的变量上),然后丢弃结果。 tocke
保持未初始化,这会导致以后出现问题。
而不是这个:
tocke << 0;
cas << 0;
做这个:
tocke = 0;
cas = 0;
而不是cas << cas + 1;
做cas++
而不是tocke << tocke - 2;
做tocke -= 2;
。要了解赋值运算符的工作原理,您可以阅读它们here。最后但并非最不重要的是,尝试看看你的编译器是否给你任何警告,它应该抱怨使用未初始化的值。