Copyriht © 2011 PcDr SysDba
  Liman Programı
 
LİMAN PROGRAMI

Görsel programlama dersi için yaptığım proje programda farklı gemiler farklı iskelelere
random (rastgele) şekilde yanaşıyor.Kapasitelerini belirli sürelerde indirdikten sonra geri dönüyorlar.Bu işlemlerin tamamı .txt olarak dosyalanıyor.Timer ve dosyalama için güzel 1örnek.


Kodlar
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace mertcanKurtaranGrup1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        string neZamanAyrildi;
        int yil, ay, gun;
        int zaman = 0;
        int zamanTut = 0;
        bool gemiEkrandanCikti = false;
        int rastgeleGemi;
        int rastgeleIskele;
        bool gemiYolaCikti = false;
        string yanasilcakIskele = "i1";//default olarak 1.iskeleye yanasır eğer değer atanmamıssa
        int[] iskeleler = new int[5];
        int[] gemiler = new int[17];

        public void degerleriAta()
        {
            iskeleler[0] = 100;
            iskeleler[1] = 100;
            iskeleler[2] = 200;
            iskeleler[3] = 200;
            iskeleler[4] = 300;
            gemiler[0] = 50;
            gemiler[1] = 50;
            gemiler[2] = 50;
            gemiler[3] = 50;
            gemiler[4] = 50;
            gemiler[5] = 100;
            gemiler[6] = 100;
            gemiler[7] = 100;
            gemiler[8] = 100;
            gemiler[9] = 100;
            gemiler[10] = 200;
            gemiler[11] = 200;
            gemiler[12] = 200;
            gemiler[13] = 200;
            gemiler[14] = 300;
            gemiler[15] = 300;
            gemiler[16] = 300;
        }

        public void tarihAyarla()
        {
            Random rnd = new Random();
            yil = rnd.Next(1980, 2010);
            ay = rnd.Next(1, 12);
            gun = rnd.Next(1, 29);
            label10.Text = Convert.ToString(gun) + "/" + Convert.ToString(ay) + "/" + Convert.ToString(yil);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            tarihAyarla();

            degerleriAta();

            iskeleDurumHesapla();
           
            timer3.Start();

        }

        public void solaGit()
        {
            gemi.Left = gemi.Left - 10;
        }

        public void sagaGit()
        {
            gemi.Left = gemi.Left + 10;
        }

        public void yukariGit()
        {
            gemi.Top = gemi.Top - 10;
        }

        public void asagiGit()
        {
            gemi.Top = gemi.Top + 10;
        }

        public void sagAltGit()
        {
            asagiGit();
            sagaGit();
        }

        public void iskele1Yanas()
        {
            if (iskele1.Top > gemi.Top)
                if (iskele1.Left > gemi.Left)
                {
                    sagaGit();
                    sagAltGit();
                }
                else
                    asagiGit();
            else
            {
                zamanTut = zaman;
                timer1.Stop();
                timer2.Start();
            }
        }

        public void iskele2Yanas()
        {
            if (iskele2.Top > gemi.Top)
                if (iskele2.Left > gemi.Left)
                {
                    sagaGit();
                    sagAltGit();
                }
                else
                    asagiGit();
            else
            {
                zamanTut = zaman;
                timer1.Stop();
                timer2.Start();
            }
        }

        public void iskele3Yanas()
        {
            if (iskele3.Top > gemi.Top)
                if (iskele3.Left > gemi.Left)
                {
                    sagaGit();
                    sagAltGit();
                }
                else
                    asagiGit();
            else
            {
                zamanTut = zaman;
                timer1.Stop();
                timer2.Start();
            }
        }

        public void iskele4Yanas()
        {
            if (iskele4.Top > gemi.Top)
                if (iskele4.Left > gemi.Left)
                {
                    sagaGit();
                    sagAltGit();
                }
                else
                    asagiGit();
            else
            {
                zamanTut = zaman;
                timer1.Stop();
                timer2.Start();
            }
        }

        public void iskele5Yanas()
        {
            if (iskele5.Top > gemi.Top)
                if (iskele5.Left > gemi.Left)
                {
                    sagaGit();
                    sagAltGit();
                }
                else
                    asagiGit();
            else
            {
                zamanTut = zaman;
                timer1.Stop();
                timer2.Start();
            }
        }

        public void iskeledenCik()
        {
            if (gemi.Top > iskele1.Top - 45)
                yukariGit();
            else if (gemi.Left > 5)
                solaGit();
            else
            {
                gemiEkrandanCikti = true;
                timer2.Stop();
                dosyaKayit();
            }
        }

        public void gemiBaslangicPozisyon()
        {
            gemi.Left = 20;
            gemi.Top = 20;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            zaman++;
            label1.Text = Convert.ToString(zaman);
            if (yanasilcakIskele == "i1")
                iskele1Yanas();
            else if (yanasilcakIskele == "i2")
                iskele2Yanas();
            else if (yanasilcakIskele == "i3")
                iskele3Yanas();
            else if (yanasilcakIskele == "i4")
                iskele4Yanas();
            else if (yanasilcakIskele == "i5")
                iskele5Yanas();

        }

        private void iskeleDurumHesapla()
        {
            textBox1.Text = "";
            for (int i = 0; i < iskeleler.Length; i++)
                textBox1.Text = textBox1.Text + "İskele" + Convert.ToString(i+1) + ":" + Convert.ToString(iskeleler[i]) + "n";
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            zaman++;
            label1.Text = Convert.ToString(zaman);
            int gecenSure = zaman - zamanTut;
            durum.Text = "Yük indiriliyor..";


            if (Convert.ToInt32(gemiKapasite.Text) == 0)
            {
                durum.Text = "Indirme tamamlandı!!Gemi yola çıktı..";
                neZamanAyrildi = label6.Text;
                iskeledenCik();
            }
            else
                if (gecenSure % 5 == 0)
                {
                    gemiKapasite.Text = Convert.ToString(Convert.ToInt16(gemiKapasite.Text) - 50);
                    iskeleler[rastgeleIskele] = iskeleler[rastgeleIskele] - 50;
                    iskeleDurumHesapla();
                }

            if (durum.Text == "Yük indiriliyor..")
                label2.Text = Convert.ToString(gecenSure);
               

        }

        public void iskeleleleriBosalt()
        {
            iskeleler[0] = 100;
            iskeleler[1] = 100;
            iskeleler[2] = 200;
            iskeleler[3] = 200;
            iskeleler[4] = 300;
        }

        public void arizaliIskele(int iskeleNo)
        {
            if(iskeleNo == 1)
                iskele1_ad.ForeColor = System.Drawing.Color.Red;
            else
                iskele1_ad.ForeColor = System.Drawing.Color.Black;
            if (iskeleNo == 2)
                iskele2_ad.ForeColor = System.Drawing.Color.Red;
            else
                iskele2_ad.ForeColor = System.Drawing.Color.Black;
            if (iskeleNo == 3)
                iskele3_ad.ForeColor = System.Drawing.Color.Red;
            else
                iskele3_ad.ForeColor = System.Drawing.Color.Black;
            if (iskeleNo == 4)
                iskele4_ad.ForeColor = System.Drawing.Color.Red;
            else
                iskele4_ad.ForeColor = System.Drawing.Color.Black;
            if (iskeleNo == 5)
                iskele5_ad.ForeColor = System.Drawing.Color.Red;
            else
                iskele5_ad.ForeColor = System.Drawing.Color.Black;
        }

        public void dosyaKayit()
        {
            StreamWriter sr = File.AppendText("kayit.txt");
            sr.WriteLine(yil + "/" + ay + "/" + gun + "/" + "gemi" + Convert.ToString(rastgeleGemi) + "/" + label2.Text + "/" + neZamanAyrildi);
            sr.Close();
        }

        public void gemiyiYolaCikar()
        {
            durum.Text = "Iskeleye Yanasiyor";
            Random rnd = new Random();
            Random rnd1 = new Random();

           
            do
            {
               
                rastgeleGemi = rnd.Next(0, 17);
                rastgeleIskele = rnd1.Next(0, 5);
                arizaliIskele((rastgeleIskele + 8) % 5);

                if (iskeleler[0] == 0 && iskeleler[1] == 0 && iskeleler[2] == 0 && iskeleler[3] == 0 && iskeleler[4] == 0)
                {
                    MessageBox.Show("İskelele kapasiteleri doldu!! boşaltılacak..");
                    iskeleleleriBosalt();
                }
            } while (gemiler[rastgeleGemi] > iskeleler[rastgeleIskele]) ;
               
            gemiKapasite.Text = Convert.ToString(gemiler[rastgeleGemi]);
            yanasilcakIskele = "i" + Convert.ToString(rastgeleIskele + 1);
            gemiYolaCikti = true;
            timer1.Start();
        }

        private void timer3_Tick(object sender, EventArgs e)
        {
            if (gemiYolaCikti == false)
                gemiyiYolaCikar();
           

            if (gemiEkrandanCikti == true)
            {
                gemiEkrandanCikti = false;
                gemiBaslangicPozisyon();
                gemiyiYolaCikar();
                timer1.Start();
            }
           

        }

        private void label1_TextChanged(object sender, EventArgs e)
        {
            label6.Text = Convert.ToString(Convert.ToInt16(label1.Text) / 30) + ":00";
            if (label6.Text == "24:00")
            {
                label6.Text = "0:00";
               
                if (gun > 30)
                {
                    ay++;
                    if (ay > 12)
                    {
                        ay = 1;
                        yil++;
                    }
                }else
                    gun++;

            }
        }
    }
}
 
 
  Bugün 1 ziyaretçi (2 klik) kişi burdaydı!  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol