КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Select_move(player)
Change_strategy_for_game(player) Select_strategy_for_game(player) Last_move_get_small(player) Last_move_get_all(player) Intermediate_move_get_small(player) First_move_get_small(player) Drop_this_card(player,struct_card,count, count) Define_count_get_small(player,suit,count,count,card_player_list) Drop_get_small(player,suit,count,card_player_list) Set_card_get_small(suit_list,count,card_player_list,player,count) Drop_card_get_small(player,count) % определить карты для сброса для стратегии "взять меньше" %suit_list - список мастей, чье кол-во карт <= 3 %count - кол-во мастей, чье кол-во карт <= 3 %card_player_list - список карт игроков %player - игрок %count - кол-во карт для сброса %сбросить переданную карту длястратегии "взять меньше" %player - игрок %suit - масть карты %count - кол-во карт для сброса %card_player_list - список карт игороков
%определяет число карт для сброса и вызывает сброс %player - игрок %suit - масть, которую сбросить %count - кол-во карт этой масти %count - кол-во карт для сброса %card_player_list - список карт игороков
%сбрасывает конкретную карту, если онаесть у игрока. %И возвращает новое кол-во карт для сброса (уменьшает на 1, если сбросил) %player - игрок %struct_card - карта %count - кол-во карт для сброса %count - новое кол-во карт для сброса % первый ход для стратегии "взять все" %player - игрок first_move_get_all(player) % первый ход для стратегии "взять меньше" %player - игрок
% промежуточный ход для стратегии "взять все" %player - игрок intermediate_move_get_all(player)
% промежуточный ход для стратегии "взять меньше" %player - игрок
% последний ход для стратегии "взять все" %player - игрок
% последний ход для стратегии "взять меньше" %player - игрок
%выбирает стратегию для игры %player - игрок
%изменяет стратегию для игры %player - игрок
%выбор хода дляикомпьютерного игрока %player - игрок Листинг программы
/*****************************************************************************
Copyright (c) My Company
Project: HEARTS FileName: HEARTS.PRO Purpose: No description Written by: Visual Prolog Comments: ******************************************************************************/
include "hearts.inc" include "hearts.con" include "hlptopic.con"
%BEGIN_WIN Task Window /*************************************************************************** Event handling for Task Window ***************************************************************************/
domains rank, suit = string player, index, count, flag = integer
struct_card = card(rank, suit) cards_list = struct_card*
cardplayer = card_player(player, struct_card) card_player_list = cardplayer*
struct_count_card = count_card(suit, count) count_card_list = struct_count_card*
suit_list = suit*
int_list = integer*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% filename = string struct_card_with_file_name = card_file(struct_card,filename) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
database - maindb
%бд карт (карта) dbcards(struct_card) %бд карт у игроков (карта игрока) dbcard_of_player(cardplayer) %бд стека, куда помещаются карты при сбросе (карта игрока) dbstack(cardplayer) %бд длинной масти (игрок, масть) dblong_suit(player,suit) %игрок запомнил кому скинул даму пик (кто скинул, ому скинул) db_who_have_queen(player,player) ……………………………………………………………………………………..
predicates
task_win_eh: EHANDLER
%связывает карту с именем файла %struct_card_with_file_name - карта и имя файла cards_file(struct_card_with_file_name)
%связывае игрока и имя файла изображения стрелки %player - номер игрока %filename - имя файла pict_of_pointer(player,filename).
%содержит все карты cards(struct_card) %раздаёт карты игрокам %player - игрок, с которогоначинать раздачу %cards_list - список карт %count - число карт play_out(player, cards_list, count)
……………………………………………………………………………………..
constants
%BEGIN Task Window, CreateParms, 01:58:37-29.12.2008, Code automatically updated! task_win_Flags = [wsf_SizeBorder,wsf_TitleBar,wsf_Close,wsf_Maximize,wsf_Minimize,wsf_ClipSiblings] task_win_Menu = no_menu task_win_Title = "hearts" task_win_Help = idh_contents %END Task Window, CreateParms
clauses
% факты, содержащие карты cards(card("2","крести")). cards(card("3","крести")). cards(card("4","крести")). cards(card("5","крести")). cards(card("6","крести")). cards(card("7","крести")). cards(card("8","крести")). cards(card("9","крести")). cards(card("10","крести")). cards(card("В","крести")). cards(card("Д","крести")). cards(card("К","крести")). cards(card("Т","крести")). ……………………………………………………………………………………..
……………………………………………………………………………………..
% раздача карт play_out(_,_,0):-!. % кончались карты для раздачи play_out(Player, Cards_list, CountCards):- % выбераем случайным образом номер карты random(CountCards,Index), IndexCard = Index + 1, % получаем из списка карт карту по номеру get_card(1, IndexCard, Cards_list, Card), % удаляем эту карту из списка del_card(1,IndexCard, Cards_list, New_Cards_list), % вставляем карту в ДБ карт играков assertz(dbcard_of_player(card_player(Player, Card))), New_CountCards = CountCards - 1, % переходим к следующему игроку next_player(Player, NewPlayer), play_out(NewPlayer, New_Cards_List, New_CountCards).
……………………………………………………………………………………..
%============================================================================= %========================== ВЗЯТЬ МЕНЬШЕ ===================================== drop_card_get_small(_,CountCardForDrop):-CountCardForDrop <=0,!. drop_card_get_small(Player,CountCardForDrop):- CountCardForDrop > 0, % если есть, то сбрасываем Д, К, Т пик. Каждый предикат возвращает новое кол-во карт для сброса drop_this_card(Player,card("Д","пики"),CountCardForDrop, New_Count1), drop_this_card(Player,card("К","пики"),New_Count1, New_Count2), drop_this_card(Player,card("Т","пики"),New_Count2, New_Count),
findall(CardOfPlayer,dbcard_of_player(CardOfPlayer),CardOfPlayer_list), % получить число карт для каждой масти get_count_card(Player,CardOfPlayer_list, ["крести","бубны","червы","пики"], Count_card_list), %получить масти, число карт которых <=3 и > 0 get_suit_whose_cards_small_4(Count_card_list,Suit_list), % получить кол-во таких мастей count_element(Suit_list, CountSuit), % выбрать и сбросить карты set_card_get_small(Suit_List,CountSuit,CardOfPlayer_list,Player,New_Count).
……………………………………………………………………………………..
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% !. %END Task Window, idc_push_button _CtlInfo
%BEGIN Task Window, id_help_contents task_win_eh(_Win,e_Menu(id_help_contents,_ShiftCtlAlt),0):-!, vpi_ShowHelp("hearts.hlp"), !. %END Task Window, id_help_contents
%BEGIN Task Window, id_help_about task_win_eh(Win,e_Menu(id_help_about,_ShiftCtlAlt),0):-!, dlg_about_dialog_Create(Win), !. %END Task Window, id_help_about
%BEGIN Task Window, id_file_exit task_win_eh(Win,e_Menu(id_file_exit,_ShiftCtlAlt),0):-!, win_Destroy(Win), !. %END Task Window, id_file_exit
%BEGIN Task Window, e_Size task_win_eh(_Win,e_Size(_Width,_Height),0):-!, ifdef use_tbar toolbar_Resize(_Win), enddef ifdef use_message msg_Resize(_Win), enddef !. %END Task Window, e_Size
%END_WIN Task Window
/*************************************************************************** Invoking on-line Help ***************************************************************************/
project_ShowHelpContext(HelpTopic):- vpi_ShowHelpContext("hearts.hlp",HelpTopic).
/*************************************************************************** Main Goal ***************************************************************************/
goal
ifdef use_mdi vpi_SetAttrVal(attr_win_mdi,b_true), enddef ifdef ws_win ifdef use_3dctrl vpi_SetAttrVal(attr_win_3dcontrols,b_true), enddef enddef vpi_Init(task_win_Flags,task_win_eh,task_win_Menu,"hearts",task_win_Title).
%BEGIN_DLG About dialog /************************************************************************** Creation and event handling for dialog: About dialog **************************************************************************/
constants
%BEGIN About dialog, CreateParms, 10:49:04-23.11.2008, Code automatically updated! dlg_about_dialog_ResID = idd_dlg_about dlg_about_dialog_DlgType = wd_Modal dlg_about_dialog_Help = idh_contents %END About dialog, CreateParms
predicates
dlg_about_dialog_eh: EHANDLER
clauses
dlg_about_dialog_Create(Parent):- win_CreateResDialog(Parent,dlg_about_dialog_DlgType,dlg_about_dialog_ResID,dlg_about_dialog_eh,0).
%BEGIN About dialog, idc_ok _CtlInfo dlg_about_dialog_eh(_Win,e_Control(idc_ok,_CtrlType,_CtrlWin,_CtrlInfo),0):-!, win_Destroy(_Win), !. %END About dialog, idc_ok _CtlInfo %MARK About dialog, new events
dlg_about_dialog_eh(_,_,_):-!,fail.
%END_DLG About dialog
Дата добавления: 2015-05-28; Просмотров: 360; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |