Added comments

This commit is contained in:
Julius de Jeu 2017-04-14 16:14:20 +02:00
parent a339a6724b
commit 75a2d24210
12 changed files with 307 additions and 166 deletions

View file

@ -32,26 +32,5 @@
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.1" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:1.3.1" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
<orderEntry type="library" name="Maven: de.codecentric.centerdevice:javafxsvg:1.2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-anim:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-css:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ext:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-parser:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-bridge:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-script:1.8" level="project" />
<orderEntry type="library" name="Maven: xalan:xalan:2.7.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-dom:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gvt:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-util:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-xml:1.8" level="project" />
<orderEntry type="library" name="Maven: xml-apis:xml-apis:1.3.04" level="project" />
<orderEntry type="library" name="Maven: xml-apis:xml-apis-ext:1.3.04" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.1" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:1.3.1" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
</component>
</module>

View file

@ -1,2 +1,11 @@
# Leendert
Het spectaculaire tuinavontuur
## Gemaakt door
* Mette Lejeune (afbeeldingen)
* Julius de Jeu (programmeren)
* Jelle Miltenburg (muziek)
* Marleen Peeters (afbeeldingen)
* Jesper de Wilde (programmeren en afbeeldingen)
* Nathan van der Kamp (programmeren)

35
pom.xml
View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@ -13,12 +13,41 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>RELEASE</version>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<!-- get all project dependencies -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<!-- MainClass in mainfest make a executable jar -->
<archive>
<manifest>
<mainClass>nl.minkema.leendert.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- bind to the packaging phase -->
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

View file

@ -25,11 +25,19 @@ public class Dice extends Group {
private Group dotPattern6 = new Group();
private Group klaver = new Group();
/**
* Dit is de constructor van onze dobbelsteen
* De dobbelsteen is helemaal gemaakt met basisvormen door Nathan, daarna een beetje aangepast door Julius
*
* @param x de x-coördinaat van de dobbelsteen
* @param y de y-coördinaat van de dobbelsteen
*/
public Dice(int x, int y) {
this.r = new Random(System.currentTimeMillis());
this.setTranslateX(x);
this.setTranslateY(y);
Ellipse mainEll = new Ellipse(50, 50, 40, 50);
mainEll.setFill(Color.DARKRED);
Ellipse headEll1 = new Ellipse(34, 11, 6, 4);
@ -136,13 +144,21 @@ public class Dice extends Group {
roll();
}
/**
* @return Dit is de functie die het rollen van de dobbelsteen op zich neemt.
*/
public int roll() {
//We willen een getal tussen 0 en 6
int roll = r.nextInt(6);
//We maken eerst de groep leeg
this.getChildren().clear();
//Als er 3 uit de roll komt, en we dus 4 zeggen, willen we een klavertje 4 laten zien
if (roll == 3) {
this.getChildren().add(klaver);
} else {
//Maar anders gaan we voor een lieveheersbeestje
this.getChildren().add(ladybah);
//Dit zijn alle afzonderlijke patronen
switch (roll) {
case 0:
this.getChildren().add(dotPattern1);
@ -159,10 +175,12 @@ public class Dice extends Group {
case 5:
this.getChildren().add(dotPattern6);
break;
//Dit zou wel heel bijzonder zijn
default:
System.out.println("Error drawing die");
}
}
//En aan het eind nemen we de roll en tellen we er één bij op.
return roll + 1;
}

View file

@ -5,11 +5,12 @@ import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.Pane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.text.Text;
import java.util.ArrayList;
@ -27,23 +28,31 @@ public class Game extends Pane {
public static int[][] locations;
public static ArrayList<Player> players = new ArrayList<>();
/**
* De constructor voor de game
*/
public Game() {
//We willen dat de volgorde van de spelers willekeurig is.
Collections.shuffle(players);
Image bord = new Image("/images/KLAAR.png");
//Dit is de achtergrond met het bord er op.
Image bord = new Image("/images/bord.png");
ImageView view = new ImageView(bord);
view.setPreserveRatio(true);
view.setFitHeight(800);
view.setX(0);
view.setY(0);
this.getChildren().add(view);
//Dit zorgt voor de nummers in de vakjes
for (int i = 0, locationsLength = locations.length; i < locationsLength; i++) {
int[] k = locations[i];
getChildren().add(new Circle(k[0], k[1], 5, Color.RED));
getChildren().add(new Text(k[0], k[1], String.valueOf(i)));
//getChildren().add(new Circle(k[0], k[1], 5, Color.RED));
Text text = new Text(k[0] - 5, k[1] - 10, String.valueOf(i));
text.setFill(Color.GREENYELLOW);
getChildren().add(text);
}
//Dit was om de locaties van de vakjes te bepalen.
this.setOnMouseClicked(new EventHandler<MouseEvent>() {
int i = 0;
@ -52,12 +61,14 @@ public class Game extends Pane {
//System.out.printf("%d: %d,%d%n", i++, (int) event.getSceneX(), (int) event.getSceneY());
}
});
//Dit is de afbeelding van de speler die mag gooien
ImageView playerTurn = new ImageView();
playerTurn.setX(1000);
playerTurn.setY(50);
playerTurn.setPreserveRatio(true);
playerTurn.setFitHeight(400);
//Hier staat de naam van het karaker in.
Label l = new Label();
l.setTranslateX(965);
l.setTranslateY(370);
@ -66,19 +77,31 @@ public class Game extends Pane {
this.getChildren().add(playerTurn);
this.getChildren().addAll(l);
//Dit is onze dobbelsteen
Dice dice = new Dice(1100, 700);
this.getChildren().add(dice);
//Dit is de knop van de dobbelsteen.
this.getChildren().add(Menu.createButton("Gooi", 1100, 650, e -> {
//We kijken wie de volgende speler is
Player p = players.get(Player.getNextActive());
//En rollen een dobbelsteen
int roll = dice.roll();
//Dan verplaatsen we de speler
p.move(roll);
//Als de speler 4 gooit mag hij/zij nog een keer
if (roll == 4) Player.four();
//We zoeken uit wie er hier na mag
int next = players.get(Player.getNextActive()).getCh();
//Zetten die afbeelding als de speler die mag gooien
playerTurn.setImage(Menu.images[next]);
//En doen hetzelfde met de naam van de speler
l.setText(Menu.names[next] + " is aan de beurt!");
//En zetten het weer terug naar de vorige speler
Player.four();
}));
//this.setBackground(new Background(new BackgroundFill(Color.RED, null, null)));
//Dit is de achtergrond
this.setBackground(new Background(new BackgroundFill(Color.GREENYELLOW, null, null)));
//Dit zijn alle spelers
for (Player p : players) {
this.getChildren().add(p.getImageView());
}
@ -86,6 +109,7 @@ public class Game extends Pane {
playerTurn.setImage(Menu.images[players.get(1).getCh()]);
l.setText(Menu.names[players.get(1).getCh()] + " is aan de beurt!");
//En hier is de achtergrondmuziek, die het soms wel en soms niet doet...
String loc = this.getClass().getResource("/music/game.mp3").toString();
Media music = new Media(loc);
MediaPlayer menuplayer = new MediaPlayer(music);

View file

@ -14,13 +14,10 @@ import java.util.Properties;
public class Main extends Application {
public static Scene scene;
public static boolean memes = false;
public static void main(String[] args) throws Exception {
for (String s : args) {
if (s.equals("-memes")) memes = true;
}
//Je kan properties best goed gebruiken om simpele lijsten in te laden
Properties properties = new Properties();
properties.load(Main.class.getResourceAsStream("/text/locations.properties"));
Game.locations = new int[properties.size()][2];

View file

@ -37,32 +37,42 @@ public class Menu extends Group {
private ArrayList<Integer> chosen = new ArrayList<>();
/**
* De constructor voor het menu
*
* @throws URISyntaxException als de achtergrondmuziek niet gevonden kan worden.
* @throws MalformedURLException gebeurt hopelijk niet...
*/
public Menu() throws URISyntaxException, MalformedURLException {
ArrayList<Node> nodes = new ArrayList<>();
Image bg = new Image(ModLoader.getFile("/images/background.png"));
//achtergrondafbeelding
Image bg = new Image("/images/background.png");
ImageView view = new ImageView(bg);
//zet de x en y naar de linker bovenhoek
view.setX(0);
view.setY(0);
//dit is om te zorgen dat de afbeelding past
view.setFitHeight(850);
view.setPreserveRatio(false);
view.setFitWidth(1250);
nodes.add(view);
//De achtergrondmuziek
String loc = this.getClass().getResource("/music/menu.mp4").toString();
//loc = new File("menu.mp4").toURI().toURL().toString();
//loc = ModLoader.getFile("/music/menu.mp4");
Media music = new Media(loc);
MediaPlayer menuplayer = new MediaPlayer(music);
menuplayer.setCycleCount(Integer.MAX_VALUE);
menuplayer.setVolume(0.6f);
//Dit deel is om te garanderen dat de muziek start, hoewel het soms toch niet werkt, iets met codecs enzo
menuplayer.setAutoPlay(true);
menuplayer.play();
menuplayer.play();
nodes.add(view);
//De breedte van de afbeelding
int imagewidth = 100;
//Een array met speler afbeeldingen
images = new Image[]{
new Image("/svg/p1.svg", imagewidth, 0, true, false),
new Image("/svg/p2.svg", imagewidth, 0, true, false),
@ -70,36 +80,50 @@ public class Menu extends Group {
new Image("/svg/p4.svg", imagewidth, 0, true, false),
new Image("/svg/p5.svg", imagewidth, 0, true, false)};
//De namen van de karakters
names = new String[]{"Paulus", "Pinkeltje", "Petunia", "Kwebbel", "Stuart"};
int x = 0, y = 0;
//Voor elke afbeelding wordt dit uitgevoerd
for (int i1 = 0; i1 < images.length; i1++) {
//We maken van de afbeelding een ImageView, zodat het zichtbaar gemaakt kan worden
Image i = images[i1];
ImageView iv = new ImageView(i);
iv.setX(750 + x);
iv.setY(400 + y);
//En geven het een tooltip met de naam van de Kabouter
Tooltip.install(iv, new Tooltip(names[i1]));
x += i.getRequestedWidth();
//Als we te ver gaan op de x as, gaan we door op een volgende regel
if (x > 200) {
y += 150;
x = -70;
}
final int ch = i1;
//Wat er gebeurt als je op een kabouter klikt
iv.setOnMouseClicked(e -> {
//Eerst controleren of het karakter al is gekozen.
if (chosen.contains(ch)) {
new Alert(Alert.AlertType.ERROR, "Sorry, dit karakter is al door iemand anders gekozen...").show();
return;
}
//Als er nog geen hoeveelheid is gekozen kan dat ook best een probleempje opleveren.
if (hoeveel < 0) {
Alert alert = new Alert(Alert.AlertType.ERROR, "Je moet eerst kiezen hoe veel spelers je wilt!\nDruk links op de juiste hoeveelheid kaboutertjes!", ButtonType.OK);
alert.show();
} else {
//Maar verder kunnen we gewoon de karakters vinden
Image image = new Image(i.impl_getUrl(), 0, 50, true, false);
//Toevoegen aan de lijst van spelers
Game.players.add(new Player(image, ch));
//De hoeveelheid benodigde spelers met één verlagen
hoeveel--;
//En controleren of iedereen er een gekozen heeft
if (hoeveel == 0) {
//Zo ja: we stoppen het muziekje en starten het spel!
menuplayer.stop();
Main.scene.setRoot(new Game());
} else {
//Maar anders laten we mensen nog kiezen.
String een = "Er moet nog 1 persoon kiezen!";
String meer = String.format("Er moeten nog %d mensen kiezen!", hoeveel);
Alert alert = new Alert(Alert.AlertType.NONE, hoeveel > 1 ? meer : een, ButtonType.OK);
@ -110,22 +134,24 @@ public class Menu extends Group {
}
});
//Maar we moeten wel het karakter zichtbaar maken.
nodes.add(iv);
}
int x2 = 30, y2 = 50;
//Dit zijn de knoppen voor de hoeveelheid spelers
for (int i = 0; i < 4; i++) {
if (i == 0) continue;
int number = 1 + i;
int locy = y2 + 150 * i + 10;
int locy = y2 + 155 * i + 10;
for (int e = 0; e < number; e++) {
ImageView view1 = new ImageView(new Image("/svg/p1.svg", 75, 0, true, false));
view1.setX(x2 + 85 * e + 10 * e);
view1.setY(locy);
nodes.add(view1);
}
Rectangle clickable = new Rectangle(x2 - 10, locy + 125, 95 + i * 95, 150);
Rectangle clickable = new Rectangle(x2 - 10, locy + 125, 95 + i * 95, 152);
clickable.setFill(Color.TRANSPARENT);
clickable.setStroke(Color.BLACK);
clickable.setArcHeight(50);
@ -143,6 +169,14 @@ public class Menu extends Group {
getChildren().addAll(nodes);
}
/**
* Maakt een knop op een plek, met een willekeurige kleur.
* @param string de tekst van de knop
* @param x de x coördinaat van de knop
* @param y de y coördinaat van de knop
* @param onClick een {@link EventHandler} die wordt uitgevoerd als de knop is ingedrukt
* @return een stackpane met daarin een knop
*/
public static StackPane createButton(String string, double x, double y, EventHandler<MouseEvent> onClick) {
Text text = createText(string);
Rectangle rectangle = rectangulate(text);
@ -153,6 +187,11 @@ public class Menu extends Group {
return pane;
}
/**
* Maakt een text object
* @param string de tekst van het object
* @return een object met de tekst
*/
private static Text createText(String string) {
Text text = new Text(string);
text.setBoundsType(TextBoundsType.VISUAL);
@ -165,6 +204,11 @@ public class Menu extends Group {
return text;
}
/**
* Maakt een rechthoek precies passend om de tekst heen.
* @param text een {@link Text} object
* @return een rechthoek met daar in de tekst
*/
private static Rectangle rectangulate(Text text) {
Rectangle rectangle = new Rectangle();
rectangle.setFill(getRandomColor());
@ -176,6 +220,11 @@ public class Menu extends Group {
return rectangle;
}
/**
* methode die de breedte van een {@link Text} object opvraagt
* @param text het object
* @return de breedte van het object
*/
private static double getWidth(Text text) {
new Scene(new Group(text));
text.applyCss();
@ -183,6 +232,11 @@ public class Menu extends Group {
return text.getLayoutBounds().getWidth();
}
/**
* methode die de hoogte van een {@link Text} object opvraagt
* @param text het object
* @return de hoogte van het object
*/
private static double getHeight(Text text) {
new Scene(new Group(text));
text.applyCss();
@ -190,6 +244,10 @@ public class Menu extends Group {
return text.getLayoutBounds().getHeight();
}
/**
* maakt een willekeurige kleur
* @return een willekeurige kleur.
*/
public static Color getRandomColor() {
return Color.hsb(random.nextInt(360), 0.8, 0.8);

View file

@ -8,6 +8,12 @@ import java.io.File;
*/
public class ModLoader {
/**
* Dit was een leuk idee, maar het werkte 9/10 keer niet goed
*
* @param file de naam van het bestand
* @return het pad, danwel in het .jar bestand of als absoluut bestand
*/
public static String getFile(String file) {
File f = new File("mods" + file);
if (f.exists()) {

View file

@ -23,18 +23,28 @@ public class Player {
private int plaats = 0;
private int[] coords = Game.locations[plaats];
/**
* De constructor voor een speler
*
* @param image de afbeelding die bij de speler hoort
* @param ch het hoeveelste karakter de speler is.
*/
public Player(Image image, int ch) {
this.ch = ch;
Random r = new Random(System.currentTimeMillis());
this.image = image;
this.view = new ImageView(this.image);
//Elke speler staat niet precies op het zelfde punt, ziet er wat leuker uit
this.add = new int[]{r.nextInt(10) - 5 - image.widthProperty().intValue() / 2, r.nextInt(10) - 5 - image.heightProperty().intValue() / 2};// new int[]{r.nextInt(10) - 5, r.nextInt(10) - 5};
coords = new int[]{coords[0] + add[0], coords[1] + add[1]};
getImageView().setTranslateX(coords[0]);
getImageView().setTranslateY(coords[1]);
}
/**
* Een methode om de volgende speler te verkrijgen
* @return het nummer van de volgende speler, niet verwarren met het character id.
*/
public static int getNextActive() {
who++;
if (who >= Game.players.size()) {
@ -44,10 +54,12 @@ public class Player {
return who;
}
//Dit zorgt dat de vorige speler geselecteerd wordt
public static void four() {
who -= 1;
}
//Dit is de afbeelding die bij de speler hoort
public ImageView getImageView() {
return view;
}
@ -56,20 +68,27 @@ public class Player {
return ch;
}
/**
* Dit is de methode die wordt gebruikt om de speler te verplaatsen
* @param roll de hoeveelheid die is gegeooid.
*/
public void move(int roll) {
//De standaard tekst
Alert alert = new Alert(Alert.AlertType.NONE, "Je hebt " + roll + " gegooid!", ButtonType.OK);
//Als er 4 is gegooid mag je nog een keer, dus passen we de tekst aan
if (roll == 4)
alert.contentTextProperty().setValue("Je hebt " + roll + " gegooid!\nKlavertje 4! Je mag dus nog een keer!");
//We willen geen titel
alert.titleProperty().setValue("");
if (plaats + roll == 69 && Main.memes) {
alert.contentTextProperty().setValue("heheheh 69 icksdie\n" + alert.getContentText());
}
//Zolang er geen waterval of klimop is laten we het zien
if (!Game.specials.containsKey(plaats + roll))
alert.show();
//We gaan alleen niet over 100 heen...
if (roll + plaats > 100) {
return;
}
//We gebruiken een TranslateTransition om de speler te verplaatsen
TranslateTransition tt = new TranslateTransition(Duration.millis(200), getImageView());
tt.setFromX(coords[0]);
tt.setFromY(coords[1]);
@ -77,16 +96,19 @@ public class Player {
tt.setToY(coords[1] = Game.locations[plaats + 1][1] + add[1]);
TranslateTransition last = tt;
//Dit is voor alles hoger dan 1
for (int i = plaats + 2; i < roll + plaats + 1; i++) {
TranslateTransition tl = new TranslateTransition(Duration.millis(200), getImageView());
tl.setFromX(coords[0]);
tl.setFromY(coords[1]);
tl.setToX(coords[0] = Game.locations[i][0] + add[0]);
tl.setToY(coords[1] = Game.locations[i][1] + add[1]);
//Als we meer dan 1 beweging willen moet dat er na afgespeeld worden, anders gaan ze tegelijk
last.setOnFinished(e -> tl.play());
last = tl;
}
plaats += roll;
//Als er een waterval of klimop is
if (Game.specials.containsKey(plaats)) {
TranslateTransition tl = new TranslateTransition(Duration.millis(200), getImageView());
tl.setFromX(coords[0]);
@ -96,21 +118,23 @@ public class Player {
last.setOnFinished(e -> tl.play());
String text;
//We passen de tekst aan
if (plaats < Game.specials.get(plaats)) {
text = alert.getContentText() + "\n\nRoltrappen!\nJe mag " + (Game.specials.get(plaats) - plaats) + " plaatsen vooruit!";
text = alert.getContentText() + "\n\nKlimop!\nJe mag " + (Game.specials.get(plaats) - plaats) + " plaatsen vooruit!";
} else {
text = alert.getContentText() + "\n\nSlangen!\nJe moet " + (plaats - Game.specials.get(plaats)) + " plaatsen terug!";
text = alert.getContentText() + "\n\nWaterval!\nJe moet " + (plaats - Game.specials.get(plaats)) + " plaatsen terug!";
}
Alert alert1 = new Alert(Alert.AlertType.NONE, text, ButtonType.OK);
alert1.show();
//Laten we de plaats van de speler ook even aanpassen
plaats = Game.specials.get(plaats);
}
tt.play();
//Bij 100 heeft er iemand gewonnen!
if (plaats == 100) {
System.out.println("Een speler heeft gewonnen!");
Alert alert2 = new Alert(Alert.AlertType.WARNING, "Speler " + Menu.names[getCh()], ButtonType.OK);

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

View file

@ -1,102 +1,101 @@
#format: nummer:x,y
0:438,52
1:496,53
2:548,53
3:609,52
4:664,53
5:704,111
6:639,109
7:583,110
8:529,110
9:472,107
10:418,105
11:381,166
12:446,173
13:499,168
14:554,169
15:605,168
16:670,167
17:721,168
18:758,220
19:704,228
20:635,226
21:578,223
22:521,223
23:451,222
24:413,222
25:346,224
26:323,281
27:379,281
28:434,281
29:490,281
30:545,281
31:603,280
32:665,281
33:720,280
34:782,280
35:809,330
36:755,335
37:703,336
38:646,337
39:588,337
40:527,338
41:470,339
42:408,336
43:361,336
44:289,339
45:265,399
46:322,397
47:372,395
48:439,395
49:500,393
50:554,393
51:606,396
52:675,396
53:721,396
54:792,396
55:835,397
56:817,452
57:755,455
58:695,457
59:648,457
60:581,455
61:528,454
62:467,454
63:401,454
64:358,452
65:302,453
66:320,511
67:378,515
68:442,513
69:486,512
70:551,513
71:607,514
72:671,515
73:732,515
74:782,514
75:758,572
76:687,573
77:633,572
78:575,573
79:533,574
80:471,572
81:407,570
82:357,570
83:382,639
84:437,636
85:503,633
86:548,631
87:605,630
88:660,627
89:733,628
90:695,681
91:648,681
92:582,682
93:526,682
94:479,682
95:411,683
96:444,736
97:497,751
98:549,749
99:607,748
100:674,746
0=711,718
1=658,716
2=602,713
3=555,713
4=506,711
5=475,656
6=528,663
7=577,663
8=627,665
9=677,666
10=737,661
11=762,619
12=707,614
13=653,608
14=610,608
15=561,608
16=499,607
17=444,606
18=428,558
19=474,557
20=522,557
21=582,559
22=632,562
23=682,558
24=730,557
25=786,559
26=812,505
27=751,505
28=705,508
29=655,508
30=607,508
31=554,509
32=499,508
33=453,506
34=402,508
35=376,460
36=424,457
37=477,459
38=529,457
39=581,458
40=628,458
41=678,458
42=730,455
43=784,456
44=831,457
45=859,410
46=807,409
47=756,408
48=706,407
49=655,406
50=601,406
51=554,406
52=503,406
53=452,406
54=400,406
55=345,406
56=373,351
57=424,349
58=474,352
59=525,356
60=577,357
61=629,356
62=684,357
63=733,358
64=781,359
65=835,355
66=809,307
67=758,304
68=709,304
69=656,303
70=606,303
71=551,303
72=507,301
73=454,303
74=401,303
75=427,253
76=478,253
77=528,254
78=580,252
79=630,252
80=680,255
81=731,255
82=781,255
83=757,204
84=706,204
85=655,204
86=604,203
87=553,202
88=503,202
89=451,203
90=477,152
91=529,151
92=581,151
93=630,152
94=678,153
95=732,154
96=709,99
97=657,99
98=604,102
99=552,102
100=500,102

View file

@ -1,14 +1,12 @@
5=10
7=4
18=13
20=27
30=24
42=88
50=43
57=65
63=52
71=62
80=82
88=87
92=97
98=90
1=27
17=32
21=4
22=30
47=68
52=59
61=39
70=79
74=53
76=91
81=64
92=71