ADN Open CIS
Сообщество программистов Autodesk в СНГ

06/11/2013

Сыграем в крестики-нолики в Autodesk Inventor под Autodesk Vault?

Каким образом обучение конечного пользователя можно сделать менее болезненным и более прозрачным? Конечно, превратив обучение в игру!

Иногда требуется довольно длительное время для того, чтобы пользователь набил руку в операции получения/возврата. Либо администратору необходимо обкатать жизненный цикл или пользовательское взаимодействие на конкретной сборке.

Специально для таких случаев разработана следующая параметрическая сборка в Autodesk Inventor.

Поместив её в хранилище, можно проиграть следующие ситуации и «пощупать» инструменты:

  • Получение/выдача файлов и сборок
  • Редакции
  • Жизненные циклы
  • Согласование
  • И т.д., на что хватит фантазии

Состояние доски содержится в параметрах сборки:

  • f1-f9 – состояния ячеек, могут принимать значения «x», «o» или «_» для пустой ячейки.
  • NextPlayer – определяет сторону, которая осуществит следующий ход («x», «o»).
  • NextField – поле, куда будет осуществлен следующий ход игроком NextPlayer. Принимает значения 1-9, при пустой доске сбрасывается в 0.
  • FlushBoard – флаг очистки доски. Только по нему отрабатывает правило «FlushBoard».

Теперь о правилах, которые управляют поведением сборки.

  • Главное правило, «TicTacToe»:

Код - VBA: [Выделить]
  1. 'Получаем состояние доски
  2. a=f1+f2+f3+f4+f5+f6+f7+f8+f9
  3. c=NextField
  4. If InStr(a,"_")=0 Then
  5.     MessageBox.Show("Доска полна, очищаем", "Title")
  6.     FlushBoard=True
  7.     iLogicVb.RunRule("FlushBoard")
  8.     InventorVb.DocumentUpdate()
  9. Else
  10. 'Заполняем доску
  11. i=1
  12. For Each letter In a
  13.     If i=NextField Then
  14.        If letter="_" Then
  15.            letter=NextPlayer
  16.            Parameter("f"+CStr(NextField)) = NextPlayer
  17.            'Сменить следующую сторону
  18.            If NextPlayer="x" Then
  19.            NextPlayer="o"
  20.            Else NextPlayer="x"
  21.            End If
  22.        Else
  23.            If NextField = 0 Then
  24.                MessageBox.Show("Доска очищена!", "Title")
  25.                Else MessageBox.Show("Попробуете сделать ход на пустое поле", "Title")
  26.            End If
  27.        End If   
  28.     End If
  29.     Select Case letter
  30.        Case "_"
  31.        Component.Visible("tic:"+CStr(i))=False
  32.        Component.Visible("tac:"+CStr(i))=False
  33.        i+=1
  34.        Case "o"
  35.        Component.Visible("tic:"+CStr(i))=False
  36.        Component.Visible("tac:"+CStr(i))=True
  37.        i+=1
  38.        Case "x"
  39.        Component.Visible("tic:"+CStr(i))=True
  40.        Component.Visible("tac:"+CStr(i))=False
  41.        i+=1
  42.     End Select
  43. Next
  44. InventorVb.DocumentUpdate()
  45. iLogicVb.RunRule("CheckLine")
  46. End If
  47.  

  • Очистка доски «FlushBoard»:

Код - VBA: [Выделить]
  1. If FlushBoard Then
  2. MessageBox.Show("Чистим доску", "Title")
  3.     f1="_"
  4.     f2="_"
  5.     f3="_"
  6.     f4="_"
  7.     f5="_"
  8.     f6="_"
  9.     f7="_"
  10.     f8="_"
  11.     f9="_"
  12.     NextField=0
  13.     FlushBoard=False
  14. End If

  • Проверка наличия линии «CheckLine». Реализовано «в лоб»

Код - VBA: [Выделить]
  1. If f1+f2+f3="xxx" Or
  2.    f4+f5+f6="xxx" Or
  3.    f7+f8+f9="xxx" Or
  4.    f1+f4+f7="xxx" Or
  5.    f2+f5+f8="xxx" Or
  6.    f3+f6+f9="xxx" Or
  7.    f1+f5+f9="xxx" Or
  8.    f3+f5+f7="xxx" Then
  9.    MessageBox.Show("Крестики выиграли!", "Title")
  10. End If
  11. If f1+f2+f3="ooo" Or
  12.    f4+f5+f6="ooo" Or
  13.    f7+f8+f9="ooo" Or
  14.    f1+f4+f7="ooo" Or
  15.    f2+f5+f8="ooo" Or
  16.    f3+f6+f9="ooo" Or
  17.    f1+f5+f9="ooo" Or
  18.    f3+f5+f7="ooo" Then
  19.    MessageBox.Show("Нолики выиграли!", "Title")
  20. End If

  • Правило «ShowForm» на вызов «Панели управления» при открытии документа:

iLogicForm.Show("MakeTurn")

Смотрите видео с описанием и использованием сборки в Autodesk Vault: http://www.youtube.com/watch?v=uQzHY-TjZ-0.

Архив сборки доступен в Google Drive: 
tic-tac-toe.zip.

Источник: статья написана специально для ADN Open CIS по мотивам http://zippybytes.blogspot.com/2013/11/lets-play-tic-tac-toe-in-autodesk.html.

Автор: Дмитрий Емельянов
Автор перевода: Дмитрий Емельянов

Обсуждение: http://adn-cis.org/forum/index.php?topic=310

Опубликовано 06.11.2013
Отредактировано 06.11.2013 в 11:16:39