Randomlar ile ilgili sorum var!

Darkless05

Demir Madencisi
En iyi cevaplar
0
Merhaba arkadaşlar minigame kodluyordum fakat bir konuda mantığı kuramadım. Şimdi raundlar var. Her raund rastgele bir oyuncu minigame alanında oynuyor diğerleri izliyor. Ama her raund'da rastgele bi oyun alanına yolluyor. (sebebi izleyenler o oyun alanını ezberlemesinler diye)
Buraya kadar her şey müthiş fakat ben şimdi mesela ASD isimli oyuncuyu çıkarmışım rastgeleden diğer el ASD nin çıkmaması için ne yapabilirim? SonOynayan adlı bir liste oluştursak rastgeleden o listedeki isimde biri çıkarsa tekrar rastgele birini seçicek tekrar aynı çıkarsa tekrar rastgele diye gidiyor. Yani son oyuncudan başka çıkana kadar tekrarlaması gerekiyor.

Aynı sistemi oyun alanı içinde yapıcam en son oynanan oyun alanı tekrar rastgeleden çıkmasın diye. Siz örnek olarak bir kalıp atın.


Seviyorum sizi Forum MC Türk...
@IRFN @Diğer_Java_Coderlarının_İsimleri_Aklıma_Gelmiyor_Kusura_Bakmayın :)
 

Salturbone

Portal Uzmanı
En iyi cevaplar
0
Map(javadaki map) kullanarak harita ismine karşılık bir boolean tutabilirsin. Eğer true ise tekrar random sayı alabilirsin ,gibi...
 

Krumb069

Nether Yerlisi
En iyi cevaplar
1
OLuşan değerleri arrayliste ekle bir daha değer aldığında arraylistte varsa yeniden değer versin
 

Darkless05

Demir Madencisi
En iyi cevaplar
0
Biraz daha tecrübe kazandıktan sonra başla bence.
Yeterli java bilgin yoksa yazacağın sistemde ki kullanacağın materyallerde azdır.
Çalışarak öğreniyorum herkeze açık projelere başlamadım daha :)

OLuşan değerleri arrayliste ekle bir daha değer aldığında arraylistte varsa yeniden değer versin
Eleştirmeden ve üşenmeden cevap verdiğin için teşekkürler. Foruma böyleleri lazım ^_^
 

IRFN

Sonoyuncu.Network
En iyi cevaplar
0
Bu gibi durumlarda oyuna giren çıkan, sunucuya giren çıkan kişileri de hesaba katmak lazım. Ben olsam bu durumda ArenaManager adlı bir listener class oluştururdum, tüm giriş çıkışları buradan ayarlardım.
İleriye dönük oyunculara birden fazla hak verme, oyundan çıkıp girmiş ise dahi, arenaya o oturum (session) içerisinde girmiş mi girmemiş mi, girmiş ise kaç defa girmiş, daha da girse nolur? Vip ise bir kez daha girme hakkı versek mi? gibi sorulara çok kolay cevap verebilirdik, çünkü HashMap sistemi işimizi kolayca çözebilirdi.
Yani değişkenler bölümünde
public static HashMap<String, Integer> ArenadaOynayanlar = new HashMap<String, Integer>;

şeklinde oluşturduğumuz ArenadaOynayanlar ismindeki hashmap içerisine arenada oynayan kişilerin adını yazabiliriz.

Oyuncuların daha önceden oynayıp oynamadığını anahtar değeri sütununda oyuncunun adını aratarak anlayabiliriz.
if (!ArenadaOynayanlar.containsKey(player.getName())){
//Arenada daha önce oynamamışsa olacaklar
}
else {
//Oynamamış ise olacaklar
}

*If bölümkündeki ünlem işareti değilse, yani yanlışsa anlamına geliyor.
Bir kişi arenada oynamamış ise, String bölümüne oyuncu adını, integer kısmına da 1 şeklinde oyuncuyu hashmap'e ekliyoruz.
ArenadaOynayanlar.put(player.getName(), 1);

Oyuncu arenada oynamış ise, ekstra ayrıcalığı var mı yok mu diye yine kontrol edebilirsin,
Arenada daha önce kaç defa oynadığını ArenadaOynayanlar.get(player.getName()) şeklinde kontrol edebilirsin, bu sana rakamı verecektir.
Eğer oyuncu VIP ise ve maksimum 2 defa oynaması gerekiyorsa, oynamış ise olan kısma 3'ten az oynadı mı diye sorabilirsin, yani değer kısmını çekip, o sayının 3'ten küçük olup olmadığını kontrol ettirirsin.
HashMap içerisinde değer kısmını integer olsa dahi arttırma yoktur, kendin çekip tekrardan üzerine ekleme yapacaksın. Örneğin IRFN 1 defa arenada oynadı, bunu 2 yapmak istiyorsun;
ArenadaOynayanlar.put(player.getName(), ArenadaOynayanlar.get(player.getName() + 1));

Gel gelelim ben senin sorunu ne kadar doğru anladım, ne kadar anlatabildim, hiçbir fikrim yok. Şu an kafam zaten kazan gibi, ancak muhakkak bu bilgilerden günün birinde birileri faydalanır. Başarılar hepinize genç Java yolcusu arkadaşlarım.
 

Darkless05

Demir Madencisi
En iyi cevaplar
0
Gel gelelim ben senin sorunu ne kadar doğru anladım, ne kadar anlatabildim, hiçbir fikrim yok. Şu an kafam zaten kazan gibi, ancak muhakkak bu bilgilerden günün birinde birileri faydalanır. Başarılar hepinize genç Java yolcusu arkadaşlarım.
Sağolasın üstad deniycem birşeyler. Dediklerini bayağı anladım.
 
Üst