Это вторая часть повествования о написании простой игры со словами на андроид. Первая часть.
Сперва нам надо нарисовать буквы в нижней части компонента LetterField по алфавиту. Для этого нам придется объявить следующие поля, отвечающие за их отображение:
Второе и третье - параметры выводимых букв - кегль и цвет шрифта.
Третье и четвертое - количество столбцов и строк выводимых букв. Их произведение должно быть больше или равно количеству букв в алфавите.
Пятое - размер отступа таблицы в буквами от верхнего края (1-высота дисплея)
Шестое и седьмое - специальные коэффициенты, которыми мы будем выравнивать положение букв по вертикали и горизонтали, чтобы композиция красивее смотрелась.
В методе onDraw(), который исполняется тогда, когда нужно перерисовать компонент, объявим объект типа Paint, который будет содержать различные параметры для рисования объектов: толщины линий, цвета, параметры шрифтов:
Мы только что установили кегль текста, цвет и ширину линий.
Определим важную переменную red_height, равную той части высоты дисплея, которая занята буквами.
Код помещения букв будет выглядеть так. Используем для рисования графики методы класса canvas:
-drawLine() - рисование линии от пункта А до пункта B
-drawText() - написать текст в точке с заданными координатами
Скачать исходник игры
Сперва нам надо нарисовать буквы в нижней части компонента LetterField по алфавиту. Для этого нам придется объявить следующие поля, отвечающие за их отображение:
String alphabet="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; double letter_size=20; int letter_color=Color.BLACK; int rows=7; int columns=6; double off_const=0.4; double opt_a=0.20; double opt_b=0.65;Перваое - строка алфавита большими буквами
Второе и третье - параметры выводимых букв - кегль и цвет шрифта.
Третье и четвертое - количество столбцов и строк выводимых букв. Их произведение должно быть больше или равно количеству букв в алфавите.
Пятое - размер отступа таблицы в буквами от верхнего края (1-высота дисплея)
Шестое и седьмое - специальные коэффициенты, которыми мы будем выравнивать положение букв по вертикали и горизонтали, чтобы композиция красивее смотрелась.
В методе onDraw(), который исполняется тогда, когда нужно перерисовать компонент, объявим объект типа Paint, который будет содержать различные параметры для рисования объектов: толщины линий, цвета, параметры шрифтов:
Paint paint=new Paint(); paint.setTextSize((float) letter_size); paint.setColor(letter_color); paint.setStrokeWidth(1);
Мы только что установили кегль текста, цвет и ширину линий.
double red_height=(1-off_const)*height;
Определим важную переменную red_height, равную той части высоты дисплея, которая занята буквами.
Код помещения букв будет выглядеть так. Используем для рисования графики методы класса canvas:
-drawLine() - рисование линии от пункта А до пункта B
-drawText() - написать текст в точке с заданными координатами
for (int j=0;j<columns;j++){//Выполняем для каждой строки float YLine=(float) ((double)(j)/(double)(columns)*red_height+off_const*height);//Находим координату Y горизонтальной линии сетки canvas.drawLine((float)(0), (float)(YLine), (float)(width), (float)(YLine), paint);//Чертим линию сетки //Сейчас будем ставить буквы for (int i=0;i<rows;i++){//Обходим каждый столбец if(j*rows+i+1<=alphabet.length()){//Определяем номер буквы, помещаемый в ячейку и убеждаемся, что он допустим float X=(float) ((double)(i)/(double)(rows)*width+opt_a/(double)(columns)*height); //Определим X местоположения буквы (обратите внимание на смещение opt_a/(double)(columns)*height для красоты) float Y=(float) ((double)(j)/(double)(columns)*red_height+opt_b/(double)(columns)*red_height+off_const*height);//Определим Y местоположения буквы - аналогично canvas.drawText(alphabet.charAt(j*rows+i)+"", X, Y, paint);//Вывод буквы } } } //Проводим вертикальные линии сетки способом, аналогичным горизонтальным for (int i=0;i<=rows;i++){ float XLine=(float) ((double)(i)/(double)(rows)*width); canvas.drawLine((float)(XLine), (float)(height*off_const), (float)(XLine), (float)(height), paint); }Включив девайс, любуемся на выведенные буквы.
Скачать исходник игры
Комментариев нет:
Отправить комментарий