Risiko! :-)

  • Java

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von KingTimon.

    Risiko! :-)

    Guten Abend allerseits! :)

    Ich versuche momentan im Rahmen meines Abschlussprojekts das Spiel Risiko nachzuprogrammieren (Java 1.8).
    Das GUI ist schon mal fertig, sieht etwa so aus:

    prntscr.com/adlmed

    Die Map wird durch Polygon (javafx) gezeichnet. Jedoch werden die gerade so willkürlich aufgezeichnet (nicht direkt ansprechbar).
    Um das ganze noch etwas zu erläutern:

    Spoiler anzeigen

    Quellcode

    1. Eine Landfläche ist ein zusammenhängender Bereich auf der Spielfläche und wird
    2. beschrieben durch eine Folge von Koordinaten, die die Eckpunkte der Landfläche
    3. angeben.
    4. Ein Territorium besteht aus mindestens einer Landfläche. Jede Landfläche gehört zu
    5. genau einem Territorium. Ein Territorium hat einen Namen und einen Punkt, der die
    6. Stelle der Hauptstadt angibt. Ein Territorium ist mit beliebig vielen anderen
    7. Territorien über einen Land­ oder Seeweg verbunden. Derart verbundene Territorien
    8. werden als Nachbarn bezeichnet. Dabei ist es egal, ob die Territorien direkt
    9. nebeneinander liegen oder über weitere Distanzen verbunden sind.
    10. Ein Kontinent ist eine Sammlung von Territorien. Die Territorien eines Kontinents
    11. müssen nicht notwendigerweise beisammen liegen oder benachbart sein.


    Hier noch ein Ausschnitt aus meiner .map Datei:
    Spoiler anzeigen

    Quellcode

    1. ​patch-of New Guinea 1090 353 1088 352 1086 355 1087 357 1085 360 1085 362 1086 364 1088 365 1089 364 1090 363 1090 360 1088 358 1089 357 1090 355 1091 354 1090 353
    2. patch-of New Guinea 1088 376 1087 379 1090 379 1093 380 1095 379 1098 379 1093 377 1090 377 1088 377
    3. patch-of New Guinea 1101 369 1102 370 1105 372 1109 374 1109 376 1107 376 1106 378 1107 380 1110 381 1116 382 1119 384 1122 385 1126 387 1129 389 1130 391 1133 395 1133 396 1130 398 1129 399 1130 401 1134 401 1135 401 1139 402 1141 404 1145 405 1148 406 1151 402 1154 399 1155 398 1159 399 1164 403 1165 405 1168 408 1172 411 1178 412 1181 413 1183 414 1177 407 1174 404 1171 401 1167 398 1166 396 1167 395 1167 392 1166 391 1165 389 1163 386 1160 385 1157 383 1154 381 1150 379 1138 374 1135 373 1131 372 1127 371 1124 374 1120 376 1118 378 1117 380 1115 377 1114 375 1113 372 1111 369 1110 367 1107 367 1104 367 1102 369 1101 369 1102 368
    4. patch-of New Guinea 1180 376 1183 377 1188 382 1191 386 1192 386 1193 383 1192 382 1190 380 1187 378 1184 377 1181 375 1180 375 1180 376
    5. patch-of New Guinea 1187 384 1184 385 1182 388 1180 389 1174 389 1173 390 1176 393 1178 395 1182 394 1184 392 1185 391 1186 388 1187 386 1187 385 1187 384
    6. patch-of New Guinea 1195 388 1195 391 1197 395 1198 397 1201 397 1201 395 1199 393 1197 392 1196 390 1196 389 1195 388
    7. patch-of New Guinea 1202 395 1204 397 1208 400 1208 397 1205 396 1201 395 1202 395
    8. patch-of New Guinea 1210 399 1210 401 1213 403 1214 403 1214 401 1212 400 1210 399
    9. patch-of New Guinea 1217 403 1217 405 1219 410 1222 409 1221 406 1220 404 1218 403 1217 403
    10. patch-of New Guinea 1204 400 1206 403 1207 404 1208 406 1209 404 1207 403 1207 402 1206 400 1203 400 1204 400
    11. patch-of New Guinea 1212 406 1213 408 1215 409 1218 410 1217 408 1215 407 1212 406 1211 406
    12. patch-of New Guinea 1219 411 1218 413 1221 416 1223 415 1225 413 1223 412 1220 411 1219 411
    13. patch-of Indonesia 1083 403 1076 400 1075 401 1070 403 1069 404 1068 409 1066 410 1071 411 1073 409 1074 406 1076 404 1079 404 1081 404 1082 403
    14. patch-of India 888 321 887 323 886 326 887 329 887 333 888 335 889 335 892 335 894 333 894 332 894 330 893 328 893 326 890 323 889 322 888 321
    15. patch-of Indonesia 952 339 953 342 953 343 960 348 964 353 966 359 973 367 975 370 977 375 979 380 982 384 986 386 989 389 992 389 994 387 995 384 995 382 994 375 992 374 988 369 986 367 982 364 981 359 980 358 976 356 973 354 971 352 970 350 969 348 964 344 958 341 956 340 951 339 951 338
    16. patch-of Indonesia 998 393 993 393 995 396 999 397 1004 399 1008 398 1009 398 1014 400 1016 401 1021 401 1024 401 1028 403 1032 403 1035 400 1030 400 1026 398 1024 397 1022 396 1018 394 1014 395 1010 395 1008 395 1007 394 1006 393 1001 392 1000 391 999 392 996 392 994 393
    17. patch-of Indonesia 1039 401 1039 405 1041 405 1044 404 1047 404 1047 402 1045 401 1041 401 1039 402
    18. patch-of Indonesia 1052 406 1049 407 1051 409 1054 411 1057 411 1056 409 1054 408 1053 407 1052 407
    19. patch-of Indonesia 1055 401 1053 402 1055 405 1059 405 1060 403 1063 403 1064 401 1062 401 1059 401 1055 401
    20. patch-of Eastern Australia 1111 548 1111 552 1111 556 1109 558 1109 562 1111 562 1116 562 1119 560 1121 558 1122 555 1123 553 1123 551 1121 550 1116 551
    21. capital-of Venezuela 265 334
    22. capital-of Brazil 356 407
    23. capital-of Peru 272 428
    24. capital-of Argentina 291 514
    25. capital-of Madagascar 746 449
    26. capital-of South Africa 650 468
    27. capital-of Congo 647 362
    28. neighbors-of Alaska : North West Territory - Alberta - Kamchatka
    29. neighbors-of North West Territory : Alberta - Ontario - Greenland
    30. neighbors-of Alberta : Western United States - Ontario
    31. neighbors-of Ontario : Greenland - Quebec - Eastern United States
    32. neighbors-of Quebec : Greenland - Eastern United States
    33. continent North America 5 : Alaska - North West Territory - Greenland - Alberta - Ontario - Quebec - Western United States - Eastern United States - Central America
    34. continent South America 2 : Venezuela - Peru - Brazil - Argentina
    35. continent Europe 5 : Iceland - Scandinavia - Ukraine - Northern Europe - Southern Europe - Western Europe - Great Britain
    36. continent Asia 7 : Middle East - India - Siam - Afghanistan - China - Ural - Siberia - Mongolia - Irkutsk - Yakutsk - Japan - Kamchatka
    37. continent Africa 3 : North Africa - Egypt - East Africa - Congo - South Africa - Madagascar
    38. continent Australia 2 : Indonesia - New Guinea - Western Australia - Eastern Australia


    Ich habe mal die Klassen Continent und Territory geschrieben (5-Zeiler) und komme einfach nicht weiter wie ich das ganze Ding ansprechbar machen soll.

    Meine Frage wäre jetzt, welche Datenstrukturen sind für sowas am besten geeignet, wie lese ich die Datei am besten aus und wie teile ich diese wiederum am besten auf?


    BITTE KEINE FERTIGEN CODE-SNIPPETS, MIR GEHT ES UM DEN LERNEFFEKT X/


    lg
    TehBasic
    Definiere "ansprechbar". Was hast du vor?
    Die Datei kannst du recht einfach parsen, einfach das Format analysieren und einen Parser schreiben, vllt reicht sogar RegEx.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Naja, prinzipiell sollte man die ganzen erstellten Objekte ansprechen können.
    Jedes Polygon auf dem Screenshot hat einen MouseListener, ist aber nicht das Ziel denn:
    Japan und seine Inseln gelten als ein Territorium, werden in meinem Projekt derzeit als einzelne Objekte dargestellt und angesprochen.
    D.h. wenn ich auf eine Insel von Japan klicke, soll auch Japan und alle Inseln welche zu diesem Territorium gehören aufleuchten.

    prntscr.com/adlwnr

    Die Klasse Territory, die ich derzeit habe, besitzt als Eigenschaft ein Array vom Typen Polygon[], weiß jetzt nicht genau wie klug das dafür sein soll.
    Außerdem sollen die ganzen Territorien wiederum zu einem Kontinent gehören. Soll wahrscheinlich irgendwie geschachtelt werden?


    lg
    Mach eine Klasse Continent, eine Klasse Territory, eine Klasse Part (oder Country, aber das trifft nicht immer zu).
    Nun gibst du der Part-Klasse eine Eigenschaft Polygon, der Territory-Klasse eine Eigenschaft Part[], und der Continent-Klasse eine Eigenschaft Territory[].
    Beim Hover über ein Stück Land kannst du immer nach oben durch-skippen und das markieren, was du willst. Entweder das Landstück, das Territory, oder den ganzen Continent.
    So sähe jedenfalls meine Lösung aus.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Habe ich mir schon so überlegt, die Part Objekte jedoch müssen ja eine Eigenschaft mit einem Namen haben, damit ich sie ja zuordnen kann, oder nicht?

    Ich habe mir gedacht, dass ich beim Auslesen der Datei einfach drei Deque anlege (Continent, Territory, Part), während ich auslese alles reintue und dann nach dem Auslesen die Objekte erzeuge.


    EDIT: Die "Part" Klasse bei mir erbt von Polygon

    lg

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TehBasic“ ()

    ich liebe dieses Spiel :)

    Vlt findest du bei der Online-Version warlight.net eine Idee für einen Ansatz

    Viel Glück!
    Auf der Suche nach Coding-Kursen auf Lence.at