Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [С#]Игра в очко, не пойму проблему 
:(
    Опции темы
ДобренькийПапаша
Дата 31.7.2008, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



на строке 160, если ввожу нет (хватит мол), то из цикла то выходит, но почему-то генерит ещё одну карту, хотя я не прошу!

Код

using System;
using System.Collections.Generic;
using System.Text;

namespace _21Point
{
    class Program
    {
        private int i;
        private int n = 0;
        private int summ = 0;
        private int summus = 0;
        private int c = 0;
        private int[] cards =
        {
            2,2,2,2,
            3,3,3,3,
            4,4,4,4,
            5,5,5,5,
            6,6,6,6,
            7,7,7,7,
            8,8,8,8,
            9,9,9,9,
            10,10,10,10,
            10,10,10,10,
            10,10,10,10,
            10,10,10,10,
            11,11,11,11
        };

        private int[] compcards = new int[5];
        private int[] usercards = new int[5];

        /*private static int ins()
        {
            int[] bcards = new int[10];
            for (int i = 0; i < bcards.Length; i++) 
            {
                bcards[i] = 0;
            }
            return bcards[10]; 
        }*/


        private int game()
        {
            int[] bcards = new int[10];
            for (int i = 0; i < bcards.Length; i++)
            {
                bcards[i] = 0;
            }
             
            Console.WriteLine("Сдаю карты");
            Random rand = new Random();

            for (i = 0; i < 2; i++)
            {
            L1:n = rand.Next(2, 11);
            //Console.WriteLine("This {0}", n);
                compcards[i]=n;
                if (compcards[0] + compcards[1] == 21)
                {
                    Console.WriteLine("У меня 21 очко, я выиграл");
                    break;
                }
             
                if (compcards[i] == n)
                {
                    bcards[n - 2] += 1;
                    if (bcards[n - 2] >= 4 && n - 2 != 9)
                        goto L1;
                        if (bcards[n - 2] >= 16 && n - 2 == 9)
                            goto L1;
                }
            }

            if (compcards[0] + compcards[1] >= 18)
            {
                Console.WriteLine("Мне хватит");
                //break;
            }
            else
            {
                for (i = 2; i < 5; i++)
                {
                L1:
                    n = rand.Next(2, 11);
                    //Console.WriteLine("This {0}", n);
                    compcards[i] = n;
                    if (compcards[i] == n)
                    {
                        bcards[n - 2] += 1;
                        if (bcards[n - 2] >= 4 && n - 2 != 9)
                            goto L1;
                        if (bcards[n - 2] >= 16 && n - 2 == 9)
                            goto L1;
                        for (int j = 0; j < 5; j++)
                        {
                            summ += compcards[j];
                        }
                        if (summ == 21)
                        {
                            Console.WriteLine("У меня 21 очко, я выиграл");
                            goto L4;
                        }
                        if (summ >= 18)
                        {
                            Console.WriteLine("Мне хватит");
                            break;
                        }

                    }
                }

            }
           
                for (i = 0; i < 2; i++)
                {
                L2:
                    n = rand.Next(2, 11);
                    usercards[i] = n;
                    if (usercards[i] == n)
                    {
                        bcards[n - 2] += 1;
                        if (bcards[n - 2] >= 4 && n - 2 != 9)
                            goto L2;
                        if (bcards[n - 2] >= 16 && n - 2 == 9)
                            goto L2;
                    }
                }
                Console.Write("Карты игрока:");
                for (i = 0; i < 5; i++)
                {
                   
                    if (usercards[i] != 0)
                        Console.Write("{0};", usercards[i]);
                }
                Console.WriteLine();

                string answer2;
                for (i = 2; i < 5; i++)
                {

                L2:
                    Console.WriteLine("Ещё?");

                    answer2 = Console.ReadLine();

                    /*{

                        Console.Write("Карты игрока:");
                        for (int d = 0; d < 5; d++)
                        {
                            if (usercards[d] != 0)
                                Console.Write("{0};", usercards[d]);
                        }
                    }*/
                    n = rand.Next(2, 11);
                    usercards[i] = n;
                    if (answer2 == "нет") goto L5;
                    if (answer2 == "да")
                    {
                        Console.Write("Карты игрока:");
                        for (int d = 0; d < 5; d++)
                        {
                            if (usercards[d] != 0)
                                Console.Write("{0};", usercards[d]);
                        }
                        Console.WriteLine();
                    }
                    if (usercards[i] == n)
                    {
                        bcards[n - 2] += 1;
                        if (bcards[n - 2] >= 4 && n - 2 != 9)
                            goto L2;
                        if (bcards[n - 2] >= 16 && n - 2 == 9)
                            goto L2;
                    }
                    for (int j = 0; j < 5; j++)
                    {
                        if (usercards[j] != 0) { c++; }
                    }
                    if (c == 5) { break; }
                }

            L5:
            Console.Write("Карты компьютера:");
            for (i = 0; i < 5; i++)
            {
                
                Console.Write("{0};", compcards[i]);
            }
            Console.WriteLine();
            Console.Write("Карты игрока:");
            for (i = 0; i < 5; i++)
            {
                summus += usercards[i];
                if (usercards[i] != 0)
                    Console.Write("{0};", usercards[i]);
            }
            /*Console.WriteLine();
            for (i = 0; i < 10; i++)
            {
                Console.WriteLine("{0}", bcards[i]);
            }*/
            
            Console.WriteLine();
            if (summ > summus && summ<=21)
            {
                Console.WriteLine("Я выиграл");
            }
            if(summ<summus && summus<=21)
            {
                Console.WriteLine("Вы выиграли");
            }
            if(summ==summus || (summ>21 && summus>21))
            {
                Console.WriteLine("Ничья");
            }

        L4: Console.WriteLine("Конец игры");
                return 0;
        }

        static void Main(string[] args)
        {
            Program ex = new Program();
            ex.game();
        }
    }
}




Это сообщение отредактировал(а) ДобренькийПапаша - 31.7.2008, 21:09


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Necias
Дата 31.7.2008, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 7.4.2006

Репутация: нет
Всего: 2



Я не особо долго разбирался, может, сделал что не то, но вроде так:
Код

using System;
using System.Collections.Generic;
using System.Text;
namespace _21Point
{
    class Program
    {
        private int i;
        private int n = 0;
        private int summ = 0;
        private int summus = 0;
        private int c = 0;
        private int[] cards =
        {
            2,2,2,2,
            3,3,3,3,
            4,4,4,4,
            5,5,5,5,
            6,6,6,6,
            7,7,7,7,
            8,8,8,8,
            9,9,9,9,
            10,10,10,10,
            10,10,10,10,
            10,10,10,10,
            10,10,10,10,
            11,11,11,11
        };
        private int[] compcards = new int[5];
        private int[] usercards = new int[5];
        /*private static int ins()
        {
            int[] bcards = new int[10];
            for (int i = 0; i < bcards.Length; i++) 
            {
                bcards[i] = 0;
            }
            return bcards[10]; 
        }*/
        private int game()
        {
            int[] bcards = new int[10];
            for (int i = 0; i < bcards.Length; i++)
            {
                bcards[i] = 0;
            }

            Console.WriteLine("Сдаю карты");
            Random rand = new Random();
            for (i = 0; i < 2; i++)
            {
            L1:
                n = rand.Next(2, 11);
                //Console.WriteLine("This {0}", n);
                compcards[i] = n;
                if (compcards[0] + compcards[1] == 21)
                {
                    Console.WriteLine("У меня 21 очко, я выиграл");
                    break;
                }

                if (compcards[i] == n)
                {
                    bcards[n - 2] += 1;
                    if (bcards[n - 2] >= 4 && n - 2 != 9)
                        goto L1;
                    if (bcards[n - 2] >= 16 && n - 2 == 9)
                        goto L1;
                }
            }
            if (compcards[0] + compcards[1] >= 18)
            {
                Console.WriteLine("Мне хватит");
                //break;
            }
            else
            {
                for (i = 2; i < 5; i++)
                {
                L1:
                    n = rand.Next(2, 11);
                    //Console.WriteLine("This {0}", n);
                    compcards[i] = n;
                    if (compcards[i] == n)
                    {
                        bcards[n - 2] += 1;
                        if (bcards[n - 2] >= 4 && n - 2 != 9)
                            goto L1;
                        if (bcards[n - 2] >= 16 && n - 2 == 9)
                            goto L1;
                        for (int j = 0; j < 5; j++)
                        {
                            summ += compcards[j];
                        }
                        if (summ == 21)
                        {
                            Console.WriteLine("У меня 21 очко, я выиграл");
                            goto L4;
                        }
                        if (summ >= 18)
                        {
                            Console.WriteLine("Мне хватит");
                            break;
                        }
                    }
                }
            }

            for (i = 0; i < 2; i++)
            {
            L2:
                n = rand.Next(2, 11);
                usercards[i] = n;
                if (usercards[i] == n)
                {
                    bcards[n - 2] += 1;
                    if (bcards[n - 2] >= 4 && n - 2 != 9)
                        goto L2;
                    if (bcards[n - 2] >= 16 && n - 2 == 9)
                        goto L2;
                }
            }
            Console.Write("Карты игрока:");
            for (i = 0; i < 5; i++)
            {

                if (usercards[i] != 0)
                    Console.Write("{0};", usercards[i]);
            }
            Console.WriteLine();
            string answer2;
            for (i = 2; i < 5; i++)
            {
            L2:
                Console.WriteLine("Ещё?");
                answer2 = Console.ReadLine();
                /*{
                    Console.Write("Карты игрока:");
                    for (int d = 0; d < 5; d++)
                    {
                        if (usercards[d] != 0)
                            Console.Write("{0};", usercards[d]);
                    }
                }*/
                if (answer2 == "нет") goto L5;
                if (answer2 == "да")
                {
                    n = rand.Next(2, 11);
                    usercards[i] = n;
                    Console.Write("Карты игрока:");
                    for (int d = 0; d < 5; d++)
                    {
                        if (usercards[d] != 0)
                            Console.Write("{0};", usercards[d]);
                    }
                    Console.WriteLine();
                }
                if (usercards[i] == n)
                {
                    bcards[n - 2] += 1;
                    if (bcards[n - 2] >= 4 && n - 2 != 9)
                        goto L2;
                    if (bcards[n - 2] >= 16 && n - 2 == 9)
                        goto L2;
                }
                for (int j = 0; j < 5; j++)
                {
                    if (usercards[j] != 0) { c++; }
                }
                if (c == 5) { break; }
            }
        L5:
            Console.Write("Карты компьютера:");
            for (i = 0; i < 5; i++)
            {

                Console.Write("{0};", compcards[i]);
            }
            Console.WriteLine();
            Console.Write("Карты игрока:");
            for (i = 0; i < 5; i++)
            {
                summus += usercards[i];
                if (usercards[i] != 0)
                    Console.Write("{0};", usercards[i]);
            }
            /*Console.WriteLine();
            for (i = 0; i < 10; i++)
            {
                Console.WriteLine("{0}", bcards[i]);
            }*/

            Console.WriteLine();
            if (summ > summus && summ <= 21)
            {
                Console.WriteLine("Я выиграл");
            }
            if (summ < summus && summus <= 21)
            {
                Console.WriteLine("Вы выиграли");
            }
            if (summ == summus || (summ > 21 && summus > 21))
            {
                Console.WriteLine("Ничья");
            }
        L4: Console.WriteLine("Конец игры");
            return 0;
        }
        static void Main(string[] args)
        {
            Program ex = new Program();
            ex.game();
        }
    }
}


(просто поменял местами в одном месте)
Код

                if (answer2 == "нет") goto L5;
                if (answer2 == "да")
                {
                    n = rand.Next(2, 11); //Генерим новую карту только если пользователь сказал да
                    usercards[i] = n;
                    Console.Write("Карты игрока:");
                    for (int d = 0; d < 5; d++)
                    {
                        if (usercards[d] != 0)
                            Console.Write("{0};", usercards[d]);
                    }
                    Console.WriteLine();
                }


Это сообщение отредактировал(а) Necias - 31.7.2008, 21:38
PM MAIL ICQ   Вверх
ДобренькийПапаша
Дата 31.7.2008, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



ага, я уже понял пол-часа назад это дело, и вообще много чего там из неправильной логики нашёл)))
просто зарапортовался сёдня уже)))


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0640 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.