среда, 2 июля 2014 г.

Тестовое задание — Консольная игра


   В предыдущем посте я описывал как создать Maven-проект и залить его на Git.



   Сегодня я хочу поделиться своим небольшим опытом.



   На днях, мне попалась вакансия компании IDAP с тестовым заданием для позиции iOS Trainee. Тест предполагает собой выполнить одно из трех заданий (на выбор) на любом языке и любым способом. Также, предусмотрены дополнительные баллы за выполнение некоторых условий, подробнее.



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

   Но, поэкспериментировав (конечно же, я понимаю, что мое решение далеко не идеально), я решил зашить в файл и логику и контент.



   В реализации, я считывал конфиг-файл в мапу (Map<Integer key, String values>), парсил и корректировал под свои нужды, в результате чего получил мапу Map<Integer key, Entity entity>, где объект Entity представлял собой объект с полями-параметрами.



   Конечно же, идея хранить весь контент в одной мапе не самое правильное, т. к. мы загружаем ее себе в ОЗУ, но в оправдывая свой выбор скажу что каждый раз считывать строку (искать по ключу) я счел более тяжеловесным в сравнении с моим небольшим текстовым контентом.



   Отдельно хочу подчеркнуть то, что в строке перенос строки '\n' — это два символа, а в коде — это один символ, в результате чего необходимо корректировать получаемые значения. На это у меня ушло пару часов — не повторяйте мои ошибки!)





   Итак, допустим игру написали, время собирать проект.



   Для сборки Maven'ом, в пом файл (pom.xml):



1) добавляем зависимости сборки:   
<build>
 <plugins>
  <plugin>
   <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
     <version>${maven-compiler-plugin.version}</version>
      <configuration>
       <source>${jdk.version}</source>
       <target>${jdk.version}</target>
      </configuration>
 </plugin>
 <plugin>
  <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
     <executions>
      <execution>
       <goals>
        <goal>test-jar</goal>
       </goals>
      </execution>
     </executions>
      <!--add classpath Main-->
      <configuration>
       <archive>
        <manifest>
         <addClasspath>true</addClasspath>
         <mainClass>Main</mainClass>
        </manifest>
       </archive>
      </configuration>
 </plugin>
</plugins> 
</build>


2) в <project
         …
         <properties>
                 …
 
добавляем настройку кодировки: 

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

 подробне тут.

3) указываем MANIFEST (точка входа в программу, иными словами — наш класс Main): 

подробнее тут.


<configuration>
 <archive>
  <manifest>
   <addClasspath>true</addClasspath>
   <mainClass>Main</mainClass>
  </manifest>
 </archive>
</configuration>

 
4) указываем свои ресурсы, которые необходимо скопировать с папки resources. Для этого добавляем плагин:

<plugin>
 <artifactId>maven-resources-plugin</artifactId>
  <version>2.5</version>
   <executions>
    <execution>
     <id>copy-resources</id>
     <phase>validate</phase>
     <goals>
      <goal>copy-resources</goal>
     </goals>
    <configuration>
     <outputDirectory>${project.build.outputDirectory}/src/main/resources/</outputDirectory>
      <resources>
       <resource>
        <directory>src/main/${project.build.sourceDirectory}/resources/${project.name}</directory>
       <filtering>true</filtering>
        <includes>
         <include>**/*.cfg</include>
        </includes>
      </resource>
     </resources>
    </configuration>
   </execution>
  </executions>
</plugin>



5) Сборка Maven-проекта в Intellij Idea осуществляется очень просто:
справа жмем кнопку Maven (на боковой панеле), выбираем (с помощью кнопки ctrl) 'clean' и 'install', и жмем на "пуск" (зеленый треугольник).


Если мы видим 'BUILD SUCCESS', значит, мы сделали все верно и в папке с проектом появилась директория target, где лежат наши скомпилированные классы и готовый jar.


Весь мой пом-файл:
pom.xml


И, собственно, сам проект:

или



Буду рад, если кому-то будет полезно. С удовольствием прочту критику. Давайте «расти» вместе! :)



Комментариев нет:

Отправить комментарий