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

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

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

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

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

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

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

43
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
27.02.2010, 22:27
с постановки задачи:
игра будет с ботом? какая тактика? будет ли бот "подсматривать"?
с другим игроком? как будет осуществляться всязь между игроками?
1
3 / 3 / 2
Регистрация: 20.11.2009
Сообщений: 47
27.02.2010, 22:29
Аха, 2D 3D?)
1
124 / 106 / 7
Регистрация: 14.02.2010
Сообщений: 263
27.02.2010, 22:30
Я бы начал с рисования. Логику не сложно прописать.
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
27.02.2010, 22:55  [ТС]
2Д, АИ - функция рандом + условие если мы ранили, значит бьем рандомом в 4 стороны при условии что очки по которым бьет рандом не заныты, точки считаются занятыми, еси мы туду били, или точка соприкасается с уже убитым, короче все ок.

Короче: 2Д, против компа (изучать как устроена сеть нет времени).

Уменя вопрос: как выставлять корабли, и как прорисовать сетку, какие есть для этого функции?

Добавлено через 9 минут
касательно расстановки кораблей: можно ли реагировать на нажатие левой кнопки, и пока пользователь тянет ее по другим клеткам постепенно вырисовывается корабль, если он пускает кнопку мыши, сверяем может ли такой корабль существовать, если может - устанавливаем.
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
27.02.2010, 23:17
Цитата Сообщение от outoftime Посмотреть сообщение
Уменя вопрос: как выставлять корабли, и как прорисовать сетку, какие есть для этого функции?
Добавлено через 9 минут
касательно расстановки кораблей: можно ли реагировать на нажатие левой кнопки, и пока пользователь тянет ее по другим клеткам постепенно вырисовывается корабль, если он пускает кнопку мыши, сверяем может ли такой корабль существовать, если может - устанавливаем.
Думаю можно так: берем форму, лутче стационарного размера (без кнопок Maximize i Minimize, безвозможности увеличения границ), рисуем сетку квадратов 10х10(а даже две - чтоб расставлять и стрелять), запоминаем узлы сеток в массив Point, пишем перехват мыши и расстановку кораблей так как вы описали используя массивы поинтов, начинаем стрелять пр истрельбе - перехватываем нажатие ЛКМ, там можно получить координаты, сравниваем с массивом узлов и знаем где клетка. Читайте GDI+.
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
27.02.2010, 23:37  [ТС]
Цитата Сообщение от Alligieri Посмотреть сообщение
Читайте GDI+.
читаю, читаю уже 2-ой час читаю..
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
28.02.2010, 03:49
можно и без GDI+ для начала написать
1
20 / 20 / 2
Регистрация: 26.01.2010
Сообщений: 106
28.02.2010, 09:51
можно написать с использованием XNA Game Studio - быстро и удобно, а сетку, корабли и прочие графические элементы можно в фотошопе быренько наваять
1
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
28.02.2010, 09:54
но все же автор скорее всего хочет написать на C#
1
20 / 20 / 2
Регистрация: 26.01.2010
Сообщений: 106
28.02.2010, 09:58
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
но все же автор скорее всего хочет написать на C#
XNA Game Studio изначально была создана для написания 2D и 3D игр на C#. В конце концов написать можно и просто на языке - согласен, но XNA - сэкономит время написания игры, ибо заточена конкретно под создание игр.
1
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
28.02.2010, 10:01
а можно ссылочку?
1
20 / 20 / 2
Регистрация: 26.01.2010
Сообщений: 106
28.02.2010, 10:09
http://creators.xna.com/en-US/
http://www.xnadev.ru/news.php
http://www.intuit.ru/department/se/xnagamestudio/
http://msdn.microsoft.com/ru-r... 63420.aspx
+
поищи сам - в сети полно инфы
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
28.02.2010, 13:38  [ТС]
Как заставить этот клас нарисовать себя в форме??
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
        class Field : Control
        {
            private int x, y, dx, dy, width, height;
            public Field(int x, int y, int dx, int dy, int width, int height)
            {
                this.x = x;
                this.y = y;
                this.dx = dx;
                this.dy = dy;
            }
            public int X  { get { return x;  } }
            public int Y  { get { return y;  } }
            public int Dx { get { return dx; } }
            public int Dy { get { return dy; } }
            public int Width  { get { return width;  } }
            public int Height { get { return height; } }
            public void Draw()
            {
                Graphics g = Graphics.FromHwnd(base.Handle);
                Pen pen = new Pen(Brushes.Black, 1);
                for (int i = x; i <= x + width; i += dx)
                    g.DrawLine(pen, i, y, i, y + height);
                for (int i = y; i <= y + height; i += dy)
                    g.DrawLine(pen, x, i, x + width, i);
            }
        }
Добавлено через 8 минут
нашел, забыл ширину и высоту установить))

Добавлено через 23 секунды
в конструкторе
0
26 / 25 / 2
Регистрация: 26.02.2010
Сообщений: 96
28.02.2010, 15:12
Цитата Сообщение от pir Посмотреть сообщение
XNA Game Studio изначально была создана для написания 2D и 3D игр на C#. В конце концов написать можно и просто на языке - согласен, но XNA - сэкономит время написания игры, ибо заточена конкретно под создание игр.
XNA сэкономит время? нуну
там все писать придется самому начиная от контролов (текстбоксы, кнопки... и их события) и заканчивая логикой игры

Цитата Сообщение от outoftime Посмотреть сообщение
Как заставить этот клас нарисовать себя в форме??
как вы собрались писать морской бой, если языка не знаете?
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
28.02.2010, 15:57  [ТС]
Цитата Сообщение от Frozzeg Посмотреть сообщение
как вы собрались писать морской бой, если языка не знаете?
можете что-то посоветовать, что-бы подучить?
0
3 / 3 / 2
Регистрация: 20.11.2009
Сообщений: 47
28.02.2010, 16:03
Цитата Сообщение от outoftime Посмотреть сообщение
Как заставить этот клас нарисовать себя в форме??
В обработчике формы есть событие Paint которое вызывается каждый раз когда необходимо перерисовать окно (свернул, развернул, перетащил).
Вот суй туда свое художество.
Можешь с помощью WPF интерфейс делать чтоб красявый был)

Добавлено через 1 минуту
Цитата Сообщение от outoftime Посмотреть сообщение
можете что-то посоветовать, что-бы подучить?
Это наверно нужно знать основы win приложений. Можно с WINAPI начать.
1
118 / 119 / 20
Регистрация: 21.01.2010
Сообщений: 252
28.02.2010, 16:27
Зачем наследовать от Control и писать свойства которые в нем уже есть?
Вот один из вариантов:
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
    public class Square : Button
    {
        private bool _isOver;
 
        public Square() { }
 
        private bool _isShip;
        public bool IsShip
        {
            get { return _isShip; }
            set { _isShip = value; }
        }
    
        protected override void OnMouseLeave(EventArgs e)
        {
            _isOver = false;
            Invalidate();
            base.OnLeave(e);
        }
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);
            if (!ClientRectangle.Contains(e.X, e.Y))
            {
                if (_isOver)
                {
                    _isOver = false;
                    Invalidate();
                }
            }
            else if (!_isOver)
            {
                _isOver = true;
                Invalidate();
            }
        }
 
        protected override void OnPaint(PaintEventArgs pevent)
        {
            Graphics e = pevent.Graphics;
            Pen p = new Pen(ForeColor, 2);
            Brush b = new SolidBrush(BackColor);
            if (Enabled)
            {
                if (_isOver)
                {
                    e.FillRectangle(b, ClientRectangle);
                    e.DrawRectangle(p, ClientRectangle);
                    e.DrawEllipse(p, 2, 2, Width - 5, Height - 5);
                    e.DrawLine(p, Width / 2, 0, Width / 2, Height);
                    e.DrawLine(p, 0, Height / 2, Width, Height / 2);
                }
                else
                {
                    e.FillRectangle(b, ClientRectangle);
                    e.DrawRectangle(p, ClientRectangle);
                }
            }
            else 
            {
                if (IsShip)
                {e.FillRectangle(new SolidBrush(ForeColor), ClientRectangle);}
                else
                {
                    e.FillRectangle(b, ClientRectangle);
                    e.DrawLine(p, 0, 0, Width, Height);
                    e.DrawLine(p, 0, Height, Width, 0);
                }
            }
        }
    }
1
26 / 25 / 2
Регистрация: 26.02.2010
Сообщений: 96
28.02.2010, 16:28
Цитата Сообщение от outoftime Посмотреть сообщение
можете что-то посоветовать, что-бы подучить?
http://msdn.microsoft.com/en-u... awing.aspx
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
28.02.2010, 20:06  [ТС]
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
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            InitB();
        }
 
        private Square[,] S = new Square[10,10];
        public void InitB()
        {            
            for (int i = 0; i < 10; ++i)
                for (int j = 0; j < 10; ++j)
                {
                    S[i,j] = new Square();
                    S[i,j].IsShip = false;
                    S[i,j].Location = new Point(i*40, j*40);
                    S[i,j].Size = new Size(40, 40);
                    S[i, j].Text = (i * 10 + j).ToString();
                    S[i,j].MouseClick += new MouseEventHandler(S_MouseClick);
                    this.Controls.Add(S[i,j]);
                }
        }
 
        void S_MouseClick(object sender, MouseEventArgs e)
        {
            int j = Convert.ToInt32(sender.ToString().Substring(sender.ToString().Length-2,2)) % 10;
            int i = Convert.ToInt32(sender.ToString().Substring(sender.ToString().Length - 2, 2)) / 10;
            S[i,j].Enabled = false;
        }
    }
Добавлено через 20 минут
Как сгенерировать случайные числа?

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru