Finally made Rock, Paper, Scissors, Lizard, Spock C++

Finally made it :slight_smile: but it would be great to have feedback on how can I make it shorter without duplicating the IF statements too much
/*

Rock Paper Scissors Lizzard Spock

(The Big Bang Theory)

*/

#include <stdlib.h>

#include

int main() {

srand (time(NULL));

int computer = rand() % 3 + 1;

int user = 0;

// Live long and prosper

std::cout << “========================\n”;

std::cout << “rock paper scissors lizzard spock!\n”;

std::cout << “========================\n”;

std::cout << “1) Rock\n”;

std::cout << “2) Paper\n”;

std::cout << “3) Scissors\n”;

std::cout << “4) Lizzard\n”;

std::cout << “5) Spock\n”;

std::cout << "shoot! ";

std::cin >> user;

if (user == 1)

{

std::cout << “Rock\n”;

}

if (user == 2)

{

std::cout << “Paper\n”;

}

if (user == 3)

{

std::cout << “Scissors\n”;

}

if (user == 4)

{

std::cout << “Lizzard\n”;

}

if (user == 5)

{

std::cout << “Spock\n”;

}

std::cout << “========================\n”;

std::cout<< computer;

std::cout << “========================\n”;

if (computer == 1)

{

std::cout << “Rock\n”;

}

if (computer == 2)

{

std::cout << “Paper\n”;

}

if (computer == 3)

{

std::cout << “Scissors\n”;

}

if (computer == 4)

{

std::cout << “Lizzard\n”;

}

if (computer == 5)

{

std::cout << “Spock\n”;

}

//Rock vs Paper

if (user == 1 && computer == 2)

{

std::cout << “Computer Wins”;

}

else if (user == 2 && computer == 1)

{

std::cout << “You Win”;

}

else if (user == 2 && computer == 2)

{

std::cout << “Tie”;

}

else if (user == 1 && computer == 1)

{

std::cout << “Tie”;

}

//Rock vs Scissors

if (user == 3 && computer == 1)

{

std::cout << “Computer Wins”;

}

else if (user == 1 && computer == 3)

{

std::cout << “You Win”;

}

else if (user == 3 && computer == 3)

{

std::cout << “Tie”;

}

else if (user == 1 && computer == 1)

{

std::cout << “Tie”;

}

//Paper vs Scissors

if (user == 2 && computer == 3)

{

std::cout << “Computer Wins”;

}

else if (user == 3 && computer == 2)

{

std::cout << “You Win”;

}

else if (user == 3 && computer == 3)

{

std::cout << “Tie”;

}

else if (user == 2 && computer == 2)

{

std::cout << “Tie”;

}

//Lizard

if (user == 4 && computer == 1)

{

std::cout << “Computer Wins”;

}

else if (user == 4 && computer == 4)

{

std::cout << “Tie”;

}

else if (user == 4 && computer == 3)

{

std::cout << “Computer Wins”;

}

else if (user == 4 && computer == 2)

{

std::cout << “You Win”;

}

else if (user == 2 && computer == 4)

{

std::cout << “Computer Wins”;

}

if (user == 4 && computer == 5)

{

std::cout << “You win”;

}

if (user == 1 && computer == 4)

{

std::cout << “You win”;

}

else if (user == 3 && computer == 4)

{

std::cout << “You win”;

}

else if (user == 2 && computer == 4)

{

std::cout << “Computer wins”;

}

else if (user == 4 && computer == 2)

{

std::cout << “You win”;

}

if (user == 5 && computer == 4)

{

std::cout << “Computer win”;

}

//Spock

if (user == 5 && computer == 4)

{

std::cout << “Computer Wins”;

}

else if (user == 5 && computer == 3)

{

std::cout << “You Win”;

}

else if (user == 5 && computer == 2)

{

std::cout << “Computer Wins”;

}

else if (user == 5 && computer == 1)

{

std::cout << “You win”;

}

else if (user == 3 && computer == 5)

{

std::cout << “Computer Wins”;

}

else if (user == 2 && computer == 5)

{

std::cout << “You win”;

}

else if (user == 1 && computer == 5)

{

std::cout << “Computer Wins”;

}

}

I don’t know C++, but I do know C.
If I were you, I would use the users input as an array index, and just print what’s in the array, like this:

OPTIONS = ["", "Rock\n", "Paper\n", "Scissors\n", "Lizard\n", "Spock\n"];
std::cout << OPTIONS[user];
std::cout << OPTIONS[computer];
1 Like

Also, if you have an 2D array, like this:

COMBAT = [[0, -1, 1, 1, -1],
                    [1, 0, -1, -1, 1],
                    [-1, 1, 0, 1, -1],
                    [-1, 1, -1, 0, 1],
                    [1, -1, 1, -1, 0]];

You can just check the winner like this:

if (COMBAT[user][computer] == 1)
{
    //User Wins!
}
else if (COMBAT[user][computer] == -1)
{
    //Computer Wins!
}
else
{
    //Tie!
}

You see, if you have it like this, you could even add more options. you would just need to add them to the selection part and the 2D array!

1 Like

Also, by the by, you can put code into a post with the </> symbol in the editor.

1 Like

Thank you soo much :slight_smile: I will give a go

Oh, by the way, you should subtract 1 from the user and computer values before you use them as an index.

Also, do you have a link you could share of the program?

Hi Dyenamite,
Sorry for the delay, how do you setup a custom program to share with the community?

  1. Create a GitHub Account
  2. Download GitHub Desktop
  3. Create a public Repository, with a lisence!
  4. Put your file(s) into the folder you’ve chosen
  5. Publish your repository
  6. Now you can send folks the URL, which allows them to download the program
2 Likes

Yo Dyenamite,
Here’s the GitHub code RockPaperScissorsLizardSpock/GameCode at main · KrzysztofSzkoda/RockPaperScissorsLizardSpock · GitHub

1 Like

I made a pull request, if you want to accept it.

1 Like

Wow learned a lot from reading your code and the replies of the dynamite dude thankyou!

2 Likes

Hi Dynamite,
I tried to test it on C++ via Codeacademy but for some reason there’s something wrong with the format when I paste and copied
ERROR below

rock_paper_scissors.cpp: In function ‘int main()’:
rock_paper_scissors.cpp:22:70: error: invalid conversion from ‘const char*’ to ‘int’ [-fpermissive]
es[5] = {“Rock\n”,“Paper\n”,“Scissors\n”,“Lizard\n”,“Spock\n”};
^
rock_paper_scissors.cpp:22:70: error: invalid conversion from ‘const char*’ to ‘int’ [-fpermissive]
rock_paper_scissors.cpp:22:70: error: invalid conversion from ‘const char*’ to ‘int’ [-fpermissive]
rock_paper_scissors.cpp:22:70: error: invalid conversion from ‘const char*’ to ‘int’ [-fpermissive]
rock_paper_scissors.cpp:22:70: error: invalid conversion from ‘const char*’ to ‘int’ [-fpermissive]
rock_paper_scissors.cpp:26:23: error: ‘user’ cannot be used as a function
int user = user(moves);
^
rock_paper_scissors.cpp:28:31: error: ‘computer’ cannot be used as a function
int computer = computer(moves);
^
rock_paper_scissors.cpp:30:28: error: too many arguments to function ‘int printWinner()’
printWinner(user, computer);
^
rock_paper_scissors.cpp:10:5: note: declared here
int printWinner();
^~~~~~~~~~~
rock_paper_scissors.cpp: In function ‘int user(char**)’:
rock_paper_scissors.cpp:45:30: error: invalid types ‘char**[int()]’ for array subscript
std:: cout << moves[computer];
^
rock_paper_scissors.cpp: In function ‘int computer(char**)’:
rock_paper_scissors.cpp:52:11: error: no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream}’ and ‘’)
std::cout<< computer;

In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:108:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(__ostream_type& (*__pf)(__ostream_type&))
     ^~~~~~~~
/usr/include/c++/7/ostream:108:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘std::basic_ostream<char>::__ostream_type& (*)(std::basic_ostream<char>::__ostream_type&) {aka std::basic_ostream<char>& (*)(std::basic_ostream<char>&)}’
/usr/include/c++/7/ostream:117:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ios_type& (*)(std::basic_ostream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>; std::basic_ostream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]
     operator<<(__ios_type& (*__pf)(__ios_type&))
     ^~~~~~~~
/usr/include/c++/7/ostream:117:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘std::basic_ostream<char>::__ios_type& (*)(std::basic_ostream<char>::__ios_type&) {aka std::basic_ios<char>& (*)(std::basic_ios<char>&)}’
/usr/include/c++/7/ostream:127:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(ios_base& (*__pf) (ios_base&))
     ^~~~~~~~
/usr/include/c++/7/ostream:127:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘std::ios_base& (*)(std::ios_base&)’
/usr/include/c++/7/ostream:166:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(long __n)
     ^~~~~~~~
/usr/include/c++/7/ostream:166:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘long int’
/usr/include/c++/7/ostream:170:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(unsigned long __n)
     ^~~~~~~~
/usr/include/c++/7/ostream:170:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘long unsigned int’
/usr/include/c++/7/ostream:174:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(bool __n)
     ^~~~~~~~
/usr/include/c++/7/ostream:174:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘bool’
In file included from /usr/include/c++/7/ostream:693:0,
               from /usr/include/c++/7/iostream:39,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/bits/ostream.tcc:91:5: note: candidate: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char; _Traits = std::char_traits<char>]
   basic_ostream<_CharT, _Traits>::
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/ostream.tcc:91:5: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘short int’
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:181:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(unsigned short __n)
     ^~~~~~~~
/usr/include/c++/7/ostream:181:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘short unsigned int’
In file included from /usr/include/c++/7/ostream:693:0,
               from /usr/include/c++/7/iostream:39,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/bits/ostream.tcc:105:5: note: candidate: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char; _Traits = std::char_traits<char>]
   basic_ostream<_CharT, _Traits>::
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/ostream.tcc:105:5: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘int’
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:192:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(unsigned int __n)
     ^~~~~~~~
/usr/include/c++/7/ostream:192:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘unsigned int’
/usr/include/c++/7/ostream:201:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(long long __n)
     ^~~~~~~~
/usr/include/c++/7/ostream:201:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘long long int’
/usr/include/c++/7/ostream:205:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(unsigned long long __n)
     ^~~~~~~~
/usr/include/c++/7/ostream:205:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘long long unsigned int’
/usr/include/c++/7/ostream:220:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(double __f)
     ^~~~~~~~
/usr/include/c++/7/ostream:220:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘double’
/usr/include/c++/7/ostream:224:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(float __f)
     ^~~~~~~~
/usr/include/c++/7/ostream:224:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘float’
/usr/include/c++/7/ostream:232:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(long double __f)
     ^~~~~~~~
/usr/include/c++/7/ostream:232:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘long double’
/usr/include/c++/7/ostream:245:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
     operator<<(const void* __p)
     ^~~~~~~~
/usr/include/c++/7/ostream:245:7: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘const void*’
In file included from /usr/include/c++/7/ostream:693:0,
               from /usr/include/c++/7/iostream:39,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/bits/ostream.tcc:119:5: note: candidate: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]
   basic_ostream<_CharT, _Traits>::
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/ostream.tcc:119:5: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘std::basic_ostream<char>::__streambuf_type* {aka std::basic_streambuf<char>*}’
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:682:5: note: candidate: template<class _Ostream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_ostream<_Ostream>, std::__is_insertable<typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type, const _Tp&, void> >::value, typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type>::type std::operator<<(_Ostream&&, const _Tp&)
   operator<<(_Ostream&& __os, const _Tp& __x)
   ^~~~~~~~
/usr/include/c++/7/ostream:682:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   couldn't deduce template parameter ‘_Tp’
std::cout<< computer;
            ^~~~~~~~
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:574:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const unsigned char*)
   operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
   ^~~~~~~~
/usr/include/c++/7/ostream:574:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   cannot convert ‘computer’ (type ‘<unresolved overloaded function type>’) to type ‘const unsigned char*’
std::cout<< computer;
            ^~~~~~~~
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:569:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const signed char*)
   operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
   ^~~~~~~~
/usr/include/c++/7/ostream:569:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   cannot convert ‘computer’ (type ‘<unresolved overloaded function type>’) to type ‘const signed char*’
std::cout<< computer;
            ^~~~~~~~
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:556:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const char*)
   operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
   ^~~~~~~~
/usr/include/c++/7/ostream:556:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   cannot convert ‘computer’ (type ‘<unresolved overloaded function type>’) to type ‘const char*’
std::cout<< computer;
            ^~~~~~~~
In file included from /usr/include/c++/7/ostream:693:0,
               from /usr/include/c++/7/iostream:39,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/bits/ostream.tcc:321:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*)
   operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
   ^~~~~~~~
/usr/include/c++/7/bits/ostream.tcc:321:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   cannot convert ‘computer’ (type ‘<unresolved overloaded function type>’) to type ‘const char*’
std::cout<< computer;
            ^~~~~~~~
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:539:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*)
   operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
   ^~~~~~~~
/usr/include/c++/7/ostream:539:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   types ‘const _CharT’ and ‘int(char**)’ have incompatible cv-qualifiers
std::cout<< computer;
            ^~~~~~~~
rock_paper_scissors.cpp:52:14: note:   types ‘const _CharT’ and ‘int()’ have incompatible cv-qualifiers
rock_paper_scissors.cpp:52:14: note:   could not resolve address from overloaded function ‘computer’
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:519:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, unsigned char)
   operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
   ^~~~~~~~
/usr/include/c++/7/ostream:519:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   cannot convert ‘computer’ (type ‘<unresolved overloaded function type>’) to type ‘unsigned char’
std::cout<< computer;
            ^~~~~~~~
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:514:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, signed char)
   operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
   ^~~~~~~~
/usr/include/c++/7/ostream:514:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   cannot convert ‘computer’ (type ‘<unresolved overloaded function type>’) to type ‘signed char’
std::cout<< computer;
            ^~~~~~~~
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:508:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, char)
   operator<<(basic_ostream<char, _Traits>& __out, char __c)
   ^~~~~~~~
/usr/include/c++/7/ostream:508:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   cannot convert ‘computer’ (type ‘<unresolved overloaded function type>’) to type ‘char’
std::cout<< computer;
            ^~~~~~~~
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:502:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, char)
   operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
   ^~~~~~~~
/usr/include/c++/7/ostream:502:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   cannot convert ‘computer’ (type ‘<unresolved overloaded function type>’) to type ‘char’
std::cout<< computer;
            ^~~~~~~~
In file included from /usr/include/c++/7/iostream:39:0,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/ostream:497:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, _CharT)
   operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
   ^~~~~~~~
/usr/include/c++/7/ostream:497:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   could not resolve address from overloaded function ‘computer’
std::cout<< computer;
            ^~~~~~~~
In file included from /usr/include/c++/7/bits/ios_base.h:46:0,
               from /usr/include/c++/7/ios:42,
               from /usr/include/c++/7/ostream:38,
               from /usr/include/c++/7/iostream:39,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/system_error:217:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::error_code&)
   operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
   ^~~~~~~~
/usr/include/c++/7/system_error:217:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   cannot convert ‘computer’ (type ‘<unresolved overloaded function type>’) to type ‘const std::error_code&’
std::cout<< computer;
            ^~~~~~~~
In file included from /usr/include/c++/7/string:52:0,
               from /usr/include/c++/7/bits/locale_classes.h:40,
               from /usr/include/c++/7/bits/ios_base.h:41,
               from /usr/include/c++/7/ios:42,
               from /usr/include/c++/7/ostream:38,
               from /usr/include/c++/7/iostream:39,
               from rock_paper_scissors.cpp:5:
/usr/include/c++/7/bits/basic_string.h:6284:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&)
   operator<<(basic_ostream<_CharT, _Traits>& __os,
   ^~~~~~~~
/usr/include/c++/7/bits/basic_string.h:6284:5: note:   template argument deduction/substitution failed:
rock_paper_scissors.cpp:52:14: note:   mismatched types ‘const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>’ and ‘int(char**)’
std::cout<< computer;
            ^~~~~~~~
rock_paper_scissors.cpp:52:14: note:   mismatched types ‘const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>’ and ‘int()’
rock_paper_scissors.cpp:52:14: note:   could not resolve address from overloaded function ‘computer’
rock_paper_scissors.cpp:55:29: error: invalid types ‘char**[<unresolved overloaded function type>]’ for array subscript
std::cout << moves[computer];
                           ^
rock_paper_scissors.cpp: In function ‘int printWinner(int, int)’:
rock_paper_scissors.cpp:61:2: error: ‘outcomes’ was not declared in this scope
outcomes = ([  0, -1,  1,  1, -1 ],
^~~~~~~~
rock_paper_scissors.cpp:61:17: error: expected identifier before numeric constant
outcomes = ([  0, -1,  1,  1, -1 ],
               ^
rock_paper_scissors.cpp:61:18: error: expected ‘]’ before ‘,’ token
outcomes = ([  0, -1,  1,  1, -1 ],
                ^
rock_paper_scissors.cpp: In lambda function:
rock_paper_scissors.cpp:61:18: error: expected ‘{’ before ‘,’ token
rock_paper_scissors.cpp: In function ‘int printWinner(int, int)’:
rock_paper_scissors.cpp:61:35: error: expected ‘)’ before ‘]’ token
outcomes = ([  0, -1,  1,  1, -1 ],

I’m sorry, but I can’t figure it out, I only know c++