Файл: Министерство науки.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 03.12.2023

Просмотров: 152

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
объекту, то диаграммы деятельности описывают переходы от одной деятельности к другой.

Деятельность (activity) – это некоторый относительно продолжительный этап выполнения в автомате. В конечном итоге деятельность сводится к некоторому действию, которое составлено из атомарных вычислений, приводящих к изменению состояния системы или возврату значения [14].

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



Рисунок 10 Диаграмма активности
        1. 1   ...   6   7   8   9   10   11   12   13   14

Разработка игры



UI – аббревиатура, которая расшифровывается как User Interface, что в переводе означает «Пользовательский интерфейс». Это направление развития цифровых продуктов, включающее в себя работу над визуальным оформлением бренда/сайта/приложения или сервиса [6].

Пользовательский интерфейс должен быть красивым, соответствовать современным стандартам и при этом оставаться удобным. Причем последний пункт особенно важен, ведь UI-дизайн включает в себя не только создание красивых иконок. Эти иконки должны с ходу давать пользователю понять, какую функцию они выполняют, а прочие части интерфейса иметь понятную иерархию. Так как разрабатываемый продукт создается для Androidустройств,

основной формат экрана у этих устройств 16:9, то разрабатывать макет нужно именно в таком формате, для более наглядного представления как будет выглядеть приложение на телефоне.

На рисунке 11 представлено главное меню игры.




Рисунок 11 Главное меню игры
Для современного приложения считается недоработкой, если при нажатии на кнопку «Назад» на Navigationbarигра сразу сворачивается. Чтобы предотвратить это, был написан следующий код, представленный в листинге 1, а результат на рисунке 12.

Листинг 1 Обработка двойного клика для выхода из игры

private long backPressedTime; private Toast backToast;
public void onBackPressed() {
if (backPressedTime + 2000

> System.currentTimeMillis()){

backToast.cancel(); super.onBackPressed(); return;

}else{

backToast = Toast.makeText(getBaseContext(),"Нажмите еще раз, чтобы выйти", Toast.LENGTH_SHORT);

backToast.show();

}

backPressedTime = System.currentTimeMillis();

}




Рисунок 12 Результат работы кода
На рисунке 13 представлено меню выбора уровней игры.



Рисунок 12 Вариант выбора уровней игры
Результат прохождения игры сохраняется с помощью постоянного хранилища SharedPreferences. Если игрок покинет игру и вернется в нее спустя какое-то время, прогресс игры сохранится, и игрок продолжит играть в игру с того уровня, на котором он закончил. Для сохранения прогресса игры был написан код, представленный в листинге 2.

Листинг 2 Сохранение прогресса игры

SharedPreferences save = getSharedPreferences("Save",

MODE_PRIVATE);

final int level = save.getInt("Level",1);
TextView textView2 = (TextView)findViewById(R.id.textView2); textView2.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) { try {

if(level>=2) {

Intent intent = new Intent(GameLevels.this,

Level2.class);
startActivity(intent); finish();

}else{
}

} catch (Exception e) { e.printStackTrace();

}

}

});
final int[] x = {

R.id.textView1, R.id.textView2, R.id.textView3,

R.id.textView4,

R.id.textView5, R.id.textView6, R.id.textView7, R.id.textView8,

R.id.textView9, R.id.textView10, R.id.textView11, R.id.textView12,

R.id.textView13, R.id.textView14, R.id.textView15, R.id.textView16,

};
for(int i=1;i
TextView tv = findViewById(x[i]); tv.setText(""+(i+1));

}
Перед началом каждого уровня будет появляться диалоговое окно с заданием. На рисунке 13 представлено диалоговое окно первого уровня игры.





Рисунок 13 Превью первого уровня игры
Для вызова диалогового окна перед началом каждого уровня был использован код, представленный в листинге 3.

Листинг 3 – Вызов диалогового окна

dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.previewdialog); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); dialog.setCancelable(false);
TextView btnclose = (TextView)dialog.findViewById(R.id.btnclose) ; btnclose.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) { try {

Intent intent = new Intent(Level1.this,GameLevels.class);

startActivity(intent);

finish();

} catch (Exception e) { e.printStackTrace();



}

});

}

dialog.dismiss();


Button btncontinue = (Button)dialog.findViewById(R.id.btncontinue); btncontinue.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) { dialog.dismiss();

}

});
dialog.show();
Затем после ознакомления с заданием, откроется выбранный уровень (Рисунок 14). В этом окне будет происходить процесс игры. Пользователю нужно будет набрать 20 очков, чтобы перейти на следующий уровень. Также в этом окне под каждой картинкой будет подпись в соответствии с тем, что на ней изображено. На случай, если игрок пропустит превью, внизу есть кнопка

«Помощь», нажав на которую откроется превью уровня с заданием. Код, который отвечает за обработку левой картинки представлен в листинге 4.

Рисунок 14 – Макет уровня игры Листинг 4 – Обработка нажатия на левую картинку

img_left.setOnTouchListener(new View.OnTouchListener() { @Override

public boolean onTouch(View v, MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN){ img_right.setEnabled(false); if(numLeft>numRight){

img_left.setImageResource(R.drawable.img_true);

}else{

img_left.setImageResource(R.drawable.img_false);

}

}else if (event.getAction()==MotionEvent.ACTION_UP){ if(numLeft>numRight)
{

if (count < 20) { count = count + 1;

}

for (int i = 0; i < 20; i++)

{

TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.style_points);

}
for (int i=0;i
TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.style_points_green);

}

}else{

if(count>0){

if(count==1){

count=0;

}else{

count=count-2;

}

}

for (int i = 0; i < 19; i++)

{

TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.style_points);

}

for (int i=0;i
TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.style_points_green);

}

}

if (count==20){ SharedPreferences save =

getSharedPreferences("Save", MODE_PRIVATE);

final int level = save.getInt("Level", 1); if (level>1){

}else{

SharedPreferences.Editor editor = save.edit();

editor.putInt("Level",2); editor.commit();

}

dialogEnd.show();

}else{

numLeft = random.nextInt(10);
img_left.setImageResource(array1.images1[numLeft]);

img_left.startAnimation(a); text_left.setText(array1.texts1[numLeft]);

numRight = random.nextInt(10); while(numLeft==numRight){

numRight = random.nextInt(10);

}
img_right.setImageResource(array1.images1[numRight]);

img_right.startAnimation(a); text_right.setText(array1.texts1[numRight]);
img_right.setEnabled(true);

}

}

return true;

}

});
После окончания каждого уровня игры, появляется диалоговое окно, на котором будет написан какой-нибудь интересный факт, связанный с уровнем (Рисунок 15).




Рисунок 15 Диалоговое окно в конце игры
Остальные уровни игры разрабатываются аналогично по уже созданным макетам. Заполнение уровней картинками и подписями осуществляется из файла Array.java.
        1. 1   ...   6   7   8   9   10   11   12   13   14