Jump to content
  • 0

Игровое поле.


Boron
 Share

Question

Задача: создать игровое поле 10x10

На каждую ячейку будет привязана следующая информация:

1. Местность (песок, трава, стена и т.д.)

2. Игрок (1 - человек, 2 - компьютер, 0 - никого)

Как бы вы оформили это поле?

Я сам смог додуматься только до оформления поля в БД:

Поля:

1. "land"

2. "player"

Записи (в зависимости от координаты поля):

11

12

13

14

15

21

22

...

44

45

51

52

53

54

55

P.S. Вообще стало интересно, а как аналогичные поля генерируют в онлайн-играх? Там ведь каждый бой генерируется случайное поле...

В общем кому не лень и не жалко поделиться мыслями, поделитесь пожалуйста... А-то мне кажется, мой способ далеко не самый рациональный...

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Генерация поля, хм...Первое что пришло на ум - занести все поля в массив, а потом оттуда брать случайное поле.

Например генерируйте ассоциативный массив из базы данных, потом функцией rand() генерируете случайное число и выводите это всё. Хотя это далеко не единственный способ. Опять-же - первое, что пришло в голову.

PS. Вообще такие дела лучше делать на Флеше.

Edited by adrkns-projects
Link to comment
Share on other sites

  • 0
Что подразумевается под оформлением? В чём именно проблема?

Вопрос в том, как лучше генерировать игровое поле (в каком виде хранить данные).

adrkns-projects, да я понимаю, что некоторые задачи куда лучше решать в флешом, но пока флеш не будет так сильно валить или подвешивать Opera и FF (чаще Opera, но и с FF бывает), с флешом даже не хочу начинать разбираться. :)

Первое что пришло на ум - занести все поля в массив, а потом оттуда брать случайное поле.

Если я правильно понял идею, то предполагается, что массив будет храниться в памяти (конкретно в Сессии). Но тут проблема, что вдруг упадёт браузер и сессия будет утеряна. Или не так понял?

В любом случае, данные о поле боя нужно хранить либо в файле, либо в БД. Т.к. другие данные игры будут храниться в MySQL, то я склоняюсь к хранению данных об игровом поле в виде таблицы. Поэтому у меня встаёт вопрос - как лучше оформить поля этой таблицы.

P.S. Я не для того, спрашиваю это всё, чтобы применить ваши мозги в своём финансовом онлайн-проекте. Просто решил обучаться PHP и SQL, начав писать игру из своей детской мечты. :) Во что это перерастёт, одному Богу известно, может проект вообще ни во что серьёзное не перерастёт, а уж о зарабатывании денег я сейчас вообще не думаю B) ... Просто учусь веб-программированию в интересном мне проекте.

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

Link to comment
Share on other sites

  • 0

Да никто о Вас так думать не будет, не волнуйтесь.

Рассмотрим мою версию.

Давайте предположим, что у каждая текстура или же само поле имеет идентификатор (id).

Все эти данные хранятся в БД.

Вытаскиваем эти данные из БД в массив (ассоциативный). Теперь мы имеем массив с идентификаторами текстур/полей.

Идем дальше... Предположим у нас таких текстур/полей 10, а всем известно, что массивы начинаются с числа 0, а не 1.

Дальше 2 варианта, либо Вы точно знаете сколько у Вас этих самых полей и устанавливаете значение функции rand (начиная с 0) вручную, либо считаем сколько всё-таки у нас таких полей с помощью SELECT count(*)... и отнимаем от этого значения 1.

Далее заносим число с функции rand в переменную. Первое значение используем 0, второе либо ваше число, либо то, что Вы получите из sql-запроса (-1).

Дальше уже сработает Ваша фантазия, как поступить дальше. ИМХО это самый простой способ.

По-моему я всё нормально расписал.

Edited by adrkns-projects
Link to comment
Share on other sites

  • 0

adrkns-projects, да рассписал ты более чем нормально, за что большое спасибо! :)

Пока как рабочую версию возьму именно эту. Сегодня встречаюсь с другими программистами за настольными играми, в процессе игры поинтересуюсь их идеями в реализации. Если придумают что-то более интересное, отпишусь, если не придумают, начну писать "движок поля боя" по твоей идее. :)

P.S. По поводу объяснения зачем и за как дорого я делаю проект написал для тех, кто любит поорать "а почему вы думаете что мы будем вам что-то писать бесплатно", а по делу ничего не пишут. Просто такие личности тут встречаются и чтобы они зазря не несли информационный шум в теме, написал им что не все делают только для зарабатывания денег. :)

Link to comment
Share on other sites

  • 0

Если всё-же остановитесь на моей идее, то мои контакты написано в профиле. Нужна будет помощь - обращайтесь. Помогу бесплатно. :)

Ведь сам таки-же был, понимаю как Вам не легко сейчас :)

Link to comment
Share on other sites

  • 0

adrkns-projects, спасибо за такое предложение, действительно очень приятно, что попадаются такие дружелюбные и понимающие люди. :D Но предложение вынужден отклонить, т.к. попросту начну дёргать тебя по всяким глупостям. Хе-хе, просто себя самого знаю очень хорошо... :)

Int, спасибо за упоминание функции serialize, я о ней не знал вообще, и даже не подозревал о существовании подобной функции. В будущем буду знать о ней. B)

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

Edited by Boron
Link to comment
Share on other sites

  • 0
adrkns-projects, спасибо за такое предложение, действительно очень приятно, что попадаются такие дружелюбные и понимающие люди. :) Но предложение вынужден отклонить, т.к. попросту начну дёргать тебя по всяким глупостям. Хе-хе, просто себя самого знаю очень хорошо... :)

Я и сейчас бывает дёргаю кого-то по глупостям :D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy