Jump to content
Son zamanlarda artan kullanıcı hesap hırsızlıkları sebebiyle tüm kullanıcılara şifre sıfırlama maili gönderilmiştir. Lütfen güveli şifreler seçiniz. Mevcut e-mail adresinize erişemiyorsanız, en aşağıdaki destek linkinden bize ulaşınız. ×

C# Ta Oyun Yapımı


burak29
 Share

Recommended Posts

  • Replies 65
  • Created
  • Last Reply

Top Posters In This Topic

[img]http://d1201.hizliresim.com/t/h/1ts2m.png[/img]

[size="3"][color="#0000FF"][b]Resimde ilk yazıda "65" diyor o "6" yanlış yazmışım.[/b][/color][/size]

Edited by TuTaMixx
Link to comment
Share on other sites

[quote name='Kazım' date='14 January 2012 - 23:02 ' timestamp='1326582121' post='1140806']
[img]http://www.tnctr.com/uploads/imgs/pre_1326582081__resim.jpg[/img]

Dediğin bu ise .. ilk verdiğim örnek bu idi..bu arada her biri farklıdır. tutulan sayı alt köşede..
[/quote]
..
yaklaşmışsın hocam ama tam değil :)
..
arkadaşın istedği şöyle bişey
..
sayı = 1234
girilen = 1452
.
1. rakam altta var ve doğru yerde
+1 yazacak(+1)
2. rakam allta var ve yanlış yerde
-1 ilave edecek (+1 -1)
3. rakam hiç yok o yüzden bişey eklemyecek
(+1 -1)
4. rakam altta var ve yanlış yerde
-1 ilave edecek (+1 -1 -1)
.
benim anladığım budur
(parantez içi ekran çıktısı)

Edited by BaRBaRYaN
Link to comment
Share on other sites

ayrıca sayı olarak alıp uzun uzun işlem yapmaktansa string olarak almak daha mantıklı. her string bir dizidir mantığıyla sırayla karakter karakter kontrol yapılır
Burası form_load a yazılacak
[code]
//Random Şifre üretelim
Random sayi = new random;
sifre = Convert.ToString(sayi.Next(1000,9999));

//Sonucun yazılacağı label içeriği boşaltılıyor. Proparties te yapılmadıysa diye ekledim
label1.text="";
[/code]

Burası button1_click e yazılacak
[code]//Textboxa girilen bilgiyi alalım
string girilen=textbox1.text;

//Şifrenin her karakterini sırayla girilen karakterlerle karşılaştıralım
for (int i=0; i<sifre.lenght; i++)
{
// Ekrana mesaj yazdırılırken kullanılaak. -1 ise -1 ekleyecek +1 ise +1 ekleyecek .
string durum ="";
for (int j=0; j<girilen.lenght; j++)
{
//Karakterler eşitmi kontol ediliyor. Eşitse alttaki işlemler uygulanıyor
if (sifre[i]==girilen[j])
{
if (i==j)durum ="+1"
if (i!=j)durum ="-1";
}
}
label1.text = label1.text + durum;
}
[color="#FF0000"]//Hiç bir sayı uyuşmuyorsa label.text boştur. o zaman sıfır yazalım
if (label1.text=="") label1.text="0";[/color]
[/code]

Edited by BaRBaRYaN
Link to comment
Share on other sites

zaten string olarak alıp yapmıştım.

denemedim ama dediğiniz gibi yapılırsa uzadıkça uzar

Girilen sayı :1234

Random sayı : 4567

Şimdi sırayla
girilen[0]=1
Random[0]=4
return -1

girilen[0]=1
Random[1]=5
return -1

girilen[0]=1
Random[2]=6
return -1


girilen[0]=1
Random[3]=7
return -1
...
...
..
.
bu işlem sonucunda;

-1 -1 -1 -1 ... +1 -1 -1 -1 gibi 16 tane değer yanyana olacak.. bu nedenle arkadaşın bunu dşündüğünü sanmıyorum.

Edited by Kazım
Link to comment
Share on other sites

[quote name='Kazım' date='14 January 2012 - 23:41 ' timestamp='1326584519' post='1140823']
zaten string olarak alıp yapmıştım.

denemedim ama dediğiniz gibi yapılırsa uzadıkça uzar

Girilen sayı :1234

Random sayı : 4567

Şimdi sırayla
girilen[0]=1
Random[0]=4
return -1

girilen[0]=1
Random[1]=5
return -1

girilen[0]=1
Random[2]=6
return -1


girilen[0]=1
Random[3]=7
return -1
...
...
..
.
bu işlem sonucunda;

-1 -1 -1 -1 ... +1 -1 -1 -1 gibi 16 tane değer yanyana olacak.. bu nedenle arkadaşın bunu dşündüğünü sanmıyorum.
[/quote]
yok hocam yanlış mantık yürütmüşsünüz.
[code] //Karakterler eşitmi kontol ediliyor. Eşitse alttaki işlemler uygulanıyor
if (sifre[i]==girilen[j])[/code]
burda sadece karakterler eşitse işlem yapıyor. ama haklı olduğunuz bir nokta var. eğer kullanıcının girdiği sayı
...
random = 1234
girilen = 1111 / 2222 / 3333 / 4444 şeklinde 1 karakteri birden fazla sayıda girerse ekrana +1 -1 -1 -1 (+1 in yeri girilen karaktere göre değişir) şeklinde bir string verir. Hemen düzeltiyorum...
..
DURUM değişkeni eklenerek düzeltildi.

Edited by BaRBaRYaN
Link to comment
Share on other sites

[quote name='Kazım' date='15 January 2012 - 01:51 ' timestamp='1326592298' post='1140859']
uyku sersemi üstteki if i görmedim.. deneyeyim bi..
[/quote]
yeni format attım ve v.studio yüklü değil. o yüzden ben deneyemiyorum. ama mantık olarak hata görünmüyor... son eklediğim durum değişkeni sonunda her FOR İ döngüsü sonucunda 1 karakter yazar. i döngüsü 4 kez döneceği için sonuçta 4 karakter yazar.

Link to comment
Share on other sites

[size="4"][font="Lucida Sans Unicode"][code]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Serhaty54
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
int rastgelesayi = rnd.Next(1000, 6000);
Console.Write("Bir sayi giriniz.> ");
int sayi = int.Parse(Console.ReadLine());

int binler, yuzler, onlar, birler;
binler = sayi / 1000;
yuzler = (sayi / 100) - (binler * 10);
onlar = (sayi / 10) - (binler * 100 + yuzler * 10);
birler = sayi - (binler * 1000 + yuzler * 100 + onlar * 10);

int rndbinler, rndyuzler, rndonlar, rndbirler;
rndbinler = rastgelesayi / 1000;
rndyuzler = (rastgelesayi / 100) - (rndbinler * 10);
rndonlar = (rastgelesayi / 10) - (rndbinler * 100 + rndyuzler * 10);
rndbirler = rastgelesayi - (rndbinler * 1000 + rndyuzler * 100 + rndonlar * 10);

if (binler == rndbinler)
Console.WriteLine("Rastgele Sayınız : {0}\nSizin Sayınız : {1} \nSonuç: +1", rastgelesayi, sayi);
else if (yuzler == rndyuzler)
Console.WriteLine("Rastgele Sayınız : {0}\nSizin Sayınız : {1} \nSonuç: +1", rastgelesayi, sayi);
else if (onlar == rndonlar)
Console.WriteLine("Rastgele Sayınız : {0}\nSizin Sayınız : {1} \nSonuç: +1", rastgelesayi, sayi);
else if (birler == rndbirler)
Console.WriteLine("Rastgele Sayınız : {0}\nSizin Sayınız : {1} \nSonuç: +1", rastgelesayi, sayi);
else
Console.WriteLine("Rastgele Sayınız : {0}\nSizin Sayınız : {1} \nSonuç: -1", rastgelesayi, sayi);
Console.ReadLine();
}
}
}[/code][/font][/size]

Bende bu şekilde bir sunum yapmak isterim. Ancak 4 hak yapmamışım ve sadelikten ırak olabilir. Ama istersen düzenleme yapabilirim.

Link to comment
Share on other sites

[quote name='serhaty54' date='15 January 2012 - 12:36 ' timestamp='1326630963' post='1141003']
[size="4"][font="Lucida Sans Unicode"][code]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Serhaty54
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
int rastgelesayi = rnd.Next(1000, 6000);
Console.Write("Bir sayi giriniz.> ");
int sayi = int.Parse(Console.ReadLine());

int binler, yuzler, onlar, birler;
binler = sayi / 1000;
yuzler = (sayi / 100) - (binler * 10);
onlar = (sayi / 10) - (binler * 100 + yuzler * 10);
birler = sayi - (binler * 1000 + yuzler * 100 + onlar * 10);

int rndbinler, rndyuzler, rndonlar, rndbirler;
rndbinler = rastgelesayi / 1000;
rndyuzler = (rastgelesayi / 100) - (rndbinler * 10);
rndonlar = (rastgelesayi / 10) - (rndbinler * 100 + rndyuzler * 10);
rndbirler = rastgelesayi - (rndbinler * 1000 + rndyuzler * 100 + rndonlar * 10);

if (binler == rndbinler)
Console.WriteLine("Rastgele Sayınız : {0}\nSizin Sayınız : {1} \nSonuç: +1", rastgelesayi, sayi);
else if (yuzler == rndyuzler)
Console.WriteLine("Rastgele Sayınız : {0}\nSizin Sayınız : {1} \nSonuç: +1", rastgelesayi, sayi);
else if (onlar == rndonlar)
Console.WriteLine("Rastgele Sayınız : {0}\nSizin Sayınız : {1} \nSonuç: +1", rastgelesayi, sayi);
else if (birler == rndbirler)
Console.WriteLine("Rastgele Sayınız : {0}\nSizin Sayınız : {1} \nSonuç: +1", rastgelesayi, sayi);
else
Console.WriteLine("Rastgele Sayınız : {0}\nSizin Sayınız : {1} \nSonuç: -1", rastgelesayi, sayi);
Console.ReadLine();
}
}
}[/code][/font][/size]

Bende bu şekilde bir sunum yapmak isterim. Ancak 4 hak yapmamışım ve sadelikten ırak olabilir. Ama istersen düzenleme yapabilirim.
[/quote]
1. random sayınız 6000 ile sınırlı, 9999 a kadar olması gerekiyor. 4 rakamlı tüm sayılar
2. biler basamağını oluşturmak için çok kasmışsınız. birler = sayi % 10 (mod alma) yapmanız yeterli
gelelim mantık hatası yaptığınız yere
3. sizin kodları çalıştırdığınızda her basamak sadece kendisi ile karşılaştırılıyor. (birler birlerle - onlar onlarla vb..) ama programın şifredeki basamağı girilen sayının her basamağı ile karşlışatırması gerekiyor (birleri birlerle - birleri onlarla - birleri yüzlerle vb..)

o yüzden
RANDOM = 1234
GİRİLEN = 4321
olması durumunda yazması gereken -1-1-1-1 iken sizin programınız sadece -1 yazar.

Link to comment
Share on other sites

[quote name='TuTaMixx' date='15 January 2012 - 11:36 ' timestamp='1326627415' post='1140967']
@BaRBaRYaN teşekkür ederim demek istediğimi anlamışsın tamda böyle birşey istiyordum şöylede bi nokta koyim eğer rakamlar birbirine hiç uyuşmuyorsa 0 yazsın :)
[/quote]
Kırmızı ile yazdığım kısımda o kontrolü yapıyor hocam
[color="#FF0000"]//Hiç bir sayı uyuşmuyorsa label.text boştur. o zaman sıfır yazalım
if (label1.text=="") label1.text="0";[/color]

Edited by BaRBaRYaN
Link to comment
Share on other sites

[quote name='BaRBaRYaN' date='15 January 2012 - 15:58 ' timestamp='1326635926' post='1141052']
Kırmızı ile yazdığım kısımda o kontrolü yapıyor hocam
[color="#FF0000"]//Hiç bir sayı uyuşmuyorsa label.text boştur. o zaman sıfır yazalım
if (label1.text=="") label1.text="0";[/color]
[/quote]

yalnız üstad +1-1 durumunu değiştirerek vermiyor butona kaç kere tıklarsak ekranda sürekli +1-1 ler doluyor ekranda sadece dört tane -1 +1 durumu olsun istiyorum.

Link to comment
Share on other sites

[quote name='TuTaMixx' date='15 January 2012 - 17:07 ' timestamp='1326647258' post='1141163']
yalnız üstad +1-1 durumunu değiştirerek vermiyor butona kaç kere tıklarsak ekranda sürekli +1-1 ler doluyor ekranda sadece dört tane -1 +1 durumu olsun istiyorum.
[/quote]
Senin için vs kurdum
...
[code]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace tncsoru
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//Değişkenler tanımlanıyor
Random sayi = new Random();
string sifre;

private void Form1_Load(object sender, EventArgs e)
{
//Random şifre üretiliyor
sifre = Convert .ToString (sayi.Next(1000, 9999));
//Şifreyi gizlemek için bu satırır silin
label1.Text = sifre;
}

private void button1_Click(object sender, EventArgs e)
{
//Klavyeden girilen bilgi değişkene aktarılıyor
string girilen = textBox1.Text;
//+1 -1 bilgisi için 4 karaterlerlik durum değişkeni tanımlanıyor
string[] durum = {"", "", "", ""};
//Proparties te unutulma olasılığına karşı bilgi labeli temizleniyor
label2.Text = "";

//Şifre ve girilen eşitse doğrudan mesaj yazıp program bitiriliyor
if (sifre == girilen)
{
label2.Text = "Giriş Başarılı";
}
else
{
//Şifrenin karakter sayısı kadar döngü kuruluyor. Karekter karakter karşılaştırma için
for (int i = 0; i < sifre.Length; i++)
{
for (int j = 0; j < girilen.Length; j++)
{
//Karakterler eşitmi kontrol ediliyor
if (sifre[i] == girilen[j])
{
if (i == j)
{
//Doğru yerdeyse ilgili değişkene +1 değeri aktarılıyor
durum[j] = "+1";
}
else
{
//Yanlış yerdeyse ilgili değişkene -1 değeri aktarılıyor
durum[j] = "-1";
}
}
}
}
//Random üretilen sayıda birden fazla aynı karakter varsa olabilecek hatalar düzeltiliyor
for (int i = 0; i < sifre.Length; i++)
{
if (sifre[i] == girilen[i]) durum[i] = "+1";
}
//Durum dizisinde toplanan bilgiler ekrana yazılıyr
label2.Text = durum[0] + durum[1] + durum[2] + durum[3];
//Durumda hiç bilgi yoksa yani hiç eşleme yoksa ekrana 0 yazılıyor
if (label2.Text == "") label2.Text = "0";
}
}
}
}
[/code]

Link to comment
Share on other sites

[quote name='TuTaMixx' date='15 January 2012 - 21:06 ' timestamp='1326661587' post='1141288']
teşekkür ederim sanada zahmet verdim vs 2010 damı yapıldı 2008de kodları yazdığımda hata veriyorda ?
[/quote]
vs 2011
..
Formda
1 textbox
1 button
2 label (label1 = şifreyi gösteriyor, label2 = mesajları gösteriyor)
kullan

tamamını copy pasta yapma
..
public Form1()
{
InitializeComponent();
}
yukarıdaki ifadeden sonra aşağıdakin ekle.
[code] //Değişkenler tanımlanıyor
Random sayi = new Random();
string sifre;
[/code]
Form_load a aşağıdakileri ekle
[code]
//Random şifre üretiliyor
sifre = Convert .ToString (sayi.Next(1000, 9999));
//Şifreyi gizlemek için bu satırır silin
label1.Text = sifre;
[/code]
Button_Click e aşağıdakileri ekle
[code]
//Klavyeden girilen bilgi değişkene aktarılıyor
string girilen = textBox1.Text;
//+1 -1 bilgisi için 4 karaterlerlik durum değişkeni tanımlanıyor
string[] durum = {"", "", "", ""};
//Proparties te unutulma olasılığına karşı bilgi labeli temizleniyor
label2.Text = "";

//Şifre ve girilen eşitse doğrudan mesaj yazıp program bitiriliyor
if (sifre == girilen)
{
label2.Text = "Giriş Başarılı";
}
else
{
//Şifrenin karakter sayısı kadar döngü kuruluyor. Karekter karakter karşılaştırma için
for (int i = 0; i < sifre.Length; i++)
{
for (int j = 0; j < girilen.Length; j++)
{
//Karakterler eşitmi kontrol ediliyor
if (sifre[i] == girilen[j])
{
if (i == j)
{
//Doğru yerdeyse ilgili değişkene +1 değeri aktarılıyor
durum[j] = "+1";
}
else
{
//Yanlış yerdeyse ilgili değişkene -1 değeri aktarılıyor
durum[j] = "-1";
}
}
}
}
//Random üretilen sayıda birden fazla aynı karakter varsa olabilecek hatalar düzeltiliyor
for (int i = 0; i < sifre.Length; i++)
{
if (sifre[i] == girilen[i]) durum[i] = "+1";
}
//Durum dizisinde toplanan bilgiler ekrana yazılıyr
label2.Text = durum[0] + durum[1] + durum[2] + durum[3];
//Durumda hiç bilgi yoksa yani hiç eşleme yoksa ekrana 0 yazılıyor
if (label2.Text == "") label2.Text = "0";
}
[/code]

Link to comment
Share on other sites

kardeş çıldıracam ben ya nasıl bi ödevdir bu :D kardeş ekranda sadece 1 tane -1veya +1 çıkıyor bunlardan 4 tane çıkması lazım :D her sayı için çıkacak uyuyşma yoksa 0 yazacak yani ekranda 4 tane +1 veya -1 veya 0 lardan biri olacak çok rahatsız ettim sizide ama :)

Link to comment
Share on other sites

[quote name='TuTaMixx' date='15 January 2012 - 21:28 ' timestamp='1326662930' post='1141298']
kardeş çıldıracam ben ya nasıl bi ödevdir bu :D kardeş ekranda sadece 1 tane -1veya +1 çıkıyor bunlardan 4 tane çıkması lazım :D her sayı için çıkacak uyuyşma yoksa 0 yazacak yani ekranda 4 tane +1 veya -1 veya 0 lardan biri olacak çok rahatsız ettim sizide ama :)
[/quote]
..
arkadaşım sen istediğini tam olarak anlatamadın galiba.
..
daha önce demiştin hi HİÇ EŞLEŞME OLMAZSA 0 yazacak. Sana gönderdiğim programda o işi yapıyor zaten. Hiç eşleşme olmazsa ekranda 4 tane 0 yazmasını mı istiyorsun?

Link to comment
Share on other sites

şöyle birşeyden bahsediyorum sayıyı giriyorum butona tıklayınca ekranda sadece +1 veya -1 yazıyor yani ekranda 4 tane rakam çıkıcak bu ister +1 olur ister -1 ister 0 ama mutlaka durumu gösteren 4 tane rakam olucak en son yolladığın programda sadece 1 tane çıkıyor ekrana.

Link to comment
Share on other sites

[quote name='TuTaMixx' date='16 January 2012 - 14:32 ' timestamp='1326724373' post='1141560']
şöyle birşeyden bahsediyorum sayıyı giriyorum butona tıklayınca ekranda sadece +1 veya -1 yazıyor yani ekranda 4 tane rakam çıkıcak bu ister +1 olur ister -1 ister 0 ama mutlaka durumu gösteren 4 tane rakam olucak en son yolladığın programda sadece 1 tane çıkıyor ekrana.
[/quote]
..
bir üst mesajda söylediğim değişiklikleri uygularsan düzelir
..
string[] durum = {"", "", "", ""};
satırını
string[] durum = {"0", "0", "0", "0"};
şeklinde değiştir
...
//Durumda hiç bilgi yoksa yani hiç eşleme yoksa ekrana 0 yazılıyor
if (label2.Text == "") label2.Text = "0";
..
bu iki satırı da sil...
..

Link to comment
Share on other sites

onu yaptım ancak böyle bir sorunum var :(
[img]http://d1201.hizliresim.com/t/j/1v6pp.png[/img]

tutulan sayının aynısı bile girdiğimde böyle saçma bir sonuç veriyorki bazı değişik sayılar girdiğimdede +1 veya -1 yazılışları yanlış yazılıyor +1 yazması gerekirken -1 veya 0 yazıyor :(

Link to comment
Share on other sites

[quote name='TuTaMixx' date='16 January 2012 - 18:22 ' timestamp='1326738176' post='1141687']
onu yaptım ancak böyle bir sorunum var :(
[img]http://d1201.hizliresim.com/t/j/1v6pp.png[/img]

tutulan sayının aynısı bile girdiğimde böyle saçma bir sonuç veriyorki bazı değişik sayılar girdiğimdede +1 veya -1 yazılışları yanlış yazılıyor +1 yazması gerekirken -1 veya 0 yazıyor :(
[/quote]
..
[code]//Şifre ve girilen eşitse doğrudan mesaj yazıp program bitiriliyor
if (sifre == girilen)
{
label2.Text = "Giriş Başarılı";
}[/code]
bu kısmı yazarsan söylediğini yapması imkansız. Bence sen COPY / PASTE yapamıyorsun arkadaşım. Program hatasız çalışıyor. Aşağıda her durum için 1 ekran çıktısı görebilirsin.
..
[img]http://img600.imageshack.us/img600/9951/tncsoru.png[/img]

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...