Created
September 12, 2017 19:37
-
-
Save flawnn/f4e7783c53b06a5e9944b6039f8f4b24 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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