Java'da yapılan taş-kağıt-makas oyunu çalışmıyor

William Crusader

Hectopat
Katılım
11 Kasım 2020
Mesajlar
5.371
Makaleler
1
Çözümler
14
Daha fazla  
Cinsiyet
Erkek
Meslek
Yok
Oyunda bilerek ne olursa olsun kaybetmeniz gerekiyor. Fakat kod bir sebepten dolayı çalışmıyor. Bu menüden sonrası çalışmıyor:
SharedScreenshot.jpg


Kod:

[CODE lang="java" title="Java"]import javax.swing.JOptionPane; //Gui Şeysini aktarması için

public class mainWork {

public static void main(String[] args) {
int restart = 0; //yeniden başlatma için
String wannaplay = "no"; // bu da

int pc = 0;
int user = 0;

while(restart == 0) {
String op = JOptionPane.showInputDialog("Which move you wanna do? \n(Rock, Paper, Scissors) \nUser:" + user + "\nPC:" + pc);
String useropinion = op.toLowerCase(); //op'yi küçük harfliye çevirmesi için

if(useropinion == "rock") {
pc = pc + 1; //pc skoruna bir eklemesi için
JOptionPane.showMessageDialog(null, "PC has choosen Paper, you lost!");
wannaplay = JOptionPane.showInputDialog("Do you wanna play again?"); //yeniden başlatmak için soru soruyor
wannaplay = wannaplay.toLowerCase(); //wannaplay'i küçük harflere çevirmek için

if (wannaplay == "yes") { //cevap evet ise programı tekrar başlatıyor (skorları tutuyor)
restart = 0;
}
else {
restart = 1;
}

if(useropinion == "paper") {
pc = pc + 1;
JOptionPane.showMessageDialog(null, "PC has choosen Scissors, you lost!");
wannaplay = JOptionPane.showInputDialog("Do you wanna play again?");
wannaplay = wannaplay.toLowerCase();

if (wannaplay == "yes") {
restart = 0;
}
else {
restart = 1;
}
}

if(useropinion == "rock") {
pc = pc + 1;
JOptionPane.showMessageDialog(null, "PC has choosen Paper, you lost!");
wannaplay = JOptionPane.showInputDialog("Do you wanna play again?");
wannaplay = wannaplay.toLowerCase();

if (wannaplay == "yes") {
restart = 0;
}
else {
restart = 1;
}
}
}
}
}} //iki tane koymayınca hata veriyor[/CODE]
 

Dosya Ekleri

  • 1647373818751.png
    1647373818751.png
    35,8 KB · Görüntüleme: 47
Oyunda bilerek ne olursa olsun kaybetmeniz gerekiyor.
Niye koşullarla girdileri filtrelemeye çalıştın peki? Her durumda kazanacak şekilde ayarlayabilirsin bu kodu? Eğer o duruma göre string ayarlayacaksan, hash table ve modüler aritmetik yardımı kullanabilirsin. C++ bildiğim için C++ ile anlatmaya çalışayım.

C++:
#include <iostream>
#include <string>

int main()
{
  std::string table[3] = {"rock","paper","scissors"};
  int option = 0;
  std::cout<<"Choose your move.\n1-) Rock\n2-) Paper\n3-) Scissors: ";
  std::cin>>option;
  std::cout<<"The computer has chosen "<<table[(option)%3]<<", so you lost!"<<std::endl; /*C++'ta diziler sıfırdan başlar!*/
  return 0;
}
 
Son düzenleme:
Niye koşullarla girdileri filtrelemeye çalıştın o zaman? Her durumda kazanacak şekilde ayarlayabilirsin bu kodu? Eğer o duruma göre string ayarlayacaksan, hash table ve modüler aritmetik yardımı kullanabilirsin. C++ bildiğim için C++ ile anlatmaya çalışayım.

C++:
#include <iostream>
#include <string>

int main()
{
  std::string table[3] = {"rock","paper","scissors"};
  int option = 0;
  std::cout<<"Choose your move.\n1-) Rock\n2-) Paper\n3-) Scissors: ";
  std::cin>>option;
  std::cout<<"The computer has chosen "<<table[(option)%3]<<", so you lost!"<<std::endl;
  return 0;
}
Sadece bir if statement mi kullanayım o zaman?
 
Sorunun çözümünü buldum. == kullanmak yerine .equals() metodunu kullanınca çalıştı.

Ayrıca parantezleri bir kısımda yanlış birleştirdiğim için de sorun oluşmuştu.
 

Technopat Haberler

Yeni konular

Geri
Yukarı