package com.company;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;
public class Main {
//Objeler
static int hak_sayisi = 5;
static int kazanilacak_puan,secilmissayi = 0,mevcut_puan = 0;
static String sayı_aralık;
// Artış miktarları belirtilen lvl'e kadardır.
static int lvl_limit2 = 100; // Artış : 25
static int lvl_limit3 = 300; // Artış : 50
static int lvl_limit4 = 800; // Artış : 100
static int lvl_limit5 = 1800; // Artış : 200
// Onaylar
static boolean lvl5=false;
static boolean lvl4=false;
static boolean lvl3=false;
static boolean lvl2=false;
static boolean lvl1=false;
// Aralık Araçları
static int max=0,min=1;
public static void main(String[] args) {
// Hoşgeldin ve Kurallar Bölümü
System.out.println("Merhaba, 'Sayı Tahmin Etmece' oyununa hoşgeldiniz! ");
System.out.println("Oyun şöyle işliyor:");
System.out.print("1-)Öncelikle bilgisayar seviyenize göre belirli aralıklarda rastgele bir sayı seçer. ");
System.out.print("Bu aralıklar şöyledir: \n1.Seviye => 1 ile 20 arası(20 dahil) \n2.Seviye => 1 ile 30 arası(30 dahil) \n3.Seviye => 1 ile 40 arası(40 dahil) \n4.Seviye => 1 ile 50 arası(50 dahil) \n5.Seviye => 1 ile 75 arası(75 dahil)\n");
System.out.println("2-)Daha sonrasında siz seçilen sayıyı tahmin etmeye çalışırsınız. Eğer bu sayıyı doğru tahmin ederseniz bulunduğunuz seviyeye göre puanınız artar.");
System.out.println("Ayrıca, her seviyede doğru tahmin karşılığında verilen puan bir önceki seviyede verilen puanın 2 katıdır. İlk seviyede doğru tahmin karşılığında kazanacağınız puan '25'tir.");
System.out.println("3-)Kazandığınız puanlar sizin seviyeleri geçmenizi sağlar. Puanınız sürekli artar asla azalmaz. Belli bir puana geldikçe seviye yükselirsiniz. Seviyelerin puan tablosu:");
System.out.println("1. Seviye => 0 (Başladığınız seviye) \n2.Seviye => "+Integer.toString(lvl_limit2) + "\n3.Seviye => "+Integer.toString(lvl_limit3)+"\n4.Seviye => "+Integer.toString(lvl_limit4)+"\n5.Seviye => "+Integer.toString(lvl_limit5));
System.out.println("\nOyunun nasıl işlediğini öğrendiğinize göre oynamak ister misiniz? Oynamak için '1',oyundan çıkmak için '2' yazınız. ");
// Oyuna giriş bölümü
Scanner cevap = new Scanner(System.in);
try{
if(cevap.nextInt() == 1)
{
System.out.println("*\n*\n*\nOyuna girmiş bulunmaktasınız!");
dongu();
}
else
{
System.exit(0);
}
}
catch(InputMismatchException e1)
{
try{
System.out.print("Hataya düştünüz.Aynısını bir kere daha yaparsanız oyundan çıkacaksınız.Lütfen sayı formatında giriniz. Örnek: 1,2. Sayınızı giriniz: ");
cevap = new Scanner(System.in);
if(cevap.nextInt() == 1)
{
System.out.println("*\n*\n*\nOyuna girmiş bulunmaktasınız!");
dongu();
}
else
{
System.exit(0);
}
}
catch(InputMismatchException e2)
{
System.out.println("*\nArtarda iki kere hatalı girdiğiniz için oyundan çıkarıldınız.");
System.exit(0);
}
}
}
public static void dongu()
{
while(true)
{
if(hak_sayisi == 0)
{
System.out.println("Size verilen haklar tükenmiştir.");
System.out.println("Oyunu tekrardan oynamak için '1',oyundan çıkmak için '2' yazınız.");
Scanner cevap = new Scanner(System.in);
if(cevap.nextInt() == 1)
{
dongu();
break;
}
else
{
System.exit(0);
}
}
else
{
// Program'a random sayı seçtirme bölümü
if(mevcut_puan >= lvl_limit5)
{
System.out.println("Son seviyede geziniyorsunuz!");
max = 75;
sayı_aralık = "1'den 75'ye kadar (75 dahil)";
if(lvl5 == false) // Oyuna devam ederse burası bir daha sorulmuyor.
{
kazanilacak_puan = kazanilacak_puan * 2;
System.out.println("*\n*\n*\nYeni seviye! Artık 5.Seviyedesiniz! Hedeflerinize ulaştınız!");
System.out.println("Oyuna devam etmek için '1',tekrardan oynamak için '2',oyundan çıkmak için 3 kere ' '3' yazıp enter basın ' bunu uygulayınız. "); // 3 Kere yazdırmamın sebebi 1 kere '3' yazınca algılamıyor. 3 kere yazınca algılıyor. Fakat bu sadece oyundan çıkmak için.
Scanner cevap = new Scanner(System.in);
if(cevap.nextInt() == 1)
{
lvl5 = true; // Oyuna devam ettiği için tekrardan sordurmak istemedik.
}
else if(cevap.nextInt() == 2)
{
dongu();
break;
}
else if(cevap.nextInt() == 3)
{
System.out.println("Oyundan çıktınız.");
System.exit(0);
}
}
}
else if(mevcut_puan >= lvl_limit4)
{
max = 50;
sayı_aralık = "1'den 50'ye kadar (50 dahil)";
if(lvl4 == false)
{
kazanilacak_puan = kazanilacak_puan * 2;
System.out.println("*\n*\n*\nYeni seviye! Artık 4.Seviyedesiniz! Yeni hedefiniz => "+Integer.toString(lvl_limit5));
lvl4 = true;
}
}
else if(mevcut_puan >= lvl_limit3)
{
max = 40;
sayı_aralık = "1'den 40'ye kadar (40 dahil)";
if(lvl3 == false)
{
kazanilacak_puan = kazanilacak_puan * 2;
lvl3 = true;
System.out.println("*\n*\n*\nYeni seviye! Artık 3.Seviyedesiniz! Yeni hedefiniz => "+Integer.toString(lvl_limit4));
}
}
else if(mevcut_puan >= lvl_limit2)
{
max = 30;
sayı_aralık = "1'den 30'ye kadar (30 dahil)";
if(lvl2 == false)
{
kazanilacak_puan = kazanilacak_puan * 2;
lvl2 = true;
System.out.println("*\n*\n*\nYeni seviye! Artık 2.Seviyedesiniz! Yeni hedefiniz => "+Integer.toString(lvl_limit3));
}
}
else if(mevcut_puan<lvl_limit2)
{
max = 20;
sayı_aralık = "1'den 20'ye kadar (20 dahil)";
if(lvl1 == false)
{
kazanilacak_puan = 25;
lvl1 = true;
}
}
secilmissayi = ThreadLocalRandom.current().nextInt(min, max + 1); // Random rnd = New Random(); denedim. Fakat aralık problemi yaşadığımdan dolayı Java 1.7 ve sonrasında gelen bu yolu kullandım.
System.out.println(secilmissayi);
// Tahmin alma
System.out.print("*\nLütfen "+sayı_aralık+" seçilen rastgele sayıyı tahmin ediniz: ");
Scanner klavye_giris = new Scanner(System.in);
int tahmin =0;
try{
tahmin = klavye_giris.nextInt();
}
catch(InputMismatchException e)
{
try{
System.out.print("Hataya düştünüz.Aynısını bir kere daha yaparsanız oyundan çıkacaksınız.Lütfen sayı formatında giriniz. Örnek: 24,11,52. Sayınızı giriniz: ");
klavye_giris = new Scanner(System.in);
tahmin = klavye_giris.nextInt();
}
catch(InputMismatchException e1)
{
System.out.println("*\nArtarda iki kere hatalı girdiğiniz için oyundan çıkarıldınız.");
System.exit(0);
}
}
// Tahmin kontrol
if(tahmin == secilmissayi)
{
mevcut_puan += kazanilacak_puan;
System.out.println("*\nBravo! Sayıyı doğru tahmin ettiniz. Sayı => "+Integer.toString(tahmin) + " Mevcut Puanınız => "+mevcut_puan + " Artış Miktarı => "+kazanilacak_puan);
}
else
{
hak_sayisi -= 1;
System.out.println("*\nMaalesef, tahmininiz yanlış. Size verdiğimiz hakların " + Integer.toString(5-hak_sayisi) + " tanesini harcadınız. Geriye "+Integer.toString(hak_sayisi)+ " hakkınız kaldı."+ " Mevcut Puanınız => "+mevcut_puan);
System.out.println("");
}
}
}
}
}
此代码在IntelliJ IDEA中正常工作,但是当我尝试在online IDE中运行它时,出现此错误:
Error: Could not find or load main class Main
Caused by: java.lang.ClassNotFoundException: Main
这是什么意思,我该如何解决?
package com.company;
摆脱顶部的软件包名称。如果JDoodle在包中,则找不到Main
。