Skip to content
Open

ok #40

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions AutomataGUI/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions AutomataGUI/.idea/artifacts/AutomataGUI_jar.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions AutomataGUI/.idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions AutomataGUI/.idea/description.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions AutomataGUI/.idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions AutomataGUI/.idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions AutomataGUI/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions AutomataGUI/.idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

125 changes: 125 additions & 0 deletions AutomataGUI/.idea/uiDesigner.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions AutomataGUI/.idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions AutomataGUI/AutomataGUI.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/resource" type="java-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Binary file added AutomataGUI/AutomataGUI.jar
Binary file not shown.
3 changes: 3 additions & 0 deletions AutomataGUI/src/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Manifest-Version: 1.0
Main-Class: sample.Main

113 changes: 113 additions & 0 deletions AutomataGUI/src/sample/Automata.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
package sample;

import java.util.ArrayList;
enum States //текущее состояние автомата;
{OFF, WAIT, ACCEPT, CHECK, COOK}

public class Automata {
private float cash; //текущея сумма
private States state;//начальное состояние

public Automata() {
this.cash = 0;
this.state = States.OFF;//начальное состояние
}

public States getState() {
return state;
}

public void on() { // включение автомата;
if (state == States.OFF ) {
state = States.WAIT;
}
}

public void off() { //выключение автомата;
if (state == States.WAIT ) {
state = States.OFF;
}
}

public ArrayList[] getMenu() { // отображение меню с напитками и ценами для пользователя;
ArrayList<String> menuItem = new ArrayList();
ArrayList<Float> menuItemPrice = new ArrayList();
menuItem.add("Espresso");
menuItemPrice.add(35f);
menuItem.add("Cappuccino");
menuItemPrice.add(45f);
menuItem.add("Green Tea");
menuItemPrice.add(15f);
menuItem.add("Black Tea");
menuItemPrice.add(15f);
menuItem.add("Hot Chocolate");
menuItemPrice.add(30f);
menuItem.add("Orange juice");
menuItemPrice.add(60f);
ArrayList[] fullMenu = {menuItem, menuItemPrice};
return fullMenu;
}

public void coin( float money ) { //занесение денег на счёт пользователем;
if(state == States.WAIT || state == States.ACCEPT){
state = States.ACCEPT;
cash += money;
}
}

public float getCash() { // геттер к закрытой переменной cash
return cash;
}

private boolean check(float price) { // проверка наличия необходимой суммы;
return (state == States.CHECK) && (cash >= price);
}

public float cancel() { // отмена сеанса обслуживания пользователем;
float change = 0;
if (state == States.CHECK || state == States.ACCEPT){
state = States.WAIT;
change = cash;
cash = 0;
}
return change;
}
private void cook(int itemNumber) { // имитация процесса приготовления напитка;
if ( state == States.CHECK){
state = States.COOK;
}
}

private void finish() { // завершение обслуживания пользователя.
if (state == States.COOK) {
state = States.WAIT;
System.out.println("Take your drink, man");
}
}

public float choice (int itemNumber) { // выбор напитка пользователем;
float change = 0;
try {
if (state == States.ACCEPT) {
state = States.CHECK;
ArrayList[] menu = getMenu();
float price = (Float) menu[1].get(itemNumber);
if (check(price)) {
change = cash -= price;
cash = 0;
cook(itemNumber);
finish();
}
else {
change = cancel();
}
}
}
catch (IndexOutOfBoundsException e1){
System.out.println("I don't cook this, try again! " + e1);
change = cancel();
System.out.println("Take the change: " + change);
}
return change;
}
}
Loading