PcDr C# & FireBird & Oracle |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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ı! |
|
|
|
|
|
|
|