Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
8 / 8 / 5
Регистрация: 19.11.2012
Сообщений: 438
1

Первая игра 4х4

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

Author24 — интернет-сервис помощи студентам
Есть типа игра, в которой нужно нажать на все кнопки с числами по возрастанию.
У меня 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;
            }
        }
 
    }
}




Но у меня, почему-то не получилось(нету ответа по нажатию на кнопку), подскажите, пожалуйста, что здесь не так и как это исправить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2015, 03:10
Ответы с готовыми решениями:

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

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

Первая игра
Делаю 2D игру. На сцене несколько персонажей, нужно выбрать персонажа мышкой и отправить его к...

Первая игра на C++
Всем доброго времени суток. Решил попробовать написать первую игру (тетрис/змейка), подскажите с...

15
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
24.12.2015, 08:40 2
Цитата Сообщение от qozyrek Посмотреть сообщение
нету ответа
видно кнопка не знает что onClick(View view) написана для нее
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
24.12.2015, 09:05 3
вполне возможно что у него onClick задан прямо в xml

ТС, код у тебя кошмарный, лучше не привыкай писать все через instanceof, прочитай пару уроков, потрать пару часов
0
8 / 8 / 5
Регистрация: 19.11.2012
Сообщений: 438
24.12.2015, 09:14  [ТС] 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;
    }

но когда запускаю программу выдаёт:"Ошибка Андроид приложения". Не подскажете, что здесь не так?!
Цитата Сообщение от Паблито Посмотреть сообщение
код у тебя кошмарный
Знаю
Цитата Сообщение от Паблито Посмотреть сообщение
прочитай пару уроков
Например:
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
24.12.2015, 15:46 5
Цитата Сообщение от qozyrek Посмотреть сообщение
но когда запускаю программу выдаёт:"Ошибка Андроид приложения"
в LogCat пишет ошибки, их оттуда надо копировать сюда полностью
Цитата Сообщение от qozyrek Посмотреть сообщение
Например:
любой, выход в гугл закрыт что ли?
0
8 / 8 / 5
Регистрация: 19.11.2012
Сообщений: 438
24.12.2015, 16:53  [ТС] 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 Кб, 1 просмотров)
0
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
24.12.2015, 16:57 7
размер sort меньше чем посылаемый koll, твой koll=>15
0
8 / 8 / 5
Регистрация: 19.11.2012
Сообщений: 438
24.12.2015, 17:09  [ТС] 8
Valakin, но оно же приходит равным нулю и плюсуется 16 раз, а значит должно быть koll == 15. Оно же больше не то что нигде не увеличивается, а и не упоминается.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
24.12.2015, 17:13 9
новый код показывай весь
0
8 / 8 / 5
Регистрация: 19.11.2012
Сообщений: 438
24.12.2015, 17:53  [ТС] 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;
}

}



0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
24.12.2015, 17:57 11
Цитата Сообщение от qozyrek Посмотреть сообщение
и плюсуется 16 раз,
откуда такая информация?

зачем делать все эти циклы с instanceof ?
0
8 / 8 / 5
Регистрация: 19.11.2012
Сообщений: 438
24.12.2015, 18:02  [ТС] 12
Паблито,
Цитата Сообщение от Паблито Посмотреть сообщение
откуда такая информация?
ну у меня же 16 кнопок.
Цитата Сообщение от Паблито Посмотреть сообщение
зачем делать все эти циклы с instanceof ?
Хз, это то, что придумал мой мозг.
0
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
25.12.2015, 11:21 13
Цитата Сообщение от qozyrek Посмотреть сообщение
ArrayIndexOutOfBoundsException: length=15
Цитата Сообщение от qozyrek Посмотреть сообщение
а значит должно быть koll == 15
в логах написано что длина массива 15, то бишь от нуля до 14
при значении 15 появится ошибка,
это в ветке java надо спрашивать
0
8 / 8 / 5
Регистрация: 19.11.2012
Сообщений: 438
25.12.2015, 19:40  [ТС] 14
Valakin,
Цитата Сообщение от Valakin Посмотреть сообщение
в логах написано что длина массива 15, то бишь от нуля до 1
значит у меня где-то нету одной кнопки? Вроде все отвечают на нажатия и на всех числа есть, если без добавления в массив.
Я её решил сделать по этой игре. Но я почему-то не понял алгоритм и решил сверять по отсортированному массиву.
0
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
26.12.2015, 20:48 15
по твоим кускам кода причину нельзя узнать, но идея переделать интересная
0
8 / 8 / 5
Регистрация: 19.11.2012
Сообщений: 438
26.12.2015, 22:24  [ТС] 16
Valakin, как бы Вы выходили с данной ситуации? Чтобы делали?
0
26.12.2015, 22:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2015, 22:24
Помогаю со студенческими работами здесь

Составить программу нахождения сумы двух матриц Х(4Х4) и У(4Х4). Элементы матрицы – действительные числа
Составить программу нахождения сумы двух матриц Х(4Х4) и У(4Х4). Элементы матрицы – действительные...

Первая игра на Delphi
Мне нужно сделать проект, любой и я выбрал тему любая 2д игра. Решил сделать аналог игры line...

Моя первая игра
Создал игру, есть ракета которая стреляет пулями, проблема в том что при нажатии на клавишу ПРОБЕЛ...

Первая игра. Pacman
Доброго времени суток. Пишу свою первую игру. Выбор пал на Pacman. В процессе разработки я где-то...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru