J'ai essayé de faire un jeu simple avec Javafx ① "Trouvons le jeu du bonheur" (version inachevée ②)

J'ai fait un jeu simple avec Javafx ①

"Trouvons le jeu du bonheur" (inachevé) ②

happy_unhappy_game2.gif

import javafx.ui.*;
import javafx.ui.canvas.*;
import java.util.Date;
import java.lang.Math;
import java.lang.System;
import timer.Sound;

public class Timer {
private attribute elapsed: Number;
public attribute seconds: Number;
public attribute minutes: Integer;
public attribute hours: Integer;
public attribute count: Number;
public attribute startTime: Number;
public attribute elapsedTime: Number;
public attribute remainingTime: Number;
public attribute running: Boolean;
public attribute alarmEnabled: Boolean;
}

attribute Timer.elapsed = bind if running
then [1..10] dur 1000 linear while running continue if running
else 0;

trigger on Timer.elapsed = value {
var now = new Date();
elapsedTime = now.getTime() / 1000 - startTime;
remainingTime = count - elapsedTime;
running = if (elapsedTime >= count) then false else running;
seconds = remainingTime % 60;
minutes = ((Integer)remainingTime / 60) % 60;
hours = ((Integer)remainingTime / 60) / 60;
hours = if (elapsedTime >= count) then 0 else hours;
minutes = if (elapsedTime >= count) then 0 else minutes;
seconds = if (elapsedTime >= count) then 0 else seconds;
}

trigger on Timer.running = value {
if ((alarmEnabled == true) and (remainingTime <= 0)) {
alarmEnabled = false;
Sound.alarm();
}
}


Frame {
var t = Timer {seconds:0, minutes:0, hours:0, count:0,
running:false, alarmEnabled:false}
title: "Alarme JavaFX"
height: 350
width: 215
onClose: operation() {System.exit(0);}
content: BorderPanel {
center: Canvas {
content:
Group {
var font = new Font("Dialog", "PLAIN", 15)
var secs = bind t.seconds
var mins = bind t.minutes + secs / 60
var hrs = bind t.hours + mins / 60
content:
[Rect {
height: 400
width: 225
fill: Color {red:0.9, green:0.9, blue:0.9}
},
Circle {cx: 100, cy: 100, radius: 80, fill: white, stroke: black, strokeWidth: 1},
Group {
transform: translate(100, 100)
content: foreach (i in [1..12])
Text {
var radians = Math.toRadians(30 * i - 90)
transform: [translate((70 * Math.cos(radians)), (70 * Math.sin(radians)))]
content: "{i}"
valign: MIDDLE
halign: CENTER
}
},
Group {
transform: translate(100, 100)
var hourHand =
Line {x1: 0, y1: 0, x2: 0, y2: -35,
strokeWidth: 4, stroke: black
transform: bind rotate((hrs * 30), 0, 0)
}
var minuteHand =
Line {x1: 0, y1: 0, x2: 0, y2: -55,
strokeWidth: 2, stroke: blue,
transform: bind rotate((mins * 6), 0, 0)
}
var secondHand =
Line {x1: 0, y1: 0, x2: 0, y2: -75,
strokeWidth: 1, stroke: red,
transform: bind rotate((t.seconds * 6), 0, 0)
}
content: [hourHand, minuteHand, secondHand]
},
Circle {cx: 100, cy: 100, radius: 3, fill: black, stroke: black }]
},
}
bottom: Box {
background: white
orientation: VERTICAL
content:
[FlowPanel {
content:
[Spinner {
enabled: bind not(t.running)
min: 0
max: 23
value: bind t.hours
},
SimpleLabel {
enabled: bind not(t.running)
text: "Temps"
}]
},
FlowPanel {
content:
[Spinner {
enabled: bind not(t.running)
min: 0
max: 59
value: bind t.minutes
},
SimpleLabel {
enabled: bind not(t.running)
text: "Minutes"
}]
},
FlowPanel {
content:
[Spinner {
enabled: bind not(t.running)
min: 0
max: 59
value: bind t.seconds
},
SimpleLabel {
enabled: bind not(t.running)
text: "Secondes"
}]
},
FlowPanel {
content:
[Button {
enabled: bind t.running
text: "Arrêtez"
action: bind operation() {
t.running = false;
}
},
RigidArea {
width: 20
},
Button {
enabled: bind not(t.running)
text: "début"
action: operation() {
var date = new Date();
t.count = t.hours * 3600 + t.minutes * 60 + t.seconds;
t.startTime = date.getTime() / 1000;
t.remainingTime = t.count;
if (t.count <> 0) {
t.alarmEnabled = true;
t.running = true;
}
}
}]
}]
}
}
visible: true
}

Vue d'ensemble et défis futurs

Amélioration de la transition d'écran, qui était l'amélioration précédente. De plus, une barre d'état a été ajoutée pour introduire une limite de temps. J'avais l'intention de le faire, mais je ne savais pas comment agir à la fin, J'ai passé une demi-journée à essayer et à faire des erreurs, mais c'était difficile, alors je suis allé au suivant. Je serai de retour dans un moment. De plus, j'ai eu du mal parce que je ne pouvais pas fixer la barre d'état dans une position fixe. J'ai essayé d'utiliser AnchorPane et BorderPane, mais pour une raison quelconque, cela ne fonctionne pas. Je voudrais également améliorer cela à l'avenir.

Recommended Posts

J'ai essayé de faire un jeu simple avec Javafx ① "Trouvons le jeu du bonheur" (version inachevée ②)
J'ai essayé de faire un jeu simple avec Javafx ① "Trouvons le jeu du bonheur" (inachevé)
[Débutant] Essayez de créer un jeu RPG simple avec Java ①
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
[iOS] J'ai essayé de créer une application de traitement de type insta avec Swift
J'ai essayé de créer une API Web qui se connecte à DB avec Quarkus
J'ai essayé de faire une authentification de base avec Java
java j'ai essayé de casser un simple bloc
Un simple jeu de ciseaux-papier-pierre avec JavaFX et SceneBuilder
J'ai essayé de casser le bloc avec java (1)
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part3 ~ Practice ~
[Android] J'ai créé un écran de liste de matériaux avec ListView + Bottom Sheet
J'ai essayé de créer une fonction de connexion avec Java
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
J'ai essayé de moderniser une application Java EE avec OpenShift.
[Rails] J'ai essayé de créer une mini application avec FullCalendar
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
Faisons une API simple avec EC2 + RDS + Spring boot ①
J'ai créé un client RESAS-API en Java
J'ai essayé de créer un environnement de développement padrino avec Docker
[Java] J'ai essayé de créer un jeu Janken que les débutants peuvent exécuter sur la console
J'ai essayé de créer une application cartographique simple dans Android Studio
Je veux créer un bouton avec un saut de ligne avec link_to [Note]
Essayez de faire un simple rappel
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "J'ai essayé de créer une fenêtre avec Bootstrap 3"
J'ai essayé d'illuminer le sapin de Noël dans un jeu de la vie
Créer un outil de diaporama avec JavaFX
[Unity] J'ai essayé de créer un plug-in natif UniNWPathMonitor en utilisant NWPathMonitor
J'ai essayé d'interagir avec Java
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part2 ~ Façon basique d'écrire Dash ~
J'ai essayé de créer une application simple en utilisant Dockder + Rails Scaffold
J'ai essayé de créer une application Android avec MVC maintenant (Java)
Je voulais faciliter la programmation JavaFX avec Spring Framework
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
Faites un jeu de frappe avec ruby
J'ai essayé de créer une application d'apprentissage automatique avec Dash (+ Docker) part1 ~ Construction de l'environnement et vérification du fonctionnement ~
J'ai essayé de créer une classe parent d'objet de valeur dans Ruby
J'ai essayé de faire une sauvegarde automatique avec plus agréable + PostgreSQL + SSL + docker
Un débutant Java a essayé de créer une application Web simple à l'aide de Spring Boot
J'ai créé un bot de transaction d'arbitrage de monnaie virtuelle et essayé de gagner de l'argent
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
Faisons une carte de Noël avec Processing!
J'ai essayé de démarrer avec Web Assembly
J'ai essayé de jouer un peu avec BottomNavigationView ①
[docker] [nginx] Créer un ALB simple avec nginx
J'ai créé un programme qui recherche la classe cible à partir du processus surchargé avec Java
Faisons une application TODO avec Java 2 Je veux créer un modèle avec Spring Initializr et créer Hello world
[Java] J'ai installé JDBC et essayé de me connecter avec servlet + MySQL. (Il existe une version utilisant DAO / Bean)
[LINE @] J'ai essayé de créer un BOT de conversion de calendrier occidental de calendrier japonais [API de messagerie]
J'ai essayé de créer un portefeuille avec AWS, Docker, CircleCI, Laravel [avec lien de référence]
J'ai essayé d'implémenter une fonction équivalente à Felica Lite avec HCE-F d'Android
Une histoire où j'ai essayé de faire une vidéo en liant Traitement et Resolume
[Java] J'ai essayé de me connecter en utilisant le pool de connexion avec Servlet (tomcat) & MySQL & Java
Rails6 Je veux créer un tableau de valeurs avec une case à cocher