Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/70: Рейтинг темы: голосов - 70, средняя оценка - 4.50
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5

Написать игру: морской бой

27.02.2010, 22:18. Показов 14208. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать игру, вернее подскажите как писать сам буду)) С чего вообще надо начинать писать такие игры?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.02.2010, 22:18
Ответы с готовыми решениями:

Морской бой
Здраствуйте. Простите пожалуйста, немогли бы вы мне помочь в поиске компонента C# для реализации поля в морском бое. Никак не могу найти...

Морской Бой
Вопрос в том как сделать меню какоенибудь чтоб выбор в игре был пример 1-палубные и двух палобные там две три чтоб ставить можно было +...

Морской бой
Ребят, а как написать код, чтоб корабли в притык нельзя было ставить?! Зарание спасибо! вот мой код(недоделаный): using System; using...

43
26 / 25 / 2
Регистрация: 26.02.2010
Сообщений: 96
28.02.2010, 21:08
Студворк — интернет-сервис помощи студентам
вот тут еще почитайте http://www.google.ru/search?hl... =&aq=f&oq=
1
20 / 20 / 2
Регистрация: 26.01.2010
Сообщений: 106
01.03.2010, 08:29
Цитата Сообщение от Frozzeg Посмотреть сообщение
XNA сэкономит время? нуну
там все писать придется самому начиная от контролов (текстбоксы, кнопки... и их события) и заканчивая логикой игры
Логику игры в любом случае прописывать - это раз; контролы прописывать... да их, опять же, в любом случае писать - единственное, что добавится в XNA, так это добавление своего контрола, созданного, например, в фотошопе... и что там прописывать? две-три строчки кода, одна из которых это загрузка изображения, а далее все тоже самое - отрисовка и его обновление при смене состояния игры + запуск анимации (если она предусмотрена). Ну и зачем изобретать велосипед? Другое дело, если игру, тем более такую простую в плане сюжета, контента, да и, чего уж греха таить, логики, интересно написать просто ради тренировки в языке - тогда XNA, конечно ни к чему.
1
 Аватар для patriot2008
73 / 73 / 10
Регистрация: 04.12.2008
Сообщений: 458
01.03.2010, 10:29
Так а кто что может сказать по поводу сетки? с помощью чего ее нарисовать? что это за контрол и как с ним работать?
1
26 / 25 / 2
Регистрация: 26.02.2010
Сообщений: 96
01.03.2010, 16:08
Цитата Сообщение от pir Посмотреть сообщение
контролы прописывать... да их, опять же, в любом случае писать
что-то я вас не совсем понял, вы в винформс контролы тоже сами пишите?
Цитата Сообщение от pir Посмотреть сообщение
и что там прописывать? две-три строчки кода, одна из которых это загрузка изображения, а далее все тоже самое - отрисовка и его обновление при смене состояния игры + запуск анимации (если она предусмотрена).
+ события + свойства = 3 строчки? как-то сомнительно
Цитата Сообщение от pir Посмотреть сообщение
Ну и зачем изобретать велосипед?
вы называете использование готовых решений велосипедом? (тот же винформс)
1
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
01.03.2010, 17:12
Цитата Сообщение от patriot2008 Посмотреть сообщение
Так а кто что может сказать по поводу сетки? с помощью чего ее нарисовать? что это за контрол и как с ним работать?
Я б советовал все таки создать методы прорисовки, прощитать координаты сетки, вбить в массив Point рисовать с помощью GID+ (Graphics.DrawLine(Point, Point) ли DrawLines(Point[]))
2
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
01.03.2010, 18:48  [ТС]
лично я использовал тот клас что описан выше, я в масиве делаю 2 блока по 100 кнапок, завожу для этого два масива из класов производных от кнопок, и сразу ставлю ( цикле) обработчики (всего на 2) в них опредияю что за кнопка сработала и произвожу определенные действия.

меня волнует как AI будет раставлять корабли, и как это будет делать юзер, код покажу немного поже..
0
 Аватар для patriot2008
73 / 73 / 10
Регистрация: 04.12.2008
Сообщений: 458
01.03.2010, 20:53
Цитата Сообщение от Alligieri Посмотреть сообщение
Я б советовал все таки создать методы прорисовки, прощитать координаты сетки, вбить в массив Point рисовать с помощью GID+ (Graphics.DrawLine(Point, Point) ли DrawLines(Point[]))
а потом как работаем? проверяем, находится ли указатель мыши в ячейке при левом клике? так?
получается самому сетку рисовать надо... (( подумаю еще за WPF...
так же возникала идея использовать DataGrid, но считаю, что это как то не совсем целесообразно.

Добавлено через 1 минуту
Цитата Сообщение от outoftime Посмотреть сообщение
лично я использовал тот клас что описан выше, я в масиве делаю 2 блока по 100 кнапок, завожу для этого два масива из класов производных от кнопок, и сразу ставлю ( цикле) обработчики (всего на 2) в них опредияю что за кнопка сработала и произвожу определенные действия.
А не сильно ли "трудоемко"?

Добавлено через 2 минуты
Цитата Сообщение от outoftime Посмотреть сообщение
меня волнует как AI будет раставлять корабли
я бы предложил "умным" рандомом

Ну а пользователь: можно по клику, а можно перетаскивать... Тут надо все как можно лучше обдумать.
1
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
01.03.2010, 21:51
Цитата Сообщение от patriot2008 Посмотреть сообщение
а потом как работаем? проверяем, находится ли указатель мыши в ячейке при левом клике? так?
получается самому сетку рисовать надо... (( подумаю еще за WPF...
так же возникала идея использовать DataGrid, но считаю, что это как то не совсем целесообразно.
Ну не самому - рисовать будет GDI+ А вообще один раз написать алгоритм - и все будет работать. Имхо наследовать и размещать контролы для таких задач это немного извращенно
2
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
01.03.2010, 22:32  [ТС]
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
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 SeaWar
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            InitSquares();
        }
 
        Square[,] myField = new Square[10, 10];
        private void InitSquares()
        { 
            for (int i = 0; i < 10; ++i)
                for (int j = 0; j < 10; ++j)
                { 
                    myField[i, j] = new Square();
                    myField[i, j].Enabled = true;
                    myField[i, j].IsShip = false;
                    myField[i, j].Size = new Size(40, 40);
                    myField[i, j].Location = new Point(i * 40, j * 40);
                    myField[i, j].Text = (i * 10 + j).ToString();
                    myField[i, j].MouseClick += new MouseEventHandler(Square_MouseClick);
                    Controls.Add(myField[i, j]);
                }
        }
 
        void Square_MouseClick(object sender, MouseEventArgs e)
        {
            int i = Convert.ToInt32(sender.ToString().Substring(sender.ToString().Length - 2, 2)) / 10,
                j = Convert.ToInt32(sender.ToString().Substring(sender.ToString().Length - 2, 2)) % 10;
            myField[i, j].Enabled = false;
            Invalidate();
        }
    }
 
    public class Square : Button
    {
        private bool _IsOver = true;
 
        public Square() { }
 
        public bool _IsShip;
        public bool IsShip
        {
            get { return _IsShip; }
            set { _IsShip = value; }
        }
 
        protected override void OnMouseLeave(EventArgs e)
        {
            _IsOver = true;
            Invalidate();
            base.OnLeave(e);
        }
 
        protected override void OnMouseMove(MouseEventArgs mevent)
        {
            base.OnMouseMove(mevent);
            if (ClientRectangle.Contains(mevent.X, mevent.Y))
            {
                if (_IsOver)
                {
                    _IsOver = false;
                    Invalidate();
                }
            }
            else
            {
                if (!_IsOver)
                {
                    _IsOver = true;
                    Invalidate();
                }
            }
        }
 
        protected override void  OnPaint(PaintEventArgs pevent)
        {
            Graphics g = pevent.Graphics;
            Pen p = new Pen(Color.Red, 2);
            Brush b = new SolidBrush(Color.Black);
            if (Enabled)
            {
                if (!_IsOver)
                {
                    g.FillRectangle(b, ClientRectangle);
                    g.DrawRectangle(p, ClientRectangle);
                    g.DrawEllipse(p, ClientRectangle);
                    g.DrawLine(p, Width/2, 0, Width/2, Height);
                    g.DrawLine(p, 0, Height / 2, Width, Height / 2);
                }
                else
                {
                    g.FillRectangle(b, ClientRectangle);
                    g.DrawRectangle(p, ClientRectangle);
                }
            }
            else
            {
                if (IsShip) g.FillRectangle(new SolidBrush(Color.Red), ClientRectangle);
                else
                {
                    g.FillRectangle(b, ClientRectangle);
                    g.DrawRectangle(p, ClientRectangle);
                    g.DrawLine(p, 0, 0, Width, Height);
                    g.DrawLine(p, 0, Height, Width, 0);
                }
            }
        }
    }
}
Играйтесь на зборовье и _Art_ не забудьте сказать спасибо за чудесный клас))

Добавлено через 1 минуту
накатал за 30 мин..

Добавлено через 2 минуты
да, забыл сказать, все что сейчас можно - стралять по пустым клеткам, если вы в цикле установите рандомно корабли, тогда будете еще и по кораблям попадать))
1
 Аватар для patriot2008
73 / 73 / 10
Регистрация: 04.12.2008
Сообщений: 458
02.03.2010, 00:02
Цитата Сообщение от outoftime Посмотреть сообщение
private void InitSquares()
вот тут рисуется сетка?
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
02.03.2010, 00:19  [ТС]
patriot2008, нет, это инициализация поля юзера, должно быть еще поле компа, типа ты стреляешь по полю компа, а камп по твоему))

сетки здесь и вбизи нет, здесь просто куча переопределенных кнопок под эти мои нужды.. public class Square : Button
1
 Аватар для patriot2008
73 / 73 / 10
Регистрация: 04.12.2008
Сообщений: 458
02.03.2010, 00:49
ага, немного понял... это все инициализация и некоторая логика стрельбы.

Добавлено через 33 секунды
будет время, сам засяду, а то идея заинтересовала ))
2
20 / 20 / 2
Регистрация: 26.01.2010
Сообщений: 106
02.03.2010, 06:33
Цитата Сообщение от Frozzeg Посмотреть сообщение
что-то я вас не совсем понял, вы в винформс контролы тоже сами пишите?
+ события + свойства = 3 строчки? как-то сомнительно
и с чего вы вообще взяли, что в xna надо, прописывать контролы? в предыдущих своих постах я уже упоминал, что сами контролы (например кнопки и курсор в главном меню) можно быстро сделать в фотошопе, тем более для 2D игры. Вот пример класса меню с двумя кнопками и курсором - не три строчки, конечно (упоминание которых, кстати, было метафорой), но все же:

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
#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
#endregion
namespace Menu
{
class Menu
{
public Texture2D menuTexture;
public Vector2 menuPosition;
public Texture2D cursorGame;
public Vector2 cursorPositionGame;
public Texture2D cursorExit;
public Vector2 cursorPositionExit;
 
public Menu()
{
menuPosition = new Vector2(0, 0);
cursorPositionGame = new Vector2(650, 400);
cursorPositionExit = new Vector2(700, 550);
}
 
public void Load(ContentManager content)
{
menuTexture = content.Load<Texture2D>(“Content\\Textures\\menu”);
cursorGame = content.Load<Texture2D>(“Content\\Textures\\cursorGame”);
cursorExit = content.Load<Texture2D>(“Content\\Textures\\cursorExit”);
}
 
public void DrawMenu(SpriteBatch spriteBatch, int state)
{
spriteBatch.Draw(menuTexture, menuPosition, Color.White);
switch(state)
{
case 1:
spriteBatch.Draw(cursorGame, cursorPositionGame, Color.White);
spriteBatch.Draw(cursorExit, cursorPositionExit, Color.Yellow);
break;
case 2:
spriteBatch.Draw(cursorGame, cursorPositionGame, Color.Yellow);
spriteBatch.Draw(cursorExit, cursorPositionExit, Color.White);
break;
}
}
}
}
и что тут сложного и громоздкого? а дальше все прямо как в винформс - обработчик событий для каждого элемента меню. в винформс, кстати, добавление всех элементов можно и вручную прописывать - если не в курсе. Лично для себя ничего сложного не вижу.

Цитата Сообщение от Frozzeg Посмотреть сообщение
вы называете использование готовых решений велосипедом? (тот же винформс)
я не винформс назвал велосипедом - читайте внимательней. Велосипедом я назвал написание игры на языке как таковом. Если бы автор темы хотел написать игру, со всеми вытекающими, то писать ее просто на C#, было бы как минимум глупо, когда есть уже готовое решение, а именно - xna (сейчас речь конкретно о C# - остальные языки не трогаю). В нашем же случае, автор просто хотел потренироваться в языке - и тогда, конечно, лучше всего написать просто на С#.

P.S. Если вы никогда не пользовались xna, не писали под нее, то прежде, чем дисскутировать - читайте литературу. Если же у вас личная неприязнь к этой технологии - не стоит всем и вся пытаться вдолбить, что она громоздкая и неудобная, ибо кесарю кесарево - каждый найдет для себя и будет использовать то, что удобно конкретно ему.
1
118 / 119 / 20
Регистрация: 21.01.2010
Сообщений: 252
02.03.2010, 10:32
Думал как все вместе слепить, или сделать класс корабль состоящий из клеток или масив юзать. Попробовал массив, получилось так:
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
//решил выделить логику в отдельный класс, а не в форме писать
public class Pole : Control
    {
        //карта кораблей
        public bool[,] shipsMap;
        
        //клетки для клика
        Square[,] squares;
 
        //палуб всех кораблей
        byte NumOfSquares = 20;
 
        public Pole(Control initParent)
        {
            this.Parent = initParent;
            Size = new Size(400, 400);
            squares = new Square[10, 10];
        }
 
        public void Draw()
        {
            for (int y = 0; y < 10; y++)
                for (int x = 0; x < 10; x++)
                {
                    Square s = new Square(); s.Parent = this;
                    s.Location = new Point(x * 40, y * 40);
                    s.Size = new Size(40, 40);
                    s.BackColor = Color.Aqua;
                    s.Click += new EventHandler(s_Click);
                    if (shipsMap[(s.Location.X / 40), (s.Location.Y / 40)])
                    {
                        s.IsShip = true;
                    }
                    squares[x, y] = s;
                }
        }
//обработка клика на клетку
        void s_Click(object sender, EventArgs e)
        {
            Square tempS = sender as Square;
            if (tempS.IsShip)
            {
//нажимаем диагональные клетки
//приходится юзать такую кривую конструкцию т.к. на боковых естественно ексепшн вылетает
//можно было какой-нибудь бордюрчик создать
                try {squares[(tempS.Location.X / 40 + 1), (tempS.Location.Y / 40 + 1)].PerformClick();}
                catch (IndexOutOfRangeException) { };
 
                try{squares[(tempS.Location.X / 40 + 1), (tempS.Location.Y / 40 - 1)].PerformClick();}
                catch (IndexOutOfRangeException) { };
 
                try{squares[(tempS.Location.X / 40 - 1), (tempS.Location.Y / 40 + 1)].PerformClick();}
                catch (IndexOutOfRangeException) { };
 
                try{squares[(tempS.Location.X / 40 - 1), (tempS.Location.Y / 40 - 1)].PerformClick();}
                catch (IndexOutOfRangeException) { };
 
                NumOfSquares--;                      //минусуем от общего кол-ва палуб
                if (NumOfSquares == 0) OnWin(); // генерим событие Победа
                }
            tempS.Enabled = false;
            }
//делегат и событие для победы
        public delegate void WinDelegate();
        /// <summary>
        /// Происходит когда все корабли на поле подбиты
        /// </summary>
        public event WinDelegate OnWin;
}
 
// уже в форме
//----------------
//карта кораблей
        bool[,] shipsEx;
        public Form1()
        {
            shipsEx = new bool[10,10];
// так заполняем массив
//3 палубник
            shipsEx[1, 1] = true;
            shipsEx[2, 1] = true;
            shipsEx[3, 1] = true;
 
            Pole p = new Pole(this);
            p.shipsMap = shipsEx;
            p.Draw();
 
            p.OnWin += new Pole.WinDelegate(OnWin); // обработчик для события реггим
           }
Это все так черновой вариант. Юзеру можно предложить расставлять корабли в отдельной форме, а компу либо случайно(соблюдая правила игры конешно), либо загружая из "карты уровня", т.е. текстового файла.
1
26 / 25 / 2
Регистрация: 26.02.2010
Сообщений: 96
02.03.2010, 16:16
Цитата Сообщение от pir Посмотреть сообщение
и с чего вы вообще взяли, что в xna надо, прописывать контролы?
может потому, что их там попросту нет?

Цитата Сообщение от pir Посмотреть сообщение
что сами контролы (например кнопки и курсор в главном меню) можно быстро сделать в фотошопе, тем более для 2D игры.
это не "сам контрол", а оформление, бекграунд, скин (называйте как хотите), а контрол - это элемент управления
Цитата Сообщение от pir Посмотреть сообщение
Вот пример класса меню с двумя кнопками и курсором
где тут кнопки? вижу только картинки

Цитата Сообщение от pir Посмотреть сообщение
не три строчки, конечно (упоминание которых, кстати, было метафорой)
глядя на вашу "кнопку", становится понятно

Цитата Сообщение от pir Посмотреть сообщение
Если бы автор темы хотел написать игру, со всеми вытекающими, то писать ее просто на C#, было бы как минимум глупо
Во-первых, что значит "просто C#", и соответственно "не просто C#"?

Цитата Сообщение от pir Посмотреть сообщение
когда есть уже готовое решение, а именно - xna
я вас совсем не понимаю, мы только что говорили о том, что в XNA даже контролов нет, а вы говорите "готовое решение?" (мы сейчас рассматриваем конкретный пример с морским боем)
что же там готового? может я что-то пропустил и там есть класс для создания морского боя?

я бы понял ваши высказывания, если бы автор хотел написать 3д игру в том же винформс, там в отличае от XNA нет таких инструментов для работы с 3д

а вот любую мелкую 2д игру, которую можно сделать за 15 минут в винформс, накидав на форму готовых контролов и обрабатывая их события, делать на XNA - этого я не понимаю, какие в XNA преимущества на примере создания морского боя? тем более что разница в производительности будет нулевая, опять же, если там есть готовое решение в виде класса "Морской бой" - тогда да..)

Цитата Сообщение от pir Посмотреть сообщение
P.S. Если вы никогда не пользовались xna, не писали под нее, то прежде, чем дисскутировать - читайте литературу. Если же у вас личная неприязнь к этой технологии - не стоит всем и вся пытаться вдолбить, что она громоздкая и неудобная, ибо кесарю кесарево - каждый найдет для себя и будет использовать то, что удобно конкретно ему.
Я пользовался XNA и ничего не имею против этой технологии, однако для реализации задачи автора - есть более легкий путь
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
26.02.2011, 17:53  [ТС]
Можете помочь написать "Морской бой" с использование Mannaged DirectX ?
0
22 / 22 / 1
Регистрация: 29.01.2011
Сообщений: 84
26.02.2011, 18:04
А я думаю что можно в студии банально кинуть грид и уже с ним работать а корабли рисовать кликом мыши просто менять цвет ячейки и менять значения в матрице на 1 а пустые будут 0. А в другой отмечать попадания и промахи вот и все и нечего ворочить там. А на шарпе все прописать.
0
 Аватар для -=G-L-A-V-A-K=-
18 / 18 / 3
Регистрация: 16.02.2010
Сообщений: 243
26.02.2011, 18:50
Ну я бы сделал так: создал бы матрицу bool для игрока и для ии. И два квадрата кнопок (или не кнопок), и помечал бы уже на них, а в переменной это бы не сохранял. И кстати свой класс для клетки писать... и его отрисовывать... пикбоксы на что?
0
22 / 22 / 1
Регистрация: 29.01.2011
Сообщений: 84
26.02.2011, 19:12
Цитата Сообщение от -=G-L-A-V-A-K=- Посмотреть сообщение
Ну я бы сделал так: создал бы матрицу bool для игрока и для ии. И два квадрата кнопок (или не кнопок), и помечал бы уже на них, а в переменной это бы не сохранял. И кстати свой класс для клетки писать... и его отрисовывать... пикбоксы на что?
ну вот и я про то только вместо кнопок грид и все
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
26.02.2011, 20:01  [ТС]
Народ, я хочу двиг написать и не юзать ничего производного от контролов или чего в этом духе. Все руками, создать несколько сцен: меню, игра, настройки и т.д. Словом написать нормальную игру.

Добавлено через 1 минуту
Графа 2Д, т.к. 3Д я вроде понял, но трогать боюсь, сначала с 2Д нормально разберусь.

Добавлено через 12 минут
На даный момент интересует как узнать на какой обьект наведена мышь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.02.2011, 20:01

Морской бой
Вот решил написать морской бой. Как всё это сделать примерно понимаю, но вот хочу посоветоваться с вами по некоторым вопросам. 1) Как...

Морской бой
хочу написать игру... но если честно, то даже не знаю с какой стороны подойти и как должно это выглядеть... подскажите пожалуйста... с чего...

Морской бой в консоли
Создать игру «Морской бой» (для одного игрока). Игровое поле — квадрат 10х10. Клетки поля нумеруются от верхнего левого угла цифрами. На...

Морской бой: Не могу реализовать класс кораблей
Не могу придумать класс для кораблей. Выручайте)

Игра морской бой: никак не придумаю как лучше реализовать корабли в игре
Пишу игру &quot;Морской бой&quot; на c# и никак не решу как лучше реализовать в программе корабли.


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Салют, шампанское, овации! :drink:
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru