purebasic.info

PureBasic forum
Текущее время: Пт июл 20, 2018 2:03 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 84 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Крестики нолики
СообщениеДобавлено: Ср янв 30, 2013 9:39 pm 
Не в сети
доцент

Зарегистрирован: Вт янв 22, 2013 12:31 am
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
С 2D пока все тяжко идет. Поэтому сделал крестики нолики. Они пока только на двух игроков, но думаю на днях прикреплю ИИ.

Кстати лучше всего смотрится если стили XP выключить

Код:
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
Enumeration
  #Window_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Button_6
  #Button_7
  #Button_8
  #Button_9
  #Button_Reset
EndEnumeration
Global Dim Table.l(9)
 
Procedure Win2(Player,a,b,c)
    If Table(a) = Player And Table(b) = Player And Table(c) = Player
      Debug "Player "+Str(Player)+" Win"
     
      For i = 1 To 9
        DisableGadget(i,1)
      Next
    EndIf
EndProcedure
 
Procedure Check(Player)
  ;Debug Player
  Win2(1,1,2,3)
  Win2(1,4,5,6)
  Win2(1,7,8,9)
  Win2(1,1,4,7)
  Win2(1,2,5,8)
  Win2(1,3,6,9)
  Win2(1,1,5,9)
  Win2(1,3,5,7)
 
  Win2(2,1,2,3)
  Win2(2,4,5,6)
  Win2(2,7,8,9)
  Win2(2,1,4,7)
  Win2(2,2,5,8)
  Win2(2,3,6,9)
  Win2(2,1,5,7)
  Win2(2,3,5,7)
EndProcedure
 
LoadFont(0, "Arial", 52):SetGadgetFont(#PB_Default, FontID(0))
LoadFont(1, "Arial", 20)
 
OpenWindow(#Window_0, 551, 334, 400, 281, "Tic Tac Toe",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ButtonGadget(#Button_1, 10, 10,   80, 80, "")
ButtonGadget(#Button_2, 100, 10,  80, 80, "")
ButtonGadget(#Button_3, 190, 10,  80, 80, "")
ButtonGadget(#Button_4, 10,  100, 80, 80, "")
ButtonGadget(#Button_5, 100, 100, 80, 80, "")
ButtonGadget(#Button_6, 190, 100, 80, 80, "")
ButtonGadget(#Button_7, 10,  190, 80, 80, "")
ButtonGadget(#Button_8, 100, 190, 80, 80, "")
ButtonGadget(#Button_9, 190, 190, 80, 80, "")
ButtonGadget(#Button_Reset, 340, 10, 40, 260, "RESET",#PB_Button_MultiLine):SetGadgetFont(#Button_Reset, FontID(1))
 
Player = 1      
 
Repeat
  Event = WindowEvent()
  If Event = #PB_Event_Gadget
    If Player = 1 And EventGadget() <> #Button_Reset
      ;Debug EventGadget()
      Player+1
      SetGadgetText(EventGadget(),"X"):DisableGadget(EventGadget(),1)
      Table(EventGadget()) = 1
      Check(Player)
    ElseIf Player = 2 And EventGadget() <> #Button_Reset
      ;Debug EventGadget()
      Player-1
      SetGadgetText(EventGadget(),"O"):DisableGadget(EventGadget(),1)
      Table(EventGadget()) = 2
      Check(Player)
    EndIf
   
   
   
    If EventGadget() = #Button_Reset
      For i = 1 To 9
        SetGadgetText(i,"")
        DisableGadget(i,0)
        Table(i)=0
      Next
      Player=1
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow



Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср янв 30, 2013 10:19 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6324
Благодарил (а): 19 раз.
Поблагодарили: 189 раз.
Пункты репутации: 48
Пойдет для начала.
ИИ это и есть самое интересное.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср янв 30, 2013 10:28 pm 
Не в сети
доцент

Зарегистрирован: Вт янв 22, 2013 12:31 am
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
По моему в крестиках- ноликах ИИ не проблемма.
Я решил сделать 3 уровня сложности:

Новичек- компьютер рандомно ставит в пустые клетки
Бывалыйй- перекрывает дорогу если у соперника уже есть 2 в ряд
И Профессионал- которого почти невозможно выиграть :P


P.S Может быть прикрутить Сервер- Клиент, что бы мы против друг друга играть могли. Хотя аудитория слишком маленькая.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср янв 30, 2013 11:12 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Вот советы для программы в режиме "профи":
http://f13.ifotki.info/org/108faadf57215d5dd8f7ff8ff9351f53d58a51142235953.jpg

http://f13.ifotki.info/org/58413e7c6fe9ee91186f92872ee59d6ad58a51142236768.jpg
:D :D

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср янв 30, 2013 11:19 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
А по поводу сервера - у вас разве не серый айпи? Как правило, нужно платить провайдеру за постоянный белый айпи, чтобы на на компе можно было создать сервер.

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср янв 30, 2013 11:53 pm 
Не в сети
доцент

Зарегистрирован: Вт янв 22, 2013 12:31 am
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Да эти трюки уже наверное всем известны.

А насчет сервера. Эта идея мне стукнула во время написания поста и я решил просто добать и ее. Сейчас немного подумав над ней вот к чему пришел. Может быть можно как-то сделать серве на Web ЯП. Тот же PHP например.

А вот еще одна идея. Создадим еще несколько пррстеньких игр. Объеденим их в одну программу, которая висит в трее. А по нажатию кнопки "Поиск апонентов" будет выдаваться список игроков онлайн (как на главной форума внизу) которых можно вызвать на поединок :twisted:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 31, 2013 12:01 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11206
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Никита Однороб писал(а):
Как правило, нужно платить провайдеру за постоянный белый айпи
Достаточно динамического белого IP.
Его как правило дают бесплатно, обычно на проводном инете, а на беспроводном почти всегда серый IP.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 31, 2013 12:04 am 
Не в сети
доцент

Зарегистрирован: Вт янв 22, 2013 12:31 am
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Беспроводной тоже разный бывает. Wi-Fi например :P


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 31, 2013 12:12 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11206
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Вы получаете инет по Wi-Fi от провайдера? И у вас при этом белый IP?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 31, 2013 12:18 am 
Не в сети
доцент

Зарегистрирован: Вт янв 22, 2013 12:31 am
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
Вы получаете инет по Wi-Fi от провайдера?


Нет конечно. Просто Wifi тоже называется беспроводным интернетом. Вот и все.

Насчет кода. Есть ли более лучший, легкочитаемый, способ проверки на выигрышь?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 31, 2013 12:19 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Onny, на PHP писать сервер для игры - это кощунство. Допустим, те же крестики-нолики. На сервере нужно хранить инфу о комнатах. Плюс инфу о каждой комнате (кто чем играет, чей сейчас ход, как расставлены крестики и нолики и т.д.). Есть два способа: БД и файлы. Второй откидываем сразу без комментариев. А первый будет действовать как Ddos атака (если играют 6 пар игроков, то в секунду на сервер будет приходить 12 запросов. А поскольку подключение к БД занимает гдето полсекунды, то можете подсчитать, какие будут тормоза. А таким образом можно вообще сервер в аут отправить :D
Пётр, а у меня он серый :( . Протянут кабель, который воткнут в роутер. Может, у меня изза роутера айпи серый?

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 31, 2013 12:27 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Onny писал(а):
Есть ли более лучший, легкочитаемый, способ проверки на выигрышь?
http://purebasic.info/phpBB2/viewtopic.php?t=2092&highlight=Код нерабочий, но может чтонибудь возьмешь :D

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 31, 2013 12:30 am 
Не в сети
доцент

Зарегистрирован: Вт янв 22, 2013 12:31 am
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Да, я читал твою тему перед созданием новой. Кстати у самого была проблемма из 5 поста :)

Бесило жто обилие IF EndIf. А с добавкой ИИ оно только увеличтся :(


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 31, 2013 12:46 am 
Не в сети
профессор

Зарегистрирован: Чт авг 05, 2010 2:36 pm
Сообщений: 466
Откуда: Донецк
Благодарил (а): 45 раз.
Поблагодарили: 11 раз.
С http://ontoys.net
можно содрать принцип ИИ и сам клиент-серверный код, там файлы с расширением .gam простые зиповские архивы а внутри исходники игрушек на pascalscript.

_________________
PureBasic 5.60 X86, RfoBasic 90, Tinycc 0.97, Asus K54C Intel i7 2.7 ghz, 8 gb ddr3, Intel HD 3000, Windows XP SP3, Windows 10 x64, Nexus 4 and v5.1.1.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 31, 2013 2:38 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
Onny писал(а):
...Может быть прикрутить Сервер- Клиент...


Никита Однороб писал(а):
...Как правило, нужно платить провайдеру за постоянный белый айпи...


Пётр писал(а):
Достаточно динамического белого IP.
Его как правило дают бесплатно, обычно на проводном инете, а на беспроводном почти всегда серый IP.

В 99% случаев, спасёт DynDNS.com, единственное нужно порты на роутере прокинуть(если стоит роутер). Клиенты DynDNS есть даже на андроид, так что можешь даже на телефоне сервер поднять :D

_________________
.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 84 ]  На страницу 1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB