Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2015, 22:08   #1
NadiaT9
 
Аватар для NadiaT9
 
Регистрация: 28.11.2015
Сообщений: 7
По умолчанию Помогите написать Колесо Фортуны в JavaFX

Нужно написать GUI прогамму Колесо Фортуны в JavaFx. Даже не знаю с чего начать.
NadiaT9 вне форума Ответить с цитированием
Старый 28.11.2015, 22:20   #2
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Опишите более подробно,что нужно, суть "Колесо фортуны".
spectrum988 вне форума Ответить с цитированием
Старый 28.11.2015, 22:43   #3
NadiaT9
 
Аватар для NadiaT9
 
Регистрация: 28.11.2015
Сообщений: 7
По умолчанию

Два игрока: user и компьютер. Игроки должны угадать фразу, выбранную рандомно из txt файла. Игроки делают ход по очереди. Каждый ход игрок крутит колесо и получает очки, отображенные на колесе. Если выпадает Банкрот, ход переходит к другому. Игрок имеет право назвать букву или всю фразу. Если во фразе несколько букв, названных игроком, сумма очков, выпавших на колесе умножается на количество открытых игроком букв(напрмер если игрок назвал А и открыли 3 буквы А, то выпавшая сумма умножается на 3). Сумма добавляется к общему счету игрока. Фраза должна отображаться на панели, когда игрок правильно угадывает буквы, они должны мгновенно открываться, остальные оставаться закрытыми. Банкрот обнуляет счет игрока. Первый игрок, кто угадывает всю фразу, выигрывает.
NadiaT9 вне форума Ответить с цитированием
Старый 29.11.2015, 01:58   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

NadiaT9, JavaFx - для написания 3D приложений. Будет ли колесо 3D объектом?
8Observer8 вне форума Ответить с цитированием
Старый 29.11.2015, 04:00   #5
NadiaT9
 
Аватар для NadiaT9
 
Регистрация: 28.11.2015
Сообщений: 7
По умолчанию

Нет, нужна простая 2D графика.
NadiaT9 вне форума Ответить с цитированием
Старый 29.11.2015, 06:20   #6
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Предполагаю начать нужно с
Код:
public static void main(String[] args) {
}
А вообще какой у Вас уровень знаний в JavaFX?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 29.11.2015, 08:22   #7
NadiaT9
 
Аватар для NadiaT9
 
Регистрация: 28.11.2015
Сообщений: 7
По умолчанию

Ну да, это очевидно Опыт в Java есть(первый семестр), но JavaFX только начала изучать)
NadiaT9 вне форума Ответить с цитированием
Старый 29.11.2015, 11:34   #8
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Надя, у вас есть изображение колеса? Или вам придётся самой рисовать? Если есть, то прикрепите к сообщению. И опишите, что будет видеть пользователь. Можете даже нарисовать схему расположения элементов. Я не очень преставляю, как будет выглядеть игра для простого пользователя.

Последний раз редактировалось 8Observer8; 29.11.2015 в 11:39.
8Observer8 вне форума Ответить с цитированием
Старый 29.11.2015, 21:03   #9
NadiaT9
 
Аватар для NadiaT9
 
Регистрация: 28.11.2015
Сообщений: 7
По умолчанию

Код:
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application. Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.paint.Color;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;

public class DisplayingMovingFan extends Application{
	public void start (Stage primaryStage){
		HBox hBox = new HBox(5);
		Button btPause = new Button("Pause");
		Button btResume = new Button("Resume");
		Button btReverse = new Button("Reverse");
		hBox.setAlignment(Pos.CENTER);
		hBox.getChildren().addAll(btPause, btResume,btReverse );
		
		BorderPane pane = new BorderPane();
		pane.setBottom(hBox);
		
		FanPane fan = new FanPane();
		pane.setCenter(fan);
		Timeline animation = new Timeline(new KeyFrame(Duration.millis(100), e-> fan.move()));
		animation.setCycleCount(Timeline.INDEFINITE);
		animation.play();
		
		btPause.setOnAction(e -> animation.pause());
		btResume.setOnAction(e -> animation.play());
		btReverse.setOnAction(e -> fan.reverse());
		
		
		Scene scene = new Scene (pane, 400,430);
		primaryStage.setTitle("Fan");
		primaryStage.setScene(scene);
		primaryStage.show();
		
		scene.widthProperty().addListener(e ->fan.setW(scene.getWidth()));
		scene.heightProperty().addListener(e ->fan.setW(scene.getHeight()));
	}
	public static void main (String[]args){
		launch(args);
	}
}

class FanPane extends Pane{
	private double w = 400;
	private double h = 400;
	private double radius = Math.min(w,h)*0.45;
	
	private Arc arc[] = new Arc[4];
	private double startAngle = 30;
	private Circle circle = new Circle(w/2, h/2, radius);
	
	public FanPane(){
		circle.setStroke(Color.BLACK);
		circle.setFill(Color.WHITE);
		getChildren().add(circle);
		
		for (int i = 0; i < 4; i++){
			arc[i] = new Arc(w/2, h/2, radius*0.99, radius *0.99, startAngle + i*90, 35);
			arc[i].setFill(Color.RED);
			arc[i].setType(ArcType.ROUND);
			getChildren().addAll(arc[i]);
		}
	}
	public void setValues (){
		radius = Math.min(w, h)*0.45;
		circle.setRadius(radius);
		circle.setCenterX(w/2);
		circle.setCenterY(h/2);
		
		for (int i = 0; i <4; i++){
			arc[i].setRadiusX(radius*0.99);
			arc[i].setRadiusY(radius*0.99);
			arc[i].setCenterX(w/2);
			arc[i].setCenterY(h/2);
			arc[i].setStartAngle(startAngle + i*90);
		}
	}
	private double increment = 5;
	
	public void move(){
		setStartAngle(startAngle - increment);
	}
	
	public void reverse(){
		increment = - increment;
	}
	
	public void setStartAngle(double angle){
		this.startAngle = angle;
		setValues();
	}
		
	public void setW(double w){
		this.w = w;
		setValues();
	}
	public void setH(double h){
		this.h = h;
		setValues();
	}
		
	}
Вот похожая программа вентилятора. Проблема в том, что я не знаю, как останаливать колесо и считывать выпавшие очки. И как отображать октывающиеся буквы

Последний раз редактировалось Stilet; 29.11.2015 в 21:23.
NadiaT9 вне форума Ответить с цитированием
Старый 29.11.2015, 21:09   #10
NadiaT9
 
Аватар для NadiaT9
 
Регистрация: 28.11.2015
Сообщений: 7
По умолчанию

Игра, наподобие Поле Чудес. Вот список значений на колесе

50
-50
100
Bankruptcy
-100
150
-150
200
-200
Bankruptcy
250
-250
300
-300
Bankruptcy
350
-350
400
-400
450
Bankruptcy
-450
500
-500
550
-550
Bankruptcy
600
-600
650
-650
700
Bankruptcy
-700
750
-750
800
Bankruptcy
-800
850
-850
900
-900
Bankruptcy
950
-950
1000
-1000
1Million
NadiaT9 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JAVAFX TableView _Mixer_ Общие вопросы по Java, Java SE, Kotlin 2 20.03.2014 01:23
Колесо мыши и TrackBar D!zel Общие вопросы Delphi 2 05.03.2013 15:41
[Delphi] Изобретая колесо Язь Помощь студентам 0 19.11.2011 18:32
JavaFx stck Общие вопросы по Java, Java SE, Kotlin 0 19.08.2011 12:17