Реализация 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.2013Java 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