Repository navigation
Expand file tree
/
Copy pathTicTacToeCommand.java
More file actions
102 lines (80 loc) · 3.06 KB
/
Copy pathTicTacToeCommand.java
File metadata and controls
102 lines (80 loc) · 3.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// A simple bot made in JDA 4 for HackUNT
// NOTE (for Eclipse users at least): MUST TERMINATE PROGRAM after running it to prevent glitches
package HackUNT.Discord.bot;
import java.util.concurrent.TimeUnit;
import com.jagrosh.jdautilities.command.Command;
import com.jagrosh.jdautilities.command.CommandEvent;
import com.jagrosh.jdautilities.commons.waiter.EventWaiter;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
public class TicTacToeCommand extends Command {
private static User player1;
private static User player2;
private final EventWaiter waiter;
public TicTacToeCommand(EventWaiter waiter) {
this.waiter = waiter;
this.name = "tictactoe";
this.aliases = new String[] { "ttt" };
String space = " ";
this.help = "Play Tic Tac Toe against your friends!\n" + space + "Command Syntax: \"!tictactoe @user\"";
}
public void runGame() {
}
@Override
protected void execute(CommandEvent event) {
player1 = event.getMessage().getAuthor();
try {
player2 = event.getMessage().getMentionedUsers().get(0);
}
catch (Exception e) {
event.reply("ERROR: Must specify a user to play against!");
}
TicTacToe game = new TicTacToe();
boolean gameOver = (game.getStatus() == 4) || (game.getStatus() == 5) || (game.getStatus() == 3);
synchronized () {
while (!gameOver && player2 != null) {
String player1id = player1.getId();
String player2id = player2.getId();
if (game.getStatus() == 1) {
event.reply("<@" + player1id + ">, it's your turn!");
event.reply("Enter in a row and column (format r,c):");
waiter.waitForEvent(MessageReceivedEvent.class,
e -> e.getAuthor().equals(event.getAuthor()) && e.getChannel().equals(event.getChannel()),
e -> {
try {
int row = Integer.parseInt(e.getMessage().getContentRaw().substring(0, 1));
int col = Integer.parseInt(e.getMessage().getContentRaw().substring(2));
game.placePiece(row, col);
String board = game.printBoard();
event.reply(board);
}
catch (Exception ex) {
event.reply("ERROR: Invalid Format!");
}
}, 1L, TimeUnit.MINUTES, () -> event.reply("You Took too long!"));
}
else {
event.reply("<@" + player2id + ">, it's your turn!");
event.reply("Enter in a row and column (format r,c):");
waiter.waitForEvent(MessageReceivedEvent.class,
e -> e.getAuthor().equals(player2) && e.getChannel().equals(event.getChannel()), e -> {
try {
int row = Integer.parseInt(e.getMessage().getContentRaw().substring(0, 1));
int col = Integer.parseInt(e.getMessage().getContentRaw().substring(2));
game.placePiece(row, col);
String board = game.printBoard();
event.reply(board);
}
catch (Exception ex) {
event.reply("ERROR: Invalid Format!");
}
}, 1L, TimeUnit.MINUTES, () -> event.reply("You Took too long!"));
}
game.winner(game.getStatus());
if (gameOver) {
}
game.changeTurns();
}
}
}
}