Реализация XML-RPC протокола на примере многопользовательской игры

Определение принципа вызова удаленных процедур. Проектирование приложения в виде многопользовательской игры "Крестики-нолики" как пример использования стандарта XML-RPC для взаимодействия устройств по сети. Реализация протокола XML-RPC на языке Java.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 17.08.2020
Размер файла 438,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

String s = user.getTurn();

if (s.equals(sym)) {

return;

}

int i = user.getField();

buttons.get(i).setText(s);

if(!user.getPlayable()){

label.setText("Game Over");

disableAllButtons();

quitButton.setDisable(false);

startButton.setDisable(false);

updButton.setDisable(true);

symFill();

setWinner();

return;

}

if(user.getDraw()){

label.setText("Draw!");

disableAllButtons();

quitButton.setDisable(false);

startButton.setDisable(false);

symFill();

return;

}

label.setText("Your turn");

symFill();

enableAllButtons();

updButton.setDisable(true);

}

public void setWinner() throws IOException {

String s = user.getTurn();

if(s.equals(sym)){

label.setText("You win!!!");

}else {

label.setText("You lose...");

}

}

@FXML

public void handleButtonAction(ActionEvent event) throws IOException {

for (int i = 0; i < buttons.size(); i++) {

if (buttons.get(i).getText().isEmpty() && buttons.get(i) == event.getSource()) {

buttons.get(i).setText(sym);

symFill();

if (!user.setField(i, sym)) {

label.setText("Game Over");

disableAllButtons();

quitButton.setDisable(false);

startButton.setDisable(false);

setWinner();

return;

}

if(user.getDraw()){

label.setText("Draw!");

disableAllButtons();

quitButton.setDisable(false);

startButton.setDisable(false);

return;

}

label.setText("wait");

disableAllButtons();

updButton.setDisable(false);

}

}

}

private void disableAllButtons() {

for (int i = 0; i < buttons.size(); i++) {

buttons.get(i).setDisable(true);

}

}

private void enableAllButtons() {

for (int i = 0; i < buttons.size(); i++) {

buttons.get(i).setDisable(false);

}

}

private void clearAllButtons() {

for (int i = 0; i < buttons.size(); i++) {

buttons.get(i).setText("");

}

}

private void symFill() {

for (int i = 0; i < buttons.size(); i++) {

if (buttons.get(i).getText().equals("X")) {

buttons.get(i).setTextFill(Color.BLUE);

} else if (buttons.get(i).getText().equals("O")) {

buttons.get(i).setTextFill(Color.RED);

}

}

}

}

Main.java

package client.view;

public class Main extends Application {

private Stage primaryStage;

private AnchorPane rootLayout;

@Override

public void start(Stage primaryStage) {

this.primaryStage = primaryStage;

this.primaryStage.setTitle("TicTacToeApp");

try {

FXMLLoader loader = new FXMLLoader();

loader.setLocation(Main.class.getResource("Field.fxml"));
rootLayout = loader.load();

Scene scene = new Scene(rootLayout);

primaryStage.setScene(scene);

primaryStage.show();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args){

launch(args);

}

}

Field.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.*?>

<?import javafx.scene.control.*?>

<?import javafx.scene.layout.*?>

<?import javafx.scene.text.*?>

<AnchorPane prefHeight="800.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="client.view.Field">

<children>

<GridPane layoutY="200.0" prefHeight="600.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0">

<columnConstraints>

<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />

<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />

<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />

</columnConstraints>

<rowConstraints>

<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />

<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />

<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />

</rowConstraints>

<children>

<Button fx:id="button11" disable="true" mnemonicParsing="false" onAction="#handleButtonAction" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="0" GridPane.rowIndex="0">

<GridPane.margin>

<Insets />

</GridPane.margin>

<font>

<Font name="Segoe Print" size="74.0" />

</font></Button>

<Button fx:id="button12" disable="true" mnemonicParsing="false" onAction="#handleButtonAction" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="0">

<font>

<Font name="Segoe Print" size="74.0" />

</font></Button>

<Button fx:id="button13" disable="true" mnemonicParsing="false" onAction="#handleButtonAction" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="0">

<font>

<Font name="Segoe Print" size="74.0" />

</font></Button>

<Button fx:id="button21" disable="true" mnemonicParsing="false" onAction="#handleButtonAction" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="0" GridPane.rowIndex="1">

<font>

<Font name="Segoe Print" size="74.0" />

</font></Button>

<Button fx:id="button22" disable="true" mnemonicParsing="false" onAction="#handleButtonAction" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1">

<font>

<Font name="Segoe Print" size="74.0" />

</font></Button>

<Button fx:id="button23" disable="true" mnemonicParsing="false" onAction="#handleButtonAction" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="1">

<font>

<Font name="Segoe Print" size="74.0" />

</font></Button>

<Button fx:id="button31" disable="true" mnemonicParsing="false" onAction="#handleButtonAction" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="0" GridPane.rowIndex="2">

<font>

<Font name="Segoe Print" size="74.0" />

</font></Button>

<Button fx:id="button32" disable="true" mnemonicParsing="false" onAction="#handleButtonAction" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="2">

<font>

<Font name="Segoe Print" size="74.0" />

</font></Button>

<Button fx:id="button33" disable="true" mnemonicParsing="false" onAction="#handleButtonAction" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="2">

<font>

<Font name="Segoe Print" size="74.0" />

</font></Button>

</children>

</GridPane>

<Label fx:id="label" alignment="CENTER" contentDisplay="CENTER" prefHeight="200.0" prefWidth="447.0" text="Press Start" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="153.0" AnchorPane.topAnchor="0.0">

<font>

<Font name="Playbill" size="96.0" />

</font>

</Label>

<Button fx:id="startButton" layoutX="457.0" layoutY="14.0" mnemonicParsing="false" onAction="#handleStartAction" prefHeight="52.0" prefWidth="129.0" text="Start" />

<Button fx:id="quitButton" layoutX="457.0" layoutY="138.0" mnemonicParsing="false" onAction="#handleQuitAction" prefHeight="52.0" prefWidth="129.0" text="Quit" />

<Button fx:id="updButton" disable="true" layoutX="457.0" layoutY="74.0" mnemonicParsing="false" onAction="#handleUpdAction" prefHeight="52.0" prefWidth="129.0" text="upd" />

</children>

</AnchorPane>

Размещено на Allbest.ru

...

Подобные документы

  • Знакомство с интерфейсом пользователя и сценарием использования программы игры в крестики и нолики. Функциональные и нефункциональные требования для персонального компьютера. Исключительные ситуации и реакция программы. Пример кода игры и комментарии.

    курсовая работа [236,5 K], добавлен 27.01.2014

  • Общая характеристика языков программирования. Краткий обзор C, C++, Java, PHP, Python, Delphi и Visual Basic. Процесс разработки программы игра "Крестики и нолики" с помощью AppWizard. Компиляция и компоновка модулей, определение интерфейса приложения.

    курсовая работа [2,5 M], добавлен 27.05.2014

  • Разработка популярной развлекательной игры крестики-нолики. Возможность играть с компьютером, который играет согласно созданному алгоритму. Новые возможности Visual Studio. Легкое усвоение программы. Удобный интерфейс - "визитная карточка" приложения.

    курсовая работа [74,6 K], добавлен 20.12.2009

  • Разработка и создание игры "Змейка". Использование динамически-активных принципов языка Java. Графические объекты программы. Описание игры, правила, теоретические сведения. Классы приложения. Типы данных. Реализация. Метод. Объект. Блок-схема игры.

    курсовая работа [12,4 K], добавлен 18.06.2008

  • Разработка программы логической игры в "крестики-нолики" пять в ряд на поле размера 15х15 клеток с применением графики на языке Pascal с использованием объектно-ориентированного программирования. Структура алгоритма программы и описание ее работы.

    курсовая работа [821,5 K], добавлен 13.02.2012

  • Разработка консольного приложения: описание и сценарий использования программы, интерфейс пользователя. Поэтапное описание создание кода компьютерной игры "Крестики нолики". Функциональные и нефункциональные требования, описание исключительных ситуаций.

    методичка [819,6 K], добавлен 12.05.2013

  • Разработка программы игры в крестики-нолики. Примеры игровой ситуации на игровом поле. Описание входных и выходных данных, переменных и функций программы. Реализация алгоритма работы программы на языке C++. Текст программы и примеры ее выполнения.

    курсовая работа [352,8 K], добавлен 14.04.2011

  • История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

    курсовая работа [168,1 K], добавлен 27.09.2013

  • Проект программы "Крестики-нолики". Блок-схема алгоритма. Описание работы программного продукта. Инструкция по инсталляции. Инструкция программисту, возможность доработки с целью упрощения исполняемых кодов. Инструкция по проверке и тестированию.

    курсовая работа [235,8 K], добавлен 05.12.2009

  • Разработка аналога игры "Крестики-нолики", где игроки выбирают размер поля. Правила игры. Интерфейс программы. Главная функция main. Класс XO. Метод вывода поля и хода игроков. Методы поиска крестиков, ноликов. Методы проверки выигрышных ситуаций игроков.

    курсовая работа [281,5 K], добавлен 30.01.2018

  • Средства выделения и освобождения памяти. Динамические структуры данных. Связные линейные списки и их машинное представление. Структура одно- и двухсвязного списка. Реализация операций над связными линейными списками. Разработка программы на языке С++.

    курсовая работа [944,7 K], добавлен 14.03.2015

  • Разработка алгоритма, выполняющего поиск наилучшего решения на каждый ход в игре "крестики-нолики" (используя минимальный алгоритм). Обоснование выбора программных средств для решения задачи. Блок-схема интеллектуального алгоритма реализации программы.

    контрольная работа [380,0 K], добавлен 28.04.2014

  • Сетевые возможности языков программирования. Преимущества использования Java-апплетов. Классы, входящие в состав библиотеки java.awt. Создание пользовательского интерфейса. Сокетное соединение с сервером. Графика в Java. Значения составляющих цвета.

    курсовая работа [508,1 K], добавлен 10.11.2014

  • Описание существующих технологий, поддерживающих концепцию распределенных объектных систем. Особенности технологии DCOM. Разработка параметров приложения. Выбор инструмента разработки и его обоснование. Схема взаимодействия для локального приложения.

    курсовая работа [769,8 K], добавлен 05.01.2013

  • Java RMI как тип удаленного вызова процедур, независимого от сети, основные шаги работы с ним и назначение. Сравнение распределенных и нераспределенных Java программ. Уровни архитектуры, заглушки и скелета, удаленных ссылок и транспорта Java RMI.

    лабораторная работа [24,6 K], добавлен 30.06.2009

  • Анализ игровых жанров для мобильных устройств и целевой аудитории. Разработка концепции игрового приложения, основной механики, меню и интерфейса игры. Описание переменных скриптов. Реализация выбора цели и стрельбы. Настройка работоспособности игры.

    дипломная работа [1,4 M], добавлен 19.01.2017

  • Программный продукт для игры "Крестики-нолики". Описание пользовательского интерфейса. Факт базы данных, определяющий состояние счёта. Предикат изменяющий состояние игрового процесса и подсчитывающий количество занятых ячеек поля. Исходный код программы.

    курсовая работа [34,6 K], добавлен 19.05.2014

  • Функция протокола и структура пакета разрабатываемого протокола. Длина полей заголовка. Расчет длины буфера на приеме в зависимости от длины пакета и допустимой задержки. Алгоритмы обработки данных на приеме и передаче. Программная реализация протокола.

    курсовая работа [1,0 M], добавлен 18.05.2014

  • Разработка игрового проекта на игровом движке Unity 3D в среде программирования MS Visual Studio 2017. Блок-схема алгоритма работы приема сообщений с сервера на клиенте с упрощенным описанием выполняемых команд. Реализация пользовательского интерфейса.

    курсовая работа [1,5 M], добавлен 10.07.2017

  • Общая характеристика сетевой игры с несколькими клиентами в программной среде MS Visual Studio 2010 на языке программирования C++ с использованием функций работы с сокетами. Реализация системного сервиса, разработки интерфейса, алгоритм его тестирования.

    курсовая работа [495,3 K], добавлен 06.01.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.