Игра "21" Нужна помощь - C#
Формулировка задачи:
Здаствуйте! Помогите с программой. Игра "21", все работает, но два нюанса, первый это при одинаковом кол-ве очков, победа засчитывается мне, должно выводить сообщение о ничье. И 2-ое самое важное что программа закрывается сама после одной партии. Помогите пожалуйста исправить.
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; namespace _21 { public partial class Form1 : Form { List<int> cardpack_small = new List<int>() {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29, 30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52}; int handofPl = 0, handofCom = 0, firstcard =0,aceP=0,aceC=0; int ctabl = 3; Random randomizer = new Random(); public Form1() { InitializeComponent(); } /// <summary> /// первая выдача карт игрокам /// (по две карты) /// </summary> public void go_on() { firstcard = randomizer.Next(1,cardpack_small.Count); card1c.Image = imageList1.Images[0]; cardpack_small.RemoveAt(firstcard); takingcard(card1c,false,firstcard); int number = randomizer.Next(1,cardpack_small.Count); card1p.Image = imageList1.Images[number]; cardpack_small.RemoveAt(number); takingcard(card1p,true,number); number = randomizer.Next(1,cardpack_small.Count); card2c.Image = imageList1.Images[number]; cardpack_small.RemoveAt(number); takingcard(card2c,false,number); number = randomizer.Next(1,cardpack_small.Count); card2p.Image = imageList1.Images[number]; cardpack_small.RemoveAt(number); takingcard(card2p,true, number); if (aceC==1&&handofCom==10) { MessageBox.Show("У крупье 21!"); this.Close(); }else { if (aceP==1&&handofPl==10) { MessageBox.Show("ОЧКО!"); this.Close(); } } } /// <summary> /// Показ раздач /// </summary> /// <param name="sender"></param> public void takingcard(object sender,bool PL, int nn) { PictureBox animate = sender as PictureBox; animate.Height = 190; if (nn >= 40 || nn == 10 || nn == 20 || nn == 30) { if (PL) { handofPl = handofPl + 10; } else handofCom = handofCom + 10; } else { if (nn % 10 != 1) { if (PL) { handofPl = handofPl + (nn % 10); } else handofCom = handofCom + (nn % 10); } else { if (PL) { if (aceP == 1) { handofPl = handofPl + 1; } else { aceP = 1; } } else { if (aceC == 1) { handofCom = handofCom + 1; } else { aceC = 1; } } } } if (PL&&!cach()) { MessageBox.Show("ПЕРЕБОР"); this.Close(); } } private void button1_Click(object sender, EventArgs e) { go_on(); } private void button2_Click(object sender, EventArgs e) { List<PictureBox> tabl = new List<PictureBox>() { card1c, card1p, card2c, card2p, card3c, card3p, card4c, card4p, card5c, card5p, card6c, card6p, card7c, card7p, card8c, card8p }; ctabl = ctabl + 2; int number = randomizer.Next(1,cardpack_small.Count); tabl[ctabl].Image = imageList1.Images[number]; cardpack_small.RemoveAt(number); takingcard(tabl[ctabl], true, number); } public bool cach() { if (handofPl+aceP>21) { return false; } else { if (handofPl+aceP*11>21) { label1.Text = (handofPl+aceP).ToString(); label2.Text = (handofPl+aceP).ToString(); return true; } else { label2.Text = (handofPl + aceP*11).ToString(); label1.Text = (handofPl+aceP).ToString(); return true; } } } private void button3_Click(object sender, EventArgs e) { ctabl = 2; card1c.Image = imageList1.Images[firstcard]; if ((handofCom + 11 * aceC) <= 21 && (handofCom + 11 * aceC) > 16 || (handofCom + aceC) <= 21 && (handofCom + aceC) > 16) { endgame(); } while ((handofCom+aceC<=21)&&!((handofCom + 11 * aceC) <= 21 && (handofCom + 11 * aceC) > 16 || (handofCom + aceC) <= 21 && (handofCom + aceC) > 16)) { List<PictureBox> tabl = new List<PictureBox>() { card1c, card1p, card2c, card2p, card3c, card3p, card4c, card4p, card5c, card5p, card6c, card6p, card7c, card7p, card8c, card8p }; ctabl = ctabl + 2; int number = randomizer.Next(1,cardpack_small.Count); tabl[ctabl].Image = imageList1.Images[number]; cardpack_small.RemoveAt(number); takingcard(tabl[ctabl], false, number); }; if (handofCom+aceC>21) { MessageBox.Show("ПОБЕДА!"); this.Close(); } else { endgame(); } } private void endgame() { if (handofCom+11*aceC < 21) { handofCom = 11 * aceC + handofCom; } else { handofCom = handofCom + aceC; } if (handofPl + 11 * aceP < 21) { handofPl = 11 * aceP + handofPl; } else { handofPl = handofPl + aceP; } if (handofCom>handofPl) { MessageBox.Show("Компьютер выиграл"); } else { MessageBox.Show("ПОБЕДА!"); }; this.Close(); } private void button4_Click(object sender, EventArgs e) { this.Close(); } private void Form1_Load(object sender, EventArgs e) { int dn; string named; timer1.Interval = 1000; timer1.Enabled = true; label4.Text = "Сегодня: " + DateTime.Now.Date.ToShortDateString(); // вывести день недели dn = (int)DateTime.Now.DayOfWeek; switch (dn) {case 0: named = "воскресенье"; break; case 1: named = "понедельник"; break; case 2: named = "вторник"; break; case 3: named = "среда"; break; case 4: named = "четверг"; break; case 5: named = "пятница"; break; case 6: named = "суббота"; break; default: named = " нетути"; break; } ; label4.Text += "\n" + named ; } private void timer1_Tick(object sender, EventArgs e) { // получить системное время label5.Text = DateTime.Now.ToLongTimeString(); } } }
Что помочь никто не может?
Что помочь никто не может?
Решение задачи: «Игра "21" Нужна помощь»
textual
Листинг программы
if (handofCom>handofPl) { MessageBox.Show("Компьютер выиграл"); } else if (handofCom == handofPl) { MessageBox.Show("Ничья"); } else { MessageBox.Show("ПОБЕДА!"); };
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д