ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.12.2023
Просмотров: 144
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
«Сибирский государственный университет науки и технологий имени академика М.Ф. Решетнева»
«Разработка мобильной игры-викторины в среде Android Studio»
Обзор средств разработки приложений
Обзор существующих игр-аналогов
Разработка руководства программиста
объекту, то диаграммы деятельности описывают переходы от одной деятельности к другой.
Деятельность (activity) – это некоторый относительно продолжительный этап выполнения в автомате. В конечном итоге деятельность сводится к некоторому действию, которое составлено из атомарных вычислений, приводящих к изменению состояния системы или возврату значения [14].
Помимо этого, диаграмма активности позволяет команде разработчиков лучше понять требования к взаимодействию компонентов системы.
Рисунок 10 – Диаграмма активности
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.
Деятельность (activity) – это некоторый относительно продолжительный этап выполнения в автомате. В конечном итоге деятельность сводится к некоторому действию, которое составлено из атомарных вычислений, приводящих к изменению состояния системы или возврату значения [14].
Помимо этого, диаграмма активности позволяет команде разработчиков лучше понять требования к взаимодействию компонентов системы.
Рисунок 10 – Диаграмма активности
- 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 ... 6 7 8 9 10 11 12 13 14