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:


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
    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:
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.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…