Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 10.07.2014
Сообщений: 20

Игра в спички - исправить ошибку в коде

24.02.2015, 15:12. Показов 1278. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите исправить ошибку в программе
Вот сама ошибка


Ссылка на исходники
Projects.7z
Код Сервер
C#
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
class Server
{
    TcpListener Listener;
    static void Main()
    {
        new Server(8080); // 8080 - номер порта, можно поменять если этот закрыт
    }
 
    public Server(int Port)
    {
        Listener = new TcpListener(IPAddress.Any, Port);
        Listener.Start();
        Console.WriteLine("Welcome to Serverside");
        while (true)
        {
            Console.WriteLine("Ожидание подключения... ");
            TcpClient client = Listener.AcceptTcpClient();
            Console.WriteLine("Клиент подключен");
            NetworkStream stream = client.GetStream();
            int idata= int.Parse(recv(stream)); //1
            int icolpal = int.Parse(recv(stream)); //2
            switch (idata)
            {
                case 1:
                    Console.WriteLine("Я хочу поиграть с компьютером  с " + icolpal + "палками");
                    games(stream, icolpal);
 
                    break;
                case 2:
                    Console.WriteLine("Я хочу создать сетевую игру");
                    games(stream, icolpal, 2);
                    break;
                case 3:
                    Console.WriteLine("Я хочу присоеденится к игре ");
                    games(stream, icolpal, 3);
                    break;
            }
        }
    }
 
 
    private void games(NetworkStream stream, int colpal,int cpuu = 1)
    {
        Random rnd = new Random();
        int i; int lost; int other; ;
        lost = colpal;
        int hod = rnd.Next(1, 2);// 1 клиент 2 комп
        Console.WriteLine(hod);
        do{
            if (hod == 1)
            {
                send(stream, "1"); hod = 2;
                string data = recv(stream); // 
                string[] split = data.Split(';');//
                lost = int.Parse(split[0]);//
                other = int.Parse(split[1]);//
            }
            else
            {
                send(stream, "2"); hod = 1;
                if (cpuu == 1) other = this.cpuu(lost);
                else
                {
                    Console.WriteLine("Выберите общее кол-во количество палочек");
                    string scolpal = Console.ReadLine();// в строку кол-во палок
                    other = int.Parse(scolpal);// в инт палки
                }
                send(stream, lost + ";" + other);
            }
        }while (lost != 0);
    }
    private int cpuu(int lost)
    {
        if (lost < 5) return lost;
        else return lost % 5;
    }
 
    private void send(NetworkStream streaming, string data)
    {
        byte[] cpuorplayer = System.Text.Encoding.UTF8.GetBytes(data);
        streaming.Write(cpuorplayer, 1, cpuorplayer.Length);
    }
 
    private string recv(NetworkStream streaming)
    {
        Byte[] bytes = new Byte[1024];
        int i = streaming.Read(bytes, 0, bytes.Length);
        string data = System.Text.Encoding.UTF8.GetString(bytes, 0, i);
        return data;
    }
}

Код Клиента
C#
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
 
class SClient
{
    //private Byte[] bytes = new Byte[1024];
    TcpClient ipClient;
    public SClient(int Port, string Host)
    {
        //создаем клиента и подключаем к серверу
        ipClient = new TcpClient();
        ipClient.Connect(Host, Port);
        string switchplay;
        Console.WriteLine("Welcome to Clientside\n");
        NetworkStream stream = ipClient.GetStream();// создаем поток
        do
        {
            Console.WriteLine("Выберите с кем вы хотите сыграть\n1.)С копьютером\n2.)С другим игроком(создать)\n3.)С другим игроком(соедениться)");
            switchplay = Console.ReadLine(); //
        } while (!switchplay.Equals("1") && !switchplay.Equals("2") && !switchplay.Equals("3"));
        byte[] cpuorplayer = System.Text.Encoding.UTF8.GetBytes(switchplay); //в байты выбор
        stream.Write(cpuorplayer, 0, cpuorplayer.Length);
        switch (switchplay)
        {
            case "1":
                game1(stream);
                break;
            case "2":
                game2(stream);
                break;
            case "3":
                game3(stream);
                break;
        }    
    }
 
    static void Main()
    {
        new SClient(8080, "localhost"); //8080 - порт, "localhost" имя компа в сети на котором запущен сервер.
    }
 
    private void games(NetworkStream streaming, int colpal)
    {
        int i; int lost = colpal; int other;
        Console.WriteLine("Игра началась с компьютером с " + colpal + " палочками\n" );
        string hod = recv(streaming);
        do
        {
            if (hod.Equals("2"))
            {
                hod = "1";
                string data = recv(streaming); // 
                string[] split = data.Split(';');//
                lost = int.Parse(split[0]);//
                other = int.Parse(split[1]);//
                Console.WriteLine("Компьютер убрал " + other + " палочек\n осталось " + lost + " палочек!\n");//
            }else
            {
                hod = "2";
                string select; int intselect;//
                do
                {
                    Console.WriteLine(showpal(lost)+"Ведите количество палочек которые вы хотите удалить(от 1 до 4)");
                    select = Console.ReadLine(); // в строку выбор
                    intselect = int.Parse(select); // в инт выбор
                } while (intselect <= 0 && intselect >= 5 && lost < intselect); //выполнять если не с 1 по 4 и если хотим убрать палок больше чем можно
                byte[] bselect = System.Text.Encoding.UTF8.GetBytes(lost+";"+select); //в байты выбор
                streaming.Write(bselect, 0, bselect.Length);
                lost = lost - intselect;
            }
            
        } while (lost!=0); //палки кончились
        recv(streaming);// выйграл или проиграл
    }
    private void game1(NetworkStream streaming)
    {
        Console.WriteLine("Выберите общее кол-во количество палочек");
        string scolpal = Console.ReadLine();// в строку кол-во палок
        int colpal = int.Parse(scolpal);// в инт палки
        send(streaming, scolpal);//  отправить кол палок
        games(streaming, colpal);// запустить игру 
 
    }
    
    private void game2(NetworkStream streaming)
    {
        Console.WriteLine("Выберите общее кол-во количество палочек");
        string scolpal = Console.ReadLine();// в строку кол-во палок
        int colpal = int.Parse(scolpal);// в инт палки
        send(streaming, scolpal);//  отправить кол палок
        games(streaming, colpal);// запустить игру 
    }
 
    private void game3(NetworkStream streaming)
    {
        string data = Console.ReadLine();
        byte[] cpuorplayer = System.Text.Encoding.UTF8.GetBytes(data);
        streaming.Write(cpuorplayer, 0, cpuorplayer.Length);
        //games(streaming, colpal);
    }
 
    private void send(NetworkStream streaming, string data)
    {
        byte[] cpuorplayer = System.Text.Encoding.UTF8.GetBytes(data);
        streaming.Write(cpuorplayer, 0, cpuorplayer.Length);
    }
    
    private string recv(NetworkStream streaming)
    {
        Byte[] bytes = new Byte[1024];
        int i = streaming.Read(bytes, 0, bytes.Length);
        string data = System.Text.Encoding.UTF8.GetString(bytes, 0, i);
        return data;
    }
    private string showpal(int col){
        string show= "";
        for(int i=0 ; i<col;i++){
            show+="| ";
        }
        return "";
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.02.2015, 15:12
Ответы с готовыми решениями:

В коде выдает ошибку на 15 строчке. Мне надо исправить эту ошибку
procedure TForm1.BOkClick(Sender: TObject); var e1, e2: double; begin Label1.Caption := ''; if not...

Как исправить исправить ошибку в коде
Здравствуйте,помогите пожалуйста исправить ошибку в коде.using System; using System.Threading; namespace Gorokhov_2 { class...

Игра змейка: исправить ошибки в коде
Помогите исправить код. #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include &lt;GL/glut.h&gt; int N = 30, M = 20; int Scale = 25; ...

1
0 / 0 / 1
Регистрация: 10.07.2014
Сообщений: 20
24.02.2015, 15:28  [ТС]
Проблему решили,
сервер
C#
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
class Server
{
    TcpListener Listener;
    static void Main()
    {
        new Server(8080); // 8080 - номер порта, можно поменять если этот закрыт
    }
 
    public Server(int Port)
    {
        Listener = new TcpListener(IPAddress.Any, Port);
        Listener.Start();
        Console.WriteLine("Welcome to Serverside");
        while (true)
        {
            Console.WriteLine("Ожидание подключения... ");
            TcpClient client = Listener.AcceptTcpClient();
            Console.WriteLine("Клиент подключен");
            NetworkStream stream = client.GetStream();
            int idata= int.Parse(recv(stream)); //1
            int icolpal = int.Parse(recv(stream)); //2
            switch (idata)
            {
                case 1:
                    Console.WriteLine("Я хочу поиграть с компьютером  с " + icolpal + "палками");
                    games(stream, icolpal);
 
                    break;
                case 2:
                    Console.WriteLine("Я хочу создать сетевую игру");
                    games(stream, icolpal, 2);
                    break;
                case 3:
                    Console.WriteLine("Я хочу присоеденится к игре ");
                    games(stream, icolpal, 3);
                    break;
            }
        }
    }
 
 
    private void games(NetworkStream stream, int colpal,int cpuu = 1)
    {
        Random rnd = new Random();
        int i; int lost; int other; ;
        lost = colpal;
        int hod = rnd.Next(1, 2);// 1 клиент 2 комп
        send(stream, "" + hod);
        do{
            if (hod == 1)
            {
                hod = 2;
                string data = recv(stream); // 
                string[] split = data.Split(';');//
                lost = int.Parse(split[0]);//
                other = int.Parse(split[1]);//
                lost = lost - other; 
            }
            else
            {
                hod = 1;
                if (cpuu == 1) other = this.cpuu(lost);
                else
                {
                    Console.WriteLine("Выберите общее кол-во количество палочек");
                    string scolpal = Console.ReadLine();// в строку кол-во палок
                    other = int.Parse(scolpal);// в инт палки
                    lost = lost - other; 
                }
                send(stream, lost + ";" + other);
            }
            
        }while (lost > 0);
    }
    private int cpuu(int lost)
    {
        if (lost < 5) return lost;
        else return lost % 5;
    }
 
    private void send(NetworkStream streaming, string data)
    {
        byte[] cpuorplayer = System.Text.Encoding.UTF8.GetBytes(data);
        streaming.Write(cpuorplayer, 0, cpuorplayer.Length);
    }
 
    private string recv(NetworkStream streaming)
    {
        Byte[] bytes = new Byte[256];
        int i = streaming.Read(bytes, 0, bytes.Length);
        string data = System.Text.Encoding.UTF8.GetString(bytes, 0, i);
        return data;
    }
}
клиент
C#
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
 
class SClient
{
    //private Byte[] bytes = new Byte[256];
    TcpClient ipClient;
    public SClient(int Port, string Host)
    {
        //создаем клиента и подключаем к серверу
        ipClient = new TcpClient();
        ipClient.Connect(Host, Port);
        string switchplay;
        Console.WriteLine("Welcome to Clientside\n");
        NetworkStream stream = ipClient.GetStream();// создаем поток
        do
        {
            Console.WriteLine("Выберите с кем вы хотите сыграть\n1.)С копьютером\n2.)С другим игроком(создать)\n3.)С другим игроком(соедениться)");
            switchplay = Console.ReadLine(); //
        } while (!switchplay.Equals("1") && !switchplay.Equals("2") && !switchplay.Equals("3"));
        byte[] cpuorplayer = System.Text.Encoding.UTF8.GetBytes(switchplay); //в байты выбор
        stream.Write(cpuorplayer, 0, cpuorplayer.Length);
        switch (switchplay)
        {
            case "1":
                game1(stream);
                break;
            case "2":
                game2(stream);
                break;
            case "3":
                game3(stream);
                break;
        }    
    }
 
    static void Main()
    {
        new SClient(8080, "localhost"); //8080 - порт, "localhost" имя компа в сети на котором запущен сервер.
    }
 
    private void games(NetworkStream streaming, int colpal)
    {
        int i; int lost = colpal; int other;
        Console.WriteLine("Игра началась с компьютером с " + colpal + " палочками\n" );
        string hod = recv(streaming);
        do
        {
            if (hod.Equals("2"))
            {
                hod = "1";
                string data = recv(streaming); // 
                string[] split = data.Split(';');//
                Console.WriteLine(data);
                lost = int.Parse(split[0]);//
                Console.WriteLine(lost);
                other = int.Parse(split[1]);//
                Console.WriteLine("Компьютер убрал " + other + " палочек\n осталось " + (lost-other) + " палочек!\n");//
            }else
            {
                hod = "2";
                string select; int intselect;//
                do
                {
                    Console.WriteLine(showpal(lost)+"Ведите количество палочек которые вы хотите удалить(от 1 до 4)");
                    select = Console.ReadLine(); // в строку выбор
                    intselect = int.Parse(select); // в инт выбор
                } while (intselect <= 0 && intselect >= 5 && lost < intselect); //выполнять если не с 1 по 4 и если хотим убрать палок больше чем можно
                byte[] bselect = System.Text.Encoding.UTF8.GetBytes(lost+";"+select); //в байты выбор
                streaming.Write(bselect, 0, bselect.Length);
                lost = lost - intselect;
            }
            
        } while (lost>0); //палки кончились
        recv(streaming);// выйграл или проиграл
    }
    private void game1(NetworkStream streaming)
    {
        Console.WriteLine("Выберите общее кол-во количество палочек");
        string scolpal = Console.ReadLine();// в строку кол-во палок
        int colpal = int.Parse(scolpal);// в инт палки
        send(streaming, scolpal);//  отправить кол палок
        games(streaming, colpal);// запустить игру 
 
    }
    
    private void game2(NetworkStream streaming)
    {
        Console.WriteLine("Выберите общее кол-во количество палочек");
        string scolpal = Console.ReadLine();// в строку кол-во палок
        int colpal = int.Parse(scolpal);// в инт палки
        send(streaming, scolpal);//  отправить кол палок
        games(streaming, colpal);// запустить игру 
    }
 
    private void game3(NetworkStream streaming)
    {
        string data = Console.ReadLine();
        byte[] cpuorplayer = System.Text.Encoding.UTF8.GetBytes(data);
        streaming.Write(cpuorplayer, 0, cpuorplayer.Length);
        //games(streaming, colpal);
    }
 
    private void send(NetworkStream streaming, string data)
    {
        byte[] cpuorplayer = System.Text.Encoding.UTF8.GetBytes(data);
        streaming.Write(cpuorplayer, 0, cpuorplayer.Length);
    }
    
    private string recv(NetworkStream streaming)
    {
        Byte[] bytes = new Byte[256];
        int i = streaming.Read(bytes, 0, bytes.Length);
        string data = System.Text.Encoding.UTF8.GetString(bytes, 0, i);
        return data;
    }
    private string showpal(int col){
        string show= "";
        for(int i=0 ; i<col;i++){
            show+="| ";
        }
        return "";
    }
}
Вопрос еще один, как реализовать мультиплеер
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.02.2015, 15:28
Помогаю со студенческими работами здесь

Игра спички
Ребят, помогите пожалуйста написать игру! На С++ вроде смогла, а на java замучалась уже, ничего не понимаю :( В общем, есть куча...

Игра спички
Добрый день, нужно написать процедуру одного хода в данной игре: На первом ходу можно взять любое количество спичек, но не брать...

Игра в спички!
Добрый день , ув. пользователи форума. У меня есть задача , которую хочу решить , но не знаю с какой стороны к ней подойти , код у вас...

Игра спички
Возможно кому-то потребуется код или просто поиграть.строго несудите оки если есть ошыбка то сорь , С++ ток 2 месяц изучаю. ...

Игра Марио - найти ошибку в коде
Всем доброго времени суток. Вот взялся сделать платформер с помошью SFML. Написал код, чтобы персонаж двигался и прыгал. Компилятор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru