/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hangman;
import java.net.URL;
import java.util.ArrayList;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
/**
*
* @author Alpha
*/
public class Hangman extends Application {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
WordHandler words = new WordHandler();
TextField word = new TextField();
String dWord = "Press reset";
Stage primaryStage;
BorderPane layout;
ArrayList<Button> btns = new ArrayList();
@Override
public void start(Stage primaryStage) {
loadHang();
word.setEditable(false);
this.primaryStage = primaryStage;
primaryStage.setTitle("Andreas Venter - Hangman");
primaryStage.setWidth(300);
primaryStage.setHeight(500);
primaryStage.setResizable(false);
StackPane root = new StackPane();
BorderPane layout = new BorderPane();
this.layout = layout;
layout.setCenter(getHang(level));
VBox hBottom = new VBox();
hBottom.setPadding(new Insets(15, 12, 15, 12));
hBottom.setSpacing(10);
hBottom.setStyle("-fx-background-color: #336699");
HBox vTop = new HBox();
hBottom.setPadding(new Insets(15, 12, 15, 12));
hBottom.setSpacing(10);
hBottom.setStyle("-fx-background-color: #336699");
layout.setBottom(hBottom);
HBox vCenter = new HBox();
hBottom.setPadding(new Insets(15, 12, 15, 12));
hBottom.setSpacing(10);
hBottom.setStyle("-fx-background-color: #336699");
HBox vBottom = new HBox();
hBottom.setPadding(new Insets(15, 12, 15, 12));
hBottom.setSpacing(10);
hBottom.setStyle("-fx-background-color: #336699");
hBottom.getChildren().add(vTop);
hBottom.getChildren().add(vCenter);
hBottom.getChildren().add(vBottom);
layout.setBottom(hBottom);
HBox hTop = new HBox();
hTop.setPadding(new Insets(15, 12, 15, 12));
hTop.setSpacing(10);
hTop.setStyle("-fx-background-color: #FFFFFF");
layout.setTop(hTop);
Button btn1 = new Button();
btn1.setText("Reset");
btn1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
processBtn(event);
}
});
hTop.getChildren().add(btn1);
word.setStyle("-fx-background-color: #C0C0C0");
word.setText("Press Reset");
//word.setFont(new Font(24));
hTop.getChildren().add(word);
for (int x = 0; x <= 9; x++) {
Button btn = new Button();
int y = 65 + x;
char c = (char) y;
btn.setText(c + "");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
processBtn(event);
}
});
vTop.getChildren().add(btn);
btns.add(btn);
}
for (int x = 0; x <= 8; x++) {
Button btn = new Button();
int y = 65 + 9 + x;
char c = (char) y;
btn.setText(c + "");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
processBtn(event);
}
});
vCenter.getChildren().add(btn);
btns.add(btn);
}
for (int x = 0; x <= 8; x++) {
Button btn = new Button();
int y = 65 + 9 + 8 + x;
char c = (char) y;
btn.setText(c + "");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
processBtn(event);
}
});
vBottom.getChildren().add(btn);
btns.add(btn);
}
root.getChildren().add(layout);
primaryStage.setScene(new Scene(root, 300, 250));
for (Button e : btns) {
e.setDisable(true);
}
primaryStage.show();
}
void processBtn(ActionEvent event) {
Button btn = (Button) event.getSource();
String letter = btn.getText();
switch (letter) {
case "Reset":
reset();
break;
case "Q":
processLetter(letter);
btn.setDisable(true);
break;
case "W":
processLetter(letter);
btn.setDisable(true);
break;
case "E":
processLetter(letter);
btn.setDisable(true);
break;
case "R":
processLetter(letter);
btn.setDisable(true);
break;
case "T":
processLetter(letter);
btn.setDisable(true);
break;
case "Y":
processLetter(letter);
btn.setDisable(true);
break;
case "U":
processLetter(letter);
btn.setDisable(true);
break;
case "I":
processLetter(letter);
btn.setDisable(true);
break;
case "O":
processLetter(letter);
btn.setDisable(true);
break;
case "P":
processLetter(letter);
btn.setDisable(true);
break;
case "A":
processLetter(letter);
btn.setDisable(true);
break;
case "S":
processLetter(letter);
btn.setDisable(true);
break;
case "D":
processLetter(letter);
btn.setDisable(true);
break;
case "F":
processLetter(letter);
btn.setDisable(true);
break;
case "G":
processLetter(letter);
btn.setDisable(true);
break;
case "H":
processLetter(letter);
btn.setDisable(true);
break;
case "J":
processLetter(letter);
btn.setDisable(true);
break;
case "K":
processLetter(letter);
btn.setDisable(true);
break;
case "L":
processLetter(letter);
btn.setDisable(true);
break;
case "Z":
processLetter(letter);
btn.setDisable(true);
break;
case "X":
processLetter(letter);
btn.setDisable(true);
break;
case "C":
processLetter(letter);
btn.setDisable(true);
break;
case "V":
processLetter(letter);
btn.setDisable(true);
break;
case "B":
processLetter(letter);
btn.setDisable(true);
break;
case "N":
processLetter(letter);
btn.setDisable(true);
break;
case "M":
processLetter(letter);
btn.setDisable(true);
break;
}
if (level > 9) {
for (Button e : btns) {
e.setDisable(true);
word.setText("Game Over");
}
}
}
ImageView getHang(int level) {
ImageView v = new ImageView();
v.setStyle("-fx-background-color: #FFFFFF");
v.setImage(hangs[level]);
v.setFitWidth(200);
v.setFitHeight(200);
v.setPreserveRatio(true);
return v;
}
void reset() {
level = 0;
for (Button e : btns)
{
e.setDisable(false);
}
dWord = words.getWord(7);
//System.out.println(dWord);
String t = "";
for (int x = 0; x <= dWord.length(); x++)
{
t.concat("-");
}
word.setText(t);
layout.setCenter(getHang(level));
}
void processLetter(String letter) {
while (true) {
int pos;
try {
pos = dWord.indexOf(letter);
} catch (Exception e) {
level++;
layout.setCenter(getHang(level));
break;
}
if (pos == -1) {
level++;
layout.setCenter(getHang(level));
break;
}
dWord.replaceFirst(letter, "-");
char lets[] = word.getText().toCharArray();
lets[pos] = letter.charAt(0);
word.setText(lets.toString());
}
}
void loadHang() {
for (int x = 0; x < 11; x++) {
Image img = new Image(getClass().getResourceAsStream("/resources/hanging/hang" + x + ".gif"));
hangs[x] = img;
}
}
int level = 0;
private Image hangs[] = new Image[11];
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hangman;
import java.util.ArrayList;
/**
*
* @author aventer
*/
public class WordHandler {
ArrayList<String> words = new ArrayList<String>();
public WordHandler() {
loadWords();
}
public String getWord(int length) {
ArrayList<String> available = new ArrayList<String>();
for (String e : words) {
if (e.length() == length) {
available.add(e);
}
}
int randomNum = 0 + (int) (Math.random() * available.size());
return available.get(randomNum);
}
private void loadWords() {
words.add("physical");
words.add("whistle");
words.add("solid");
words.add("hospital");
words.add("driving");
words.add("carriage");
}
}

New Topic/Question
Reply



MultiQuote





|