Лабораторные работы (2010) (Отчет)

Посмотреть архив целиком


Постановка задачи.


Сформировать модель принятия решений в виде совокупности таблиц решений и написать модуль-интерпретатор для данной модели.


Описание предметной области.


Объекты моделирования – поле размером 10 х 10, на котором имеются препятствия в виде стен, бомб и двигающихся фигурок. Действующие лица – террорист, сапер и киллер. Террорист старается убить сапера, сапер старается разминировать все бомбы, киллер убивает всех. Все ходят по очереди. Радиус видимости сапера составляет 2 клетки, то есть если бомба находится где то в радиусе 2 клеток от сапера, то он пойдет ее разминировать. Террорист, киллер и сапер стены обходят одинаково. Радиус видимости киллера также составляет 2 клетки, то есть при обнаружении террориста он будет стараться его убить. Также что бы террористу было сложнее разминировать все бомбы, если киллер находит бомбу то он отправляет ее террористу на перестановку. Конечное состояние достигается тогда, когда умирает террорист, когда умирает сапер, когда все бомбы разминированы.


.
























Оптимизированная трансляция

Таблица 1

Таблица 2

Таблица 3

Таблица 4

Таблица 5

Таблица 6.

Таблица 7.



Вид программы.

Основное окно программы.

Предусмотрена возможность выбора времени на ход: от 50 мс до 150 мс.

Программа реализована в среде Microsoft Visual Studio 2008 C#.

Вид сапера.

Вид террориста.

Стена. Бомба.

Вид Киллера



Приложение.

Модуль-интерпретатор:


using System;

using System.Windows.Forms;

using System.Threading;

using System.Runtime.InteropServices;


namespace SaperTerorist

{

public class MyHookClass : NativeWindow

{

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]

static extern uint RegisterWindowMessage(string lpString);

uint simpr;

Form1 f;


public MyHookClass(Form1 af)

{

simpr = RegisterWindowMessage("SaperTeroristMessage");

this.AssignHandle(af.Handle);

f = af;

}


protected override void WndProc(ref Message m)

{

int wparamhi,wparamlo,wparam;

int lParam = Convert.ToInt32("" + m.LParam);


if (m.Msg == simpr)

{

wparam = Convert.ToInt32("" + m.WParam);

wparamhi = wparam / 65536;

wparamlo = wparam - wparamhi * 65536;


#region Условия

if (wparamhi == 0)

{

if (wparamlo == 1) // Таблица 1

{

switch (lParam) // Условия

{

case (1): m.Result = f.IsReady(); break;

















Случайные файлы

Файл
103958.rtf
101768.rtf
24087.rtf
90176.rtf
164465.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.