Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
qozyrek
6 / 6 / 0
Регистрация: 19.11.2012
Сообщений: 434
#1

Первая игра 4х4 - Программирование Android

24.12.2015, 03:10. Просмотров 349. Ответов 15
Метки нет (Все метки)

Есть типа игра, в которой нужно нажать на все кнопки с числами по возрастанию.
У меня 16 кнопок, я решил реализовать всё так:

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package com.example.root.v_1;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
 
import java.util.Random;
 
 
public class MainActivity extends Activity implements View.OnClickListener {
    LinearLayout llt, myllt;
    public static Random rnd = new Random();
    private int minElem = 100, summ = 0;
    private int[] sort = new int[16];
 
    @Override
    protected void onCreate( Bundle savedInstanceState ) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.main );
 
        llt = ( LinearLayout ) findViewById( R.id.myllt );
        int i = llt.getChildCount();
 
        for ( int k = 0; k < i; k++ ) {
            if( llt.getChildAt( k ) instanceof LinearLayout ){
                myllt = ( LinearLayout )llt.getChildAt( k );
                for ( int j = 0; j < myllt.getChildCount(); j++ ) {
                    if( myllt.getChildAt( j ) instanceof Button ) {
                        ( ( Button ) myllt.getChildAt(j) ).setText( String.valueOf( addElement() ) );
                    }
                }
            }
        }
        sort();
    }
 
    @Override
    public void onClick(View view) {
 
        if( view == null || !( view instanceof Button ) ) {
            return;
        }
 
        int tmp = Integer.parseInt((String) ((Button) view).getText());
        Toast tst = Toast.makeText(this, "Подумайте ещё (~_-)", Toast.LENGTH_LONG);
 
        if ( tmp != sort[summ] ) {
            tst.show();
        } else {
            summ++;
        }
 
        if ( summ == 15 ) {
            Toast tst2 = Toast.makeText(this, "Победа!", Toast.LENGTH_LONG);
            tst2.show();
        }
 
    }
 
    protected int addElement() {
        int tmp = rnd.nextInt(100);
 
        if ( tmp < minElem ) {
            minElem = tmp;
        }
        return tmp;
    }
 
    protected void sort() {
 
        for ( int i = sort.length - 1; i >= 2; i-- ) {
            boolean sorted = true;
 
            for ( int j = 0; j < i; j++ ) {
                if ( sort[j] > sort[j + 1]) {
                    int tmp = sort[j];
 
                    sort[j] = sort[j + 1];
                    sort[j + 1] = tmp;
                    sorted = false;
                }
            }
 
            if ( sorted ) {
                break;
            }
        }
 
    }
}




Но у меня, почему-то не получилось(нету ответа по нажатию на кнопку), подскажите, пожалуйста, что здесь не так и как это исправить.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2015, 03:10     Первая игра 4х4
Посмотрите здесь:

Первая игра - каково ваше мнение о ней? - Программирование Android
Ну вот и написал свою первую игру. Тема вопроса не касается напрямую программирования, а больше носит эстетический характер, но все же...

Addplus - моя первая математическая игра на скорость счета - Программирование Android
https://play.google....addplus.android Необходимо выбирать шарики так, чтобы их сумма была равна 10. Игра заканчивается когда первый...

Первая программа на Андроид - Программирование Android
Ребят, написал свою первую программу, но делал ее по сайту develop.android.com. Если честно на Java программирую недавно и многие методы...

Первая программа под Android в Netbeans - найти ошибку в коде - Программирование Android
Всем привет! Ребята, установил эмулятор Android для NetBeans, создал проект, но он создался с ошибками. import android.R; import...

Игра ПАЗЛЫ - Программирование Android
пример видео урока или текст с подробным описанием создания игры. Добавлено через 2 минуты Делимся опытом):)

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

Простая игра. OpenGL - Программирование Android
Хочу научиться работать с графикой и... решил начать с игрушки вроде этих: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
24.12.2015, 08:40     Первая игра 4х4 #2
Цитата Сообщение от qozyrek Посмотреть сообщение
нету ответа
видно кнопка не знает что onClick(View view) написана для нее
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
24.12.2015, 09:05     Первая игра 4х4 #3
вполне возможно что у него onClick задан прямо в xml

ТС, код у тебя кошмарный, лучше не привыкай писать все через instanceof, прочитай пару уроков, потрать пару часов
qozyrek
6 / 6 / 0
Регистрация: 19.11.2012
Сообщений: 434
24.12.2015, 09:14  [ТС]     Первая игра 4х4 #4
Паблито,
Цитата Сообщение от Паблито Посмотреть сообщение
вполне возможно что у него onClick задан прямо в xml
прошло время и с этой проблемой я справился. Действительно, кнопки не знали, что эта ф-ция для них. Добавил в main.xml android:onClick="onClick" и нажатия появились, но тут возникла вторая проблема:"В методе addElement() я добавляю элемент в массив:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
protected int addElement() {
        int tmp = rnd.nextInt(100);
 
        sort[koll] = tmp;
        koll++;
 
        return tmp;
    }

но когда запускаю программу выдаёт:"Ошибка Андроид приложения". Не подскажете, что здесь не так?!
Цитата Сообщение от Паблито Посмотреть сообщение
код у тебя кошмарный
Знаю
Цитата Сообщение от Паблито Посмотреть сообщение
прочитай пару уроков
Например:
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
24.12.2015, 15:46     Первая игра 4х4 #5
Цитата Сообщение от qozyrek Посмотреть сообщение
но когда запускаю программу выдаёт:"Ошибка Андроид приложения"
в LogCat пишет ошибки, их оттуда надо копировать сюда полностью
Цитата Сообщение от qozyrek Посмотреть сообщение
Например:
любой, выход в гугл закрыт что ли?
qozyrek
6 / 6 / 0
Регистрация: 19.11.2012
Сообщений: 434
24.12.2015, 16:53  [ТС]     Первая игра 4х4 #6
Паблито,
Цитата Сообщение от Паблито Посмотреть сообщение
в LogCat пишет ошибки
Ошибочки.
Кликните здесь для просмотра всего текста
12-24 08:06:46.864 1776-1776/? E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.root.v_1/com.example.root.v_1.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length=15; index=15
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=15; index=15
at com.example.root.v_1.MainActivity.addElement(MainActivity.java:68)
at com.example.root.v_1.MainActivity.onCreate(MainActivity.java:31)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)*
at android.app.ActivityThread.access$600(ActivityThread.java:141)*
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)*
at android.os.Handler.dispatchMessage(Handler.java:99)*
at android.os.Looper.loop(Looper.java:137)*
at android.app.ActivityThread.main(ActivityThread.java:5103)*
at java.lang.reflect.Method.invokeNative(Native Method)*
at java.lang.reflect.Method.invoke(Method.java:525)*
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)*
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)*
at dalvik.system.NativeStart.main(Native Method)*
Вложения
Тип файла: rar tmp.log.rar (3.7 Кб, 0 просмотров)
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
24.12.2015, 16:57     Первая игра 4х4 #7
размер sort меньше чем посылаемый koll, твой koll=>15
qozyrek
6 / 6 / 0
Регистрация: 19.11.2012
Сообщений: 434
24.12.2015, 17:09  [ТС]     Первая игра 4х4 #8
Valakin, но оно же приходит равным нулю и плюсуется 16 раз, а значит должно быть koll == 15. Оно же больше не то что нигде не увеличивается, а и не упоминается.
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
24.12.2015, 17:13     Первая игра 4х4 #9
новый код показывай весь
qozyrek
6 / 6 / 0
Регистрация: 19.11.2012
Сообщений: 434
24.12.2015, 17:53  [ТС]     Первая игра 4х4 #10
Паблито,
Кликните здесь для просмотра всего текста
package com.example.root.v_1;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
import java.util.Arrays;
import java.util.Random;

public class MainActivity extends Activity implements View.OnClickListener {
public LinearLayout llt, myllt;
public static Random rnd = new Random();
private int koll = 0, summ = 0;
private int[] sort = new int[15];

@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate(savedInstanceState);
setContentView( R.layout.main );

llt = ( LinearLayout ) findViewById( R.id.myllt );
int i = llt.getChildCount();

for ( int k = 0; k < i; k++ ) {
if( llt.getChildAt( k ) instanceof LinearLayout ){
myllt = ( LinearLayout )llt.getChildAt( k );
for ( int j = 0; j < myllt.getChildCount(); j++ ) {
if( myllt.getChildAt( j ) instanceof Button ) {
( ( Button ) myllt.getChildAt(j) ).setText( String.valueOf( addElement() ) );
}
}
}
}
Arrays.sort(sort);
}

@Override
public void onClick(View view) {

int tmp = Integer.parseInt((String) ((Button) view).getText());
Toast errorMsg = Toast.makeText(this, "Подумайте ещё (~_-)", Toast.LENGTH_SHORT);
Toast tst2 = Toast.makeText(this, "Победа!", Toast.LENGTH_LONG);

Toast test = Toast.makeText(this, "Нажато: " + tmp, Toast.LENGTH_LONG);
test.show();

if( view == null || !( view instanceof Button ) ) {
return;
}

if ( tmp != sort[summ] ) {
errorMsg.show();
} else {
summ++;
}

if ( summ == 15 ) {
tst2.show();
}

}

protected int addElement() {
int tmp = rnd.nextInt(100);

sort[koll] = tmp;
koll++;

return tmp;
}

}



Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
24.12.2015, 17:57     Первая игра 4х4 #11
Цитата Сообщение от qozyrek Посмотреть сообщение
и плюсуется 16 раз,
откуда такая информация?

зачем делать все эти циклы с instanceof ?
qozyrek
6 / 6 / 0
Регистрация: 19.11.2012
Сообщений: 434
24.12.2015, 18:02  [ТС]     Первая игра 4х4 #12
Паблито,
Цитата Сообщение от Паблито Посмотреть сообщение
откуда такая информация?
ну у меня же 16 кнопок.
Цитата Сообщение от Паблито Посмотреть сообщение
зачем делать все эти циклы с instanceof ?
Хз, это то, что придумал мой мозг.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
25.12.2015, 11:21     Первая игра 4х4 #13
Цитата Сообщение от qozyrek Посмотреть сообщение
ArrayIndexOutOfBoundsException: length=15
Цитата Сообщение от qozyrek Посмотреть сообщение
а значит должно быть koll == 15
в логах написано что длина массива 15, то бишь от нуля до 14
при значении 15 появится ошибка,
это в ветке java надо спрашивать
qozyrek
6 / 6 / 0
Регистрация: 19.11.2012
Сообщений: 434
25.12.2015, 19:40  [ТС]     Первая игра 4х4 #14
Valakin,
Цитата Сообщение от Valakin Посмотреть сообщение
в логах написано что длина массива 15, то бишь от нуля до 1
значит у меня где-то нету одной кнопки? Вроде все отвечают на нажатия и на всех числа есть, если без добавления в массив.
Я её решил сделать по этой игре. Но я почему-то не понял алгоритм и решил сверять по отсортированному массиву.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
26.12.2015, 20:48     Первая игра 4х4 #15
по твоим кускам кода причину нельзя узнать, но идея переделать интересная
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2015, 22:24     Первая игра 4х4
Еще ссылки по теме:

Игра в андроид маркете - Программирование Android
Добрый день! Есть игра в плэй маркете. И появилась проблема Если юзер сбрасывает свой смартфон/планшет к заводским настройкам, то...

Игра под машинку - Программирование Android
Добрый день форум чане, мне нужно написать программу под ос андроид, с помощью которой я смогу управлять машинкой через Wi-Fi. Как мне это...

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

Игра без движка - Программирование Android
Жанр: головоломка. Суть игры заключается в передвижении геометрических фигур (с минимальной графикой, то есть по щёлчку на кнопку...

android игра ( sutfaceview) - Программирование Android
Кто знаком с интерфейсом surfaceview, отдельный поток для отрисовки 2d графики? Сложилась такая проблема..есть два обьекта в потоке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
qozyrek
6 / 6 / 0
Регистрация: 19.11.2012
Сообщений: 434
26.12.2015, 22:24  [ТС]     Первая игра 4х4 #16
Valakin, как бы Вы выходили с данной ситуации? Чтобы делали?
Yandex
Объявления
26.12.2015, 22:24     Первая игра 4х4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru