C# Yapılan oyundaki hata

Senyorr

Hectopat
Katılım
21 Kasım 2021
Mesajlar
157
Çözümler
1
Daha fazla  
Sistem Özellikleri
Rtx2060s Ryzen53600 HyperFurryX8x2 AsusB450MAProMax
Cinsiyet
Erkek
Meslek
Öğrenci
Basit bir tıkla oyunu yapıyorum, geliştire bastığınız zaman her seferinde tıklamanız ve fiyat 2X artacak fakat 2. Mod'a geçmiyor, yardımcı olursanız sevinirim.

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics.Eventing.Reader;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Oyun_Beta
{
 public partial class Form1 : Form
 {
 int tikla;
 int mod = 1;
 int fiyat = 10;

 public Form1()
 {
 InitializeComponent();
 }

 private void btnTikla_Click(object sender, EventArgs e)
 {
 tikla++;

 int para = tikla;

 if (mod == 2)
 {

 tikla += 1;

 }

 if (mod == 3)
 {

 tikla += 3;

 }
 lblPara.Text = tikla.ToString();

 }
 private void btnGelis_Click(object sender, EventArgs e)
 {
 int para = tikla;
 if (para >= fiyat)
 {

 if (mod == 1)
 {
 mod = 2;
 tikla -= fiyat;
 lblPara.Text = tikla.ToString();
 int kacx = Convert.ToInt32(lblKacX.Text);
 kacx = kacx * 2;
 lblKacX.Text = kacx.ToString();
 int tl = Convert.ToInt32(lblTL.Text);
 tl = tl * 2;
 lblTL.Text = tl.ToString();

 }

 }

 else if (para >= fiyat)
 {
 if (mod == 2)
 {

 mod = 3;
 tikla -= fiyat;
 lblPara.Text = tikla.ToString();
 int kacx = Convert.ToInt32(lblKacX.Text);
 kacx = kacx * 2;
 lblKacX.Text = kacx.ToString();
 int tl = Convert.ToInt32(lblTL.Text);
 tl = tl * 2;
 fiyat = fiyat * 2;
 lblTL.Text = tl.ToString();
 }

 }
 else MessageBox.Show("Paranız Yeterli Değil!", "Hata!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 }
 }
}
 
Son düzenleyen: Moderatör:
"Btngelis_click" metodunda, her iki durumda da aynı kod bloğu kullanma nedeninizi anlayamadım. İlk "if" bloğunda mod değeri 2'ye atanıyor ve fiyat düşülüyor, ardından ikinci "if" bloğuna geçildiğinde yine aynı şart kontrol ediliyor. Bu durumda ikinci "if" bloğu hiçbir zaman gerçekleşmeyecek.

private void btnGelis_Click(object sender, EventArgs e)
{
int para = tikla;

if (para >= fiyat)
{
if (mod == 1)
{
mod = 2;
tikla -= fiyat;
lblPara.Text = tikla.ToString();
int kacx = Convert.ToInt32(lblKacX.Text);
kacx = kacx * 2;
lblKacX.Text = kacx.ToString();
int tl = Convert.ToInt32(lblTL.Text);
tl = tl * 2;
lblTL.Text = tl.ToString();
}
else if (mod == 2)
{
mod = 3;
tikla -= fiyat;
lblPara.Text = tikla.ToString();
int kacx = Convert.ToInt32(lblKacX.Text);
kacx = kacx * 2;
lblKacX.Text = kacx.ToString();
int tl = Convert.ToInt32(lblTL.Text);
tl = tl * 2;
fiyat = fiyat * 2;
lblTL.Text = tl.ToString();
}
}
else
{
MessageBox.Show("Paranız Yeterli Değil!", "Hata!", MessageBoxButtons.OK
, MessageBoxIcon.Warning);
}
}
Bu kodu yazana kadar ömrüm bitti.
 
Para değişkeni fiyat değişkenine büyük eşittir durumuna gelmediğinden olmuyor sanırsam.
Şöyle başta geliyor ama else ife de aynı şeyi yazmışsın ondan aynı durum olduğu için else ifteki if i çalıştırmıyor kod otomatik olarak.
 
Kodu böyle yaparak düzelttim tavsiyeleriniz için teşekkür ederim @Anıl Sancak ancak @KaptanUfuk

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics.Eventing.Reader;
using System.Drawing;
using System.Linq;
using System.Security.AccessControl;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Oyun_Beta
{
public partial class Form1 : Form
{
int tikla = 0;
int mod = 1;
int fiyat = 100;


public Form1()
{
InitializeComponent();
}

private void btnTikla_Click(object sender, EventArgs e)
{
tikla++;


int para = tikla;

if (mod == 2)
{

tikla += 1;

}

if (mod == 3)
{

tikla += 3;

}
if (mod == 4)
{

tikla += 7;

}
if (mod == 5)
{

tikla += 15;

}
if (mod == 6)
{

tikla += 31;

}
if (mod == 7)
{

tikla += 63;

}
if (mod == 8)
{

tikla += 127;

}
if (mod == 9)
{

tikla += 255;

}
lblPara.Text = tikla.ToString();




}
private void btnGelis_Click(object sender, EventArgs e)
{

if (tikla >= fiyat && mod == 1)
{
Artis();
}
else if (tikla >= fiyat && mod == 2)
{
Artis();
}
else if (tikla >= fiyat && mod == 3)
{
Artis();
}
else if (tikla >= fiyat && mod == 4)
{
Artis();
}
else if (tikla >= fiyat && mod == 5)
{
Artis();
}
else if (tikla >= fiyat && mod == 6)
{
Artis();
}
else if (tikla >= fiyat && mod == 7)
{
Artis();

}
else if (tikla >= fiyat && mod == 8)
{
Artis();
}
else if (tikla >= fiyat && mod == 9)
{
Artis();
MessageBox.Show("Oyunu Başarıyla Tamamladın! Oyunumu Oynadığın İçin Teşekkürler!!!!!!<3 ","BAŞARI!",MessageBoxButtons.OK,MessageBoxIcon.Question);
}

else MessageBox.Show("Paranız Yeterli Değil!", "Hata!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
private void Artis()
{
mod++;
tikla -= fiyat;
lblPara.Text = tikla.ToString();
int kacx = Convert.ToInt32(lblKacX.Text);
kacx = kacx * 2;
lblKacX.Text = kacx.ToString();
int tl = Convert.ToInt32(lblTL.Text);
tl = tl * 2;
fiyat = fiyat * 2;
lblTL.Text = tl.ToString();
}

private void label3_Click(object sender, EventArgs e)
{

}

private void pictureBox1_Click(object sender, EventArgs e)
{


}
}

}
 

Technopat Haberler

Yeni konular

Geri
Yukarı