Olá, Rodolpho
Vamos por partes:
1- O erro de compilação aparece porque você realmente não inicializou suas seis variáveis. Mas o que exatamente isso quer dizer? Veja que você declarou
int carta1DoUsuário;
int carta2DoUsuário; ...
e logo em seguida você quis testar se elas eram iguais a cartaDoUsuário, porém você não atribuiu nenhum valor a elas.
Uma forma de resolver esse problema é iniciar suas variáveis ao declara-las:
int carta1DoUsuário = 0;
int carta2DoUsuário = 0; ...
Pronto. Agora não mais haverá erro de compilação. Contudo, definitivamente não é isso que você quer, pois o valor das cartas serão zero toda vez que esse método for chamado. Assim, chegamos á próxima parte.
2- Você quer que as variáveis dentro do método tenham os valores anteriormente sorteados. Como fazer isso?
Desconfio que, em iniciaJogo(), você tenha declarado esses parâmetros da mesma forma que fez em jogaCarta(). Assim, o escopo dessas variáveis é apenas o método onde elas foram declaradas. Ou seja, carta1DoUsuário dentro de iniciaJogo() não existe fora desse método, o mesmo ocorre para jogaCarta().
O que queremos é que os valores de carta1DoUsuário, carta2DoUsuário, etc. possam ser compartilhados por todos os métodos da classe. Para tanto, o mais intuitivo é declara-los como atributos da classe. Fazemos isso declarando-os fora de qualquer método.
Então, sua classe Truco ficaria próxima de:
class Truco
{
int carta1DoUsuário;
int carta2DoUsuário;
int carta3DoUsuário;
int carta1DoComputador;
int carta2DoComputador;
int carta3DoComputador;
void iniciaJogo() {
/* Comandos... */
/* Atribui valor às variáveis. */
/* OBS: esses valores terão que ser sorteados! Isso é só um exemplo. */
carta1DoUsuário = 3;
carta2DoUsuário = 2;
carta3DoUsuário = 1;
}
void jogaCarta(int cartaDoUsuario) {
/* NÃO vamos declarar carta... aqui dentro. Queremos usar os parâmetros da classe. */
/* Comandos... */
while (cartaDoUsuário == carta1DoUsuário || cartaDoUsuário == carta2DoUsuário || cartaDoUsuário == carta3DoUsuário) {
/* Comandos dentro do while. */
}
}
}
Note que, agora, depois que o método iniciaJogo() terminar, os valores dos parâmetros serão mantidos. Assim, quando a comparação dentro do while será feita com os valores já alterados.
Espero que tenha ficado claro.
Se as dúvidas persistirem, é só avisar.
Abraço,
Vinícius