Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Book_5_Java

.pdf
Скачиваний:
8
Добавлен:
29.02.2016
Размер:
339.74 Кб
Скачать

}

System.out.print(“b1= “+b1); for(int i=0;i<n2;i++) {

a2=str_mass2[i]-48; b2=b2*10+a2;

}

int sum=b1+b2; System.out.print(sum);

jLabel1.setText(“сумма числел = “ + sum);

Как правильно преобразовать строку в число Опубликовано в java.lang http://javist.ru/category/java-lang/):

byte b = Byte.parseByte(“123”); short s = Short.parseShort(“123”); int i = Integer.parseInt(“123”); long l = Long.parseLong(“123”); float f = Float.parseFloat(“123.4”);

double d = Double.parseDouble(“123.4e10”);

Видео по выполнению этой лабораторной находится тут: https://www.youtube.com/watch?v=11ozSJc0Wvg https://www.youtube.com/watch?v=4E6wgAwQcrM

В итоге выпоненная лабораторная должна содержать примерно такой код:

String str1 = jTextField1.getText(); String str2 = jTextField2.getText(); double a = Double.parseDouble(str1); double b = Double.parseDouble(str2); double sum=a+b;

jLabel1.setText(“Сумма чисел равна“+sum); jPanel1.add(jLabel1);

Лабороторная 3. Заготовка к игре “Крестики нолики”

1.Cоздаем новый проект.

2.Перетаскиваем на форму 10 кнопок Button1,..., Button9. Стираем на них подписи, делаем

нужный размер.

9 кнопок располагаем по три в ряд, десятую — отдельно — при нажатиии на нее ход будет

передаваться компьютеру.

Таким образом мы формируем поле для игры в крестики-нолики.

Для простоты считаем, что первым ходит человек, в качестве “фишек” выбираем “крестики”.

Компьютер будет всегда делать ответный ход и играть “ноликами”, причем будет перебирать все пустые “клетки поля”

(в нашем случае кнопки 1-9) и ставить “нолики” в первое свободное.

3.В обработчик щелчка кнопок 1-9 (двойной клик на кнопку) вставляем код: jButton1.setText(“X”);

...

jButton9.setText(“X”);

4. В обработчик щелчка кнопки 10

вставляем код:

if ((jButton1.getText()!=”X”)&&(jButton1.getText()!=”O”)) jButton1.setText(“O”); else if ((jButton2.getText()!=”X”)&&(jButton2.getText()!=”O”)) jButton2.setText(“O”); else if ((jButton3.getText()!=”X”)&&(jButton3.getText()!=”O”)) jButton3.setText(“O”); else if ((jButton4.getText()!=”X”)&&(jButton4.getText()!=”O”)) jButton4.setText(“O”); else if ((jButton5.getText()!=”X”)&&(jButton5.getText()!=”O”)) jButton5.setText(“O”); else if ((jButton6.getText()!=”X”)&&(jButton6.getText()!=”O”)) jButton6.setText(“O”); else if ((jButton7.getText()!=”X”)&&(jButton7.getText()!=”O”)) jButton7.setText(“O”); else if ((jButton8.getText()!=”X”)&&(jButton8.getText()!=”O”)) jButton8.setText(“O”); else if ((jButton9.getText()!=”X”)&&(jButton9.getText()!=”O”)) jButton9.setText(“O”);

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

делая ходы по очереди.

5.Убираем кнопку 10 (передающую ход компьютеру), при этом автомотически уничтожается

код описанный в п.4.

6.Вводим глобальную меременную int cnt, с помощью которой будем считать ходы: на четном

ходе ставится “X”,

на нечетном — “О”. Для этого сразу после названия главного класса public class NewJFrame extends javax.swing.JFrame {

прописываем: int cnt=0;

7.В обработчик щелчка кнопок 1-9 (двойной клик на кнопку) изменяем код:

if (cnt%2==0)jButton1.setText(“X”); else jButton1.setText(“O”); cnt=cnt+1;

...

if (cnt%2==0)jButton9.setText(“X”); else jButton9.setText(“O”); cnt=cnt+1;

8. Тестируем приложение с напарником, думаем, как написать игру человек-компьютер,

используя некоторую стратегию. Пробуем реализовать.

Видео по выполнению этой лабораторной находится тут: https://www.youtube.com/watch?v=0yZ3ilIjR5E&feature=youtu.be

Чтобы определить выигрышную позицию, при нажатии, например, кнопки “Ход компьютера”

перед тем, как компьютер поставит “О”, можно проверить, не выиграл ли человек. Так проверяем, не стоят ли крестики в горизонтальном среднем ряду:

if ((jButton3.getText()==”X”)&&(jButton4.getText()==”X”)&&(jButton5.getText()==”X”)) jLabel1.setText(“You win”);

Если же выигрышная комбинация образовалась после хода компьютера, то на поле выведим

надпись “Oops...” Для этоко после кода, приведенного в п.4 добавим проверку (сейчас

проверяем, не стоят ли нолики в горизонтальном среднем ряду ):

if ((jButton3.getText()==”O”)&&(jButton4.getText()==”O”)&&(jButton5.getText()==”O”)) jLabel1.setText(“Oops...”);

После того, как вы полностью отладили программу для игры 3x3, можете увеличить

размерность до 4x4,... Можете также добавть кнопку “New game”, при нажатии на которую

надписи на всех игровых кнопках стираются: jButton1.setText(“ ”);

...

jButton9.setText(“ ”);

Можете посмотреть также вариант игры, описанный в [2].

Платформа JavaFX

Лабораторная 1

В основе выполнения этой лабораторной работы мы взяли однин из видео-уроков

Oracle Learning Library: (https://vk.com/computersciencescollege?w=wall-86363774_72)

1.Создайте в NetBeans новый проект: JavaFX\Приложение (Application) Java FX.

2.Запустите его: увидите кнопку с надпистью «Say: Hello world» при каждом нажатии на которую в консоль будет выводится надпись «Hello world». Сделайте так, чтобы окощко для игры было обсолютно пустое: уберите кнопку и прочее, закомментировав соответствующие строки кода.

После чего подпишите форму, например, «Game1» внеся изменения в строке кода: primaryStage.setTitle(«Game1»);

Проверьте, что получилось.

3.Измените размеры окна. Для этого введите две переменные (ширину высоту окна-

сцены). Прописываем сразу после строки public void start(Stage primaryStage) { final static int WIDTH=800; //задаем размеры окна игры (ширину)

final static int HEIGHTS=600; //задаем размеры окна игры (высоту)

И меняем соответсвующую строку, создающую сцену-окно в коде на: Scene scene = new Scene(root, WIDTH, HEIGHTS);

4.Создайтеизображение-заставкукигре.Дляэтогосвязыжитепеременную,хранящую изображение с файлом Bgr.png, который Вами должен быть к этому времени уже нарисован и помещен в ту же папку, в которой находится главный файл проекта с кодом:

final Image BACKGROUNG_IMAGE = new Image(JavaFXGame1.class.getResource(«Bgr.png»).toString());

final ImageView background = new ImageView(BACKGROUNG_IMAGE); final Group root= new Group(background);

Ваш файл с кодом на этом этапе должен выглядеть примерно так: package javafxgame1;

import javafx.application.Application; import javafx.scene.Group;

import javafx.scene.Scene; import javafx.scene.image.Image;

import javafx.scene.image.ImageView; import javafx.stage.Stage;

public class JavaFXGame1 extends Application { // в видео этот класс назван FXGame!!! final static int WIDTH=800; //задаем размеры окна игры (ширину)

final static int HEIGHTS=600; //задаем размеры окна игры (высоту)

@Override

public void start(Stage primaryStage) {

//+++++++++++++++++++++++++++++++++++++++++++++++ //создаем изображение-заставку к игре

//+++++++++++++++++++++++++++++++++++++++++++++++

//связываем переменную, хранящую изображение с файлом Bgr.png, который нарисован заранее //и помещен в ту же папку, в которой находится этог файл с кодом

final Image BACKGROUNG_IMAGE = new Image(JavaFXGame1.class. getResource(«Bgr.png»).toString());

//делаем возможным отобразить этот рисунок на нашей форме

final ImageView background = new ImageView(BACKGROUNG_IMAGE); //группируем его для отображения на сцене

final Group root= new Group(background);//

Scene scene = new Scene(root, WIDTH, HEIGHTS);//задаем сцену с определенными размерами и заставкой

//+++++++++++++++++++++++++++++++++++++++++++++++ primaryStage.setTitle(«Game1»); //подписываем форму primaryStage.setScene(scene);

primaryStage.show();

}

/**

* @param args the command line arguments */

public static void main(String[] args) { launch(args);

}

}

5. Аналогичным образом добавляем на сцену три дерева и птичку, используем при этом различные функции маштабирования изображений и применения к ним спецэффектов. Код должен получиться примерно такой:

package javafxgame1;

import javafx.application.Application; import javafx.scene.Group;

import javafx.scene.Scene; import javafx.scene.effect.BoxBlur;

import javafx.scene.effect.DropShadow; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.stage.Stage;

public class JavaFXGame1 extends Application { // в видео этот класс назван FXGame!!! final static int WIDTH=800; //задаем размеры окна игры (ширину)

final static int HEIGHTS=600; //задаем размеры окна игры (высоту) @Override

public void start(Stage primaryStage) {

final Image BACKGROUNG_IMAGE = new Image(JavaFXGame1.class. getResource(«Bgr.png»).toString());

final Image TREE_1_IMAGE = new Image(JavaFXGame1.class. getResource(«tree1.png»).toString());

final Image TREE_2_IMAGE = new Image(JavaFXGame1.class. getResource(«tree2.png»).toString());

final Image TREE_3_IMAGE = new Image(JavaFXGame1.class. getResource(«tree3.png»).toString());

final Image BIRD_1_IMAGE = new Image(JavaFXGame1.class.getResource(«bird1. png»).toString());

final Image BIRD_2_IMAGE = new Image(JavaFXGame1.class.getResource(«bird2. png»).toString());

final ImageView tree1 = new ImageView(TREE_1_IMAGE); tree1.scaleXProperty().set(0.5);//уменьшаем размеры деревьев в 2 раза, tree1.scaleYProperty().set(0.5);//умножая высоту и ширину на 0.5 tree1.setTranslateX(-110);

tree1.setTranslateY(-150);

final ImageView tree2 = new ImageView(TREE_2_IMAGE); tree2.scaleXProperty().set(0.5); tree2.scaleYProperty().set(0.5);

tree2.setTranslateX(150); tree2.setTranslateY(-120);

final ImageView tree3 = new ImageView(TREE_3_IMAGE); tree3.scaleXProperty().set(0.5); tree3.scaleYProperty().set(0.5);

tree3.setTranslateX(300); tree3.setTranslateY(-30);

final Group foreground= new Group(tree1,tree2,tree3); foreground.setEffect(new DropShadow());//Применяем к заднему фону эффект

DropShadow

final ImageView bird1 = new ImageView(BIRD_1_IMAGE); final ImageView bird2 = new ImageView(BIRD_2_IMAGE);

bird1.scaleXProperty().set(0.1);//уменьшаем размеры птицы в 10 раз, bird1.scaleYProperty().set(0.1);//умножая высоту и ширину на 0.1 bird1.setTranslateX(-610);

bird1.setTranslateY(-580);

final Group bird = new Group(bird1);

final ImageView background = new ImageView(BACKGROUNG_IMAGE); background.setEffect(new BoxBlur()); //Применяем к заднему фону эффект

BoxBlur(),

background.setOpacity(0.5); // делаем его, в конечном итоге бледным и размытым.

final Group root= new Group(background,bird,foreground);

Scene scene = new Scene(root, WIDTH, HEIGHTS);//задаем сцену с определенными размерами и заставкой

//+++++++++++++++++++++++++++++++++++++++++++++++ primaryStage.setTitle(«Game1»); //подписываем форму primaryStage.setScene(scene);

primaryStage.show();

}

/**

* @param args the command line arguments */

public static void main(String[] args) { launch(args);

}

}

Наследование

Подкласс - версия суперкласса (superclass), который наследует все переменные и методы суперкласса, плюс, прибавляет свои уникальные элементы.

//отладку сделал Егор Кресик

//Главный класс (superclass) - classA classA{

int i, j;

void showij() {

System.out.println(“i и j:”+i+” “+ j);

}

}

//Класс B - подкласс - наследник класса А class B extendsA{

int k;

void showk() { System.out.println(“k: “+ k);

}

void sum() { System.out.println(“i+j+k:” + (i+j+k));

}

}

class SimpleInheritance{

public static void main(String[] args) { AsuperOb = newA();

B subOb = new B(); superOb.i = 10; superOb.j = 20;

System.out.println(“Содержимое superOb: “); superOb.showij();

System.out.println(); subOb.i = 6; subOb.j = 7; subOb.k = 8;

System.out.println(“Содержимое of subOb: “); subOb.showij();

subOb.showk();

System.out.println(“Сумма i, j, и k в subOb:”); subOb.sum();

}

}

class bo{ double width ; double height; double depth;

double volume(){ return width*height*depth;

}

}

Попробуем с помощью наследования переописать описанный ранее класс Box: class Box {

double width; double height; double depth; Box(Box ob) {

width = ob.width; height = ob.height; depth = ob.depth;

}

Box(double w , double h , double d){ width = w;

height = h; depth = d;

}

Box( ){

width =-1; height=-1; depth =-1 ;

}

Box (double len){

width = height = depth = len;

}

double volume () {

return width * height * depth;

}

class BoxWeight extends Box { double weight;

BoxWeight(double w, double h, double d, double m) { width =w;

height = h; depth = d ; weight = m;

}

}

class DemoBoxWeight {

public void main(String[] args) {

BoxWeight mybox1 = new BoxWeight(10, 20, 15, 34.3); BoxWeight mybox2 = new BoxWeight (2, 3, 4, 0.076); double vol;

vol = mybox1.volume (); System.out.println(“Объёь mybox равен”+ vol);

System.out.println(“Вес mybox1 равен” +mybox1.weight); System.out.println();

vol = mybox2.volume(); System.out.println(“Объём mybox2 равен” + vol);

System.out.println (“Вес mybox равен” + mybox2.weight);

}

}

}

Вот еще пример (отладку сделал Анастасия Станкевич)

class BB extends bo{ double weight;

BB(double w, double h, double d, double m){ width = w;

height = h; depth = d; weight = m;

}

double density(){ // плотность

double plotnost=weight/width*height*depth; return plotnost;

}}

public class toucan {

public static void main(String[] args) {

BB putehestvo = new BB(13, 44, 44, 68.83); BB romany = new BB(0.1, 78, 78, 45.45); double volly;

double dens; volly=putehestvo.volume(); dens=putehestvo.density();

System.out.println(“Объём кирпича 1 равен “+volly); System.out.println(“Вес кирпича 1 равен “+putehestvo.weight); System.out.println(“Плотность кирпича 1 равен “+dens); System.out.println();

volly = romany.volume(); dens=romany.density();

System.out.println(“Объём кирпича 2 равен “+volly); System.out.println(“Вес кирпича 2 равен “+romany.weight); System.out.println(“Плотность кирпича 2 равен “+dens);

}

}

Апплеты

/* <html>

<applet code=”SimpleImageLoad” width=360 height=425> <param name=”img” value=”image.jpg”>

</applet>

</html>

*/

package pack1;

import java.awt.*; import java.applet.*;

public class SimpleImageLoad extendsApplet{ Image img;

public void init(){

img = getImage(getDocumentBase(), getParameter(“img”));

}

public void paint(Graphics g){ g.drawImage(img, 0, 0, this);

}

}

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

JFrame. 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]