Skip to content

Instantly share code, notes, and snippets.

@flawnn
Created September 12, 2017 19:37
Show Gist options
  • Save flawnn/f4e7783c53b06a5e9944b6039f8f4b24 to your computer and use it in GitHub Desktop.
Save flawnn/f4e7783c53b06a5e9944b6039f8f4b24 to your computer and use it in GitHub Desktop.
package commands;
import listeners.ReactionListener;
import net.dv8tion.jda.core.OnlineStatus;
import net.dv8tion.jda.core.entities.*;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.events.message.guild.react.GuildMessageReactionAddEvent;
import java.util.ArrayList;
import java.util.List;
import static core.Main.te;
/**
* Creation of Flawn
*/
public class TicTacToeT implements Runnable {
String[] args;
MessageReceivedEvent event;
public TicTacToeT(String[] args, MessageReceivedEvent event) {
this.args = args;
this.event = event;
}
@Override
public void run() {
String playername = args[0];
if (event.getChannelType() == ChannelType.PRIVATE) {
event.getChannel().sendMessage("Please do that in a Guildchannel!").queue();
} else {
List<Member> pl1 = event.getGuild().getMembersByEffectiveName(playername, true);
if (pl1.isEmpty()) {
event.getChannel().sendMessage("This Player isn't in this Guild!").queue();
} else {
Member Player1 = pl1.get(0);
if (pl1.get(0).getOnlineStatus() == OnlineStatus.ONLINE) {
if(pl1.get(0).getUser().getId().equals(event.getMember().getUser().getId())){
event.getChannel().sendMessage("You can't play with yourself! "+ event.getGuild().getEmotesByName("trollface", true).get(0).getAsMention() ).queue();
} else {
cmdTicTacToe.running = true;
event.getChannel().sendMessage("Lets get this Game started!").queue();
int spielerzaehler = 0;
int Feld[][] = new int[3][3];
ArrayList<Integer> f = new ArrayList<Integer>();
f.add(1);
f.add(2);
f.add(3);
f.add(4);
f.add(5);
f.add(6);
f.add(7);
f.add(8);
f.add(9);
boolean first = true;
while (spielerzaehler <= 8) {
String s = sfZeichen(Feld);
Message msg = event.getChannel().sendMessage(s).complete();
String msgID = msg.getId();
Moeglich(f, msg);
ReactionListener rl = new ReactionListener(event.getMember(), Player1, msgID, first);
event.getJDA().addEventListener(rl);
event.getChannel().sendMessage("Bitte reacte nun, " + (first ? event.getMember().getEffectiveName() : Player1.getEffectiveName()) + "! " + (first ? "Dein Zeichen ist: X" : "Dein Zeichen ist: O")).queue();
try {
te.await();
event.getJDA().removeEventListener(rl);
} catch (InterruptedException e) {
e.printStackTrace();
}
GuildMessageReactionAddEvent gmrae = rl.getEvent();
int number = emojiParser(gmrae.getReactionEmote().getName());
f.remove(new Integer(number));
Feld = TicField(Feld, number, (first ? 1 : 2));
spielerzaehler++;
int is = spielerGewonnen(Feld, spielerzaehler);
if (is == 1) {
String sb = sfZeichen(Feld);
event.getChannel().sendMessage(sb).queue();
event.getChannel().sendMessage(event.getMember().getEffectiveName() + " hat gewonnen!" + event.getGuild().getEmotesByName("glasses", true).get(0).getAsMention()).queue();
spielerzaehler = 10;
} else if (is == 2) {
String sb = sfZeichen(Feld);
event.getChannel().sendMessage(sb).queue();
event.getChannel().sendMessage(Player1.getEffectiveName() + " hat gewonnen!" + event.getGuild().getEmotesByName("glasses", true).get(0).getAsMention()).queue();
spielerzaehler = 10;
} else if (is == 3) {
String sb = sfZeichen(Feld);
event.getChannel().sendMessage(sb).queue();
event.getChannel().sendMessage("Niemand hat gewonnen! :(").queue();
}
first = !first;
}
cmdTicTacToe.running = false;
}
} else {
event.getChannel().sendMessage("This Player isn't online!").queue();
}
}
return;
}
}
/*public static void eventSetter(GuildMessageReactionAddEvent event){
GuildMessageReactionAddEvent react = event;
}
*/
public static void Moeglich(ArrayList<Integer> al, Message m){
StringBuilder sb = new StringBuilder("");
for (int i:al
) {
if(i == 1){
m.addReaction("\u0031\u20E3").queue();
} else if(i == 2){
m.addReaction("\u0032\u20E3").queue();
}else if(i == 3){
m.addReaction("\u0033\u20E3").queue();
}else if(i == 4){
m.addReaction("\u0034\u20E3").queue();
}else if(i == 5){
m.addReaction("\u0035\u20E3").queue();
}else if(i == 6){
m.addReaction("\u0036\u20E3").queue();
}else if(i == 7){
m.addReaction("\u0037\u20E3").queue();
}else if(i == 8){
m.addReaction("\u0038\u20E3").queue();
}else if(i == 9){
m.addReaction("\u0039\u20E3").queue();
}
}
}
public static int emojiParser(String name){
int num = 0;
if(name.equals("\u0031\u20E3")){
num = 1;
} else if(name.equals("\u0032\u20E3")){
num = 2;
} else if(name.equals("\u0033\u20E3")){
num = 3;
} else if(name.equals("\u0034\u20E3")){
num = 4;
} else if(name.equals("\u0035\u20E3")){
num = 5;
} else if(name.equals("\u0036\u20E3")){
num = 6;
} else if(name.equals("\u0037\u20E3")){
num = 7;
} else if(name.equals("\u0038\u20E3")){
num = 8;
} else if(name.equals("\u0039\u20E3")){
num = 9;
}
return num;
}
public static int[][] TicField(int Feld[][], int field, int player) {
int i1 = 0;
int i2 = 0;
if (player == 1) {
i1 = field;
} else if (player == 2) {
i2 = field;
}
if (i1 == 7) {
Feld[0][0] = 1;
}
if (i1 == 8) {
Feld[0][1] = 1;
}
if (i1 == 9) {
Feld[0][2] = 1;
}
if (i1 == 4) {
Feld[1][0] = 1;
}
if (i1 == 5) {
Feld[1][1] = 1;
}
if (i1 == 6) {
Feld[1][2] = 1;
}
if (i1 == 1) {
Feld[2][0] = 1;
}
if (i1 == 2) {
Feld[2][1] = 1;
}
if (i1 == 3) {
Feld[2][2] = 1;
}
if (i2 == 7) {
Feld[0][0] = 2;
}
if (i2 == 8) {
Feld[0][1] = 2;
}
if (i2 == 9) {
Feld[0][2] = 2;
}
if (i2 == 4) {
Feld[1][0] = 2;
}
if (i2 == 5) {
Feld[1][1] = 2;
}
if (i2 == 6) {
Feld[1][2] = 2;
}
if (i2 == 1) {
Feld[2][0] = 2;
}
if (i2 == 2) {
Feld[2][1] = 2;
}
if (i2 == 3) {
Feld[2][2] = 2;
}
return Feld;
}
public static String sfZeichen(int Feld[][]){
StringBuilder sb = new StringBuilder();
int zeile2 = 0;
for (int zeile = 2; zeile >= 0; zeile--) {
for (int spalte = 0; spalte <= 2; spalte++) {
if (Feld[zeile][spalte] == 0) {
sb.append("[" + (3 * zeile2 + spalte + 1) +"]");
}
if (Feld[zeile][spalte] == 1) {
sb.append("[:x:]");
}
if (Feld[zeile][spalte] == 2) {
sb.append("[:o:]");
}
}
sb.append("\n");
zeile2 += 1;
}
return sb.toString();
}
public static int spielerGewonnen(int Feld[][], int spielerzaehler){
int winner = 0;
if (Feld[0][0] == 1 && Feld[0][1] == 1 && Feld[0][2] == 1) {
winner = 1;
spielerzaehler = 10;
}
if (Feld[1][0] == 1 && Feld[1][1] == 1 && Feld[1][2] == 1) {
winner = 1;
spielerzaehler = 10;
}
if (Feld[2][0] == 1 && Feld[2][1] == 1 && Feld[2][2] == 1) {
winner = 1;
spielerzaehler = 10;
}
if (Feld[0][0] == 1 && Feld[1][0] == 1 && Feld[2][0] == 1) {
winner = 1;
spielerzaehler = 10;
}
if (Feld[0][1] == 1 && Feld[1][1] == 1 && Feld[2][1] == 1) {
winner = 1;
spielerzaehler = 10;
}
if (Feld[0][2] == 1 && Feld[1][2] == 1 && Feld[2][2] == 1) {
winner = 1;
spielerzaehler = 10;
}
if (Feld[0][0] == 1 && Feld[1][1] == 1 && Feld[2][2] == 1) {
winner = 1;
spielerzaehler = 10;
}
if (Feld[0][2] == 1 && Feld[1][1] == 1 && Feld[2][0] == 1) {
winner = 1;
spielerzaehler = 10;
}
if (Feld[0][0] == 2 && Feld[0][1] == 2 && Feld[0][2] == 2) {
winner = 2;
spielerzaehler = 10;
}
if (Feld[1][0] == 2 && Feld[1][1] == 2 && Feld[1][2] == 2) {
winner = 2;
spielerzaehler = 10;
}
if (Feld[2][0] == 2 && Feld[2][1] == 2 && Feld[2][2] == 2) {
winner = 2;
spielerzaehler = 10;
}
if (Feld[0][0] == 2 && Feld[1][0] == 2 && Feld[2][0] == 2) {
winner = 2;
spielerzaehler = 10;
}
if (Feld[0][1] == 2 && Feld[1][1] == 2 && Feld[2][1] == 2) {
winner = 2;
spielerzaehler = 10;
}
if (Feld[0][2] == 2 && Feld[1][2] == 2 && Feld[2][2] == 2) {
winner = 2;
spielerzaehler = 10;
}
if (Feld[0][0] == 2 && Feld[1][1] == 2 && Feld[2][2] == 2) {
winner = 2;
spielerzaehler = 10;
}
if (Feld[0][2] == 2 && Feld[1][1] == 2 && Feld[2][0] == 2) {
winner = 2;
spielerzaehler = 10;
}
if(spielerzaehler==9){
winner = 3;
}
return winner;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment