20 Kasım 2020 Cuma

Delphi - Sayı Tahmin Oyunu

 Merhaba, bugün sizlerle Delphi diliyle yazılmış bir sayı tahmin oyununu paylaşıyorum. Delphi pascal dilinin nesne tabanlı programlama diline dönüşmüş hali denebilir. Günümüzde en büyük rakibi olarak görülen c# dili kadar popüler olmasa da Sykpe, Navicat, Xampp gibi popüler uygulamalar  Delphi dile ile yazılmıştır. C# ile kıyaslandığında öne çıkan en büyük özelliği derleme hızının çok yüksek olmasıdır.  Delphi ile ilgili Türkçe kaynağın diğer dillere kıyasla düşük olduğu aşikar. Bu nedenle bu yazının ilgilenen kişilere faydalı olacağını düşünmekteyim. 

Uygulama Yapısı


Uygulamanın arka planında belirlenen sayılar arasından rastgele bir sayı tutuluyor. Kullanıcının hedefi verilen haklar içerisinde bu sayıyı tahmin etmek. Yapılan tahminlerden sonra kullanıcıya sayının tahmin edilen sayıdan küçük veya büyük olduğunu bildiren mesaj kutuları ekrana geliyor. Sizler çeşitli modifikasyonlarla bu yapıyı dilediğiniz gibi değiştirebilirsiniz. 

Sayı Tahmin Oyunu Delphi
Örnek Tasarım

Sayı tahmin oyunu Delphi
Yapılan Tahmin Sonrası Bilgilendirme

Kodlar


   
unit Sayitahmin;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Math, Vcl.Menus;

type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  tut: Integer;
  hak:Integer;



implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  tut := Random(1024)+1;
  hak:=10;
  Label1.Caption:='Kalan Hak: '+IntToStr(hak);
  ShowMessage('1 ile 1024 arasında sayı giriniz.');
end;

procedure TForm2.Button2Click(Sender: TObject);
var
tahmin: Integer;
begin
  tahmin:=StrToInt(Edit1.Text);
  if tahmin=tut then
  begin
  ShowMessage('Tebrikler ' + IntToStr(hak)+'. hakkınız varken bildiniz.');
  Label1.Caption:='Kalan hak: 10';
  end

   else if tahmintut then begin
  Dec(hak);
  ShowMessage ('Küçük Sayı Giriniz');
  Label1.Caption:='Kalan Hak: '+IntToStr(hak);
  end;

    if hak=0 then
    begin
      ShowMessage('Tüm Haklarınız Bitti, Kaybettiniz. 
      Doğru sayi: '+ IntToStr(tut)) ;
    end;

    if hak=1 then
    begin
      ShowMessage('Son Hakkın İyi Tahmin et!');
    end;

    edit1.Text:='';
    edit1.SetFocus;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
Label1.Caption:='Kalan Hak: ' + IntToStr(hak);
end;

end.
   

28 Temmuz 2020 Salı

c# - Sayı Tahmin Etme Oyunu

Merhaba, bugün c# ile yapmış olduğum bir sayı tahmin oyununu sizlerle paylaşıyorum. İsteyen arkadaşlar daha ileri seviyede geliştirebilir veya projelerinde kullanabilir. Form yüklendiğinde arka planda belirlenen 0 ile 1000 arasındaki sayıyı 10 denemede tahmin etmek. Sayıyı bulmayı kolaylaştırmak için bulunmak istenen sayının tahminlere göre hangi aralıkta olduğu veriliyor. 10 hak içerisinde sayı tahmin edilmediğinde veya sayı doğru bilindiğinde mesaj ekranı gelmekte daha sonra oyun yeni bir rastgele sayı tutulup tekrar başlamakta.

Ekran Görüntüsü:

c# sayı tahmin oyunu -1
















Çalışma Görüntüsü:

c# sayı tahmin oyunu -2
Aranan sayının 110 ile 125 arasında bir sayı olduğu görülüyor.


















Kodlar:

   
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 number_guessing_game
{
    public partial class Form1 : Form
    {
        Random rastgele = new Random();
        int tahmin, sayi;
        int hak = 10;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            //ozgurcyaman.com
            tahmin = Convert.ToInt32(textBox1.Text);

            if (tahmin == sayi) 
            {
                MessageBox.Show("Tebrikler " + hak.ToString() + ". 
                hakkınız varken bildiniz");
                hak = 10;
                label1.Text = "0";
                label5.Text = "1000";
                label6.Text = "Kalan hak: 10";
                textBox1.Text = "";

            }

            else if (tahmin < sayi) 
            {
                hak--;
                label1.Text = tahmin.ToString();
                label6.Text = "Kalan hak: " + hak.ToString();
                textBox1.Focus();
                textBox1.Text = "";

            }
            else if (tahmin > sayi)
            {
                hak--;
                label5.Text = tahmin.ToString();
                label6.Text = "Kalan hak: " + hak.ToString();
                textBox1.Focus();
                textBox1.Text="";

            }
            if (hak == 0)
            {
                MessageBox.Show("Tüm haklarınız bitti kaybettiniz, 
                doğru sayi: " + sayi.ToString());
                sayi = rastgele.Next(1001);


            }
         
        }

        private void button2_Click(object sender, EventArgs e)
        {
            sayi = rastgele.Next(1001);
            hak = 10;
            label1.Text = "0";
            label5.Text = "1000";
            label6.Text = "Kalan hak: 10";
            textBox1.Focus();
            textBox1.Text = "";
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
            sayi = rastgele.Next(1001);
            label6.Text = "Kalan hak: " + hak.ToString();

           

        }
    }
}

Daha önce paylaşmış olduğum c# ile kronometre uygulaması için tıklayın 
Daha önce paylaşmış olduğum c# ile çarpım sonucu bulma oyunu için tıklayın

15 Haziran 2020 Pazartesi

c# - Çarpım Sonucu Bulma Oyunu

Bugün c# dili ile birlikte basit bir oyun yapıyoruz. Oyunun amacı rastgele olarak gelen iki sayının çarpım sonucunu 10 saniye içerisinde bilmek, pas butonu ile gelen iki rastgele sayı değişebiliyor. 10 saniye içerisinde tahmin yapılmadığında veya yanlış tahmin yapıldığında program otomatik olarak kapanıyor.

Tasarım Görüntüsü:

Çarpım sonucu bulma oyunu ozgurcyaman.blogspot.com


Kodlar:
   
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 WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int sonuc=0, sayi1=0, sayi2=0, tahmin, sayac=10;

        private void button2_Click(object sender, EventArgs e)
        {
            Random x = new Random();

            sayi1 = x.Next(1, 100);
            sayi2 = x.Next(1, 100);

            label1.Text = sayi1.ToString();
            label3.Text = sayi2.ToString();

            timer1.Enabled = true;
            sayac = 10;
            label5.Text = sayac.ToString() + " Saniyeniz kaldı";
            
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            sayac--;
            label5.Text = sayac.ToString()+" Saniyeniz kaldı";
            if (sayac==0)
            {
                timer1.Enabled = false;
                MessageBox.Show("Süreniz Bitti Kaybettiniz");
                this.Close();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            tahmin = Convert.ToInt32(textBox1.Text);
            sonuc = (sayi1 * sayi2);
            if (tahmin==sonuc)
            {
                timer1.Enabled = false;
                MessageBox.Show("Tebrikler " + sayac.ToString() + " saniye kala bildiniz");
                this.Close();
            }
            else
            {
                timer1.Enabled = false;
                MessageBox.Show("Maalesef bilemediniz doğru cevap: " + sonuc.ToString());
                this.Close();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Random x = new Random();
            
            sayi1 = x.Next(1, 100);
            sayi2 = x.Next(1, 100);

            label1.Text = sayi1.ToString();
            label3.Text = sayi2.ToString();

            timer1.Enabled = true;
            label5.Text = sayac.ToString() + " Saniyeniz kaldı";
        }
    }
}