#INCLUDE ONCE "file.bi" #INCLUDE ONCE "Windows.bi" #INCLUDE ONCE "win\COMMDLG.BI" DECLARE SUB FELD (X AS INTEGER, Y AS INTEGER, XX AS INTEGER, YY AS INTEGER, FARBEN AS INTEGER) DECLARE SUB FONT (WORT AS STRING, HOEHE AS INTEGER, BREITE AS INTEGER, FARBE1 AS INTEGER, FARBE2 AS INTEGER, FARBE3 AS INTEGER, ATTRIBUT AS INTEGER, STELLE AS INTEGER) DECLARE SUB INGET (ANZAHLE AS INTEGER, STELLEN AS INTEGER, ZEILEN AS INTEGER, N AS STRING) DECLARE SUB BUTTON (X AS INTEGER, Y AS INTEGER, XX AS INTEGER, YY AS INTEGER) DECLARE SUB ANZEIGE (i AS INTEGER) DECLARE SUB MENU DECLARE SUB LADEN DECLARE SUB ANLEGEN DECLARE SUB SPEICHERN DECLARE SUB LOESCHEN DECLARE SUB SORTIEREN DECLARE SUB AUSLOSUNG DECLARE SUB ERGEBNISANZEIGE DECLARE SUB PUNKTEANZEIGE DECLARE SUB TABELLE DECLARE FUNCTION LOADSAVEDIALOG (_ savedlog AS INTEGER = 0,_ filter AS STRING = "",_ fltrindex AS INTEGER = 1,_ initdir AS STRING = "",_ strDefExt AS STRING = "stop") AS STRING 'Voreinstellungen: 'savedlog = 0 "Datei Öffnen", 1(<>0) "Datei Speichern" 'filter = "" "Alle Dateien", sonst siehe fil 'fltrindex = 1, sonst welcher Eintrag, der bei filter angegebenen Auswahl, aktiv ist 'initdir = "" = "." aktueller Pfad, sonst angegebener Pfad 'strDefExt = "" keine Vorgabe, sonst z.B. "bak" als Vorgabe der Endung zum Speichern DIM SHARED AS STRING DateiName, IconDatei, fil REDIM SHARED AS INTEGER paarungen(1 TO 1, 1 TO 2, 1 TO 1) DIM SHARED AS INTEGER i = 3000 ' als Laufvariable DIM SHARED AS INTEGER j = 3000 ' als Laufvariable DIM SHARED BV AS INTEGER ' Variable für Statusrückgabe erstellen DIM SHARED AS INTEGER ELO(j), DWZ(j) DIM SHARED AS INTEGER BB, E, K, L, T, XXX, Seite, Runde, Brett DIM SHARED AS INTEGER Tastensperre(16), TAZ, vorhandeneEintraege, laufvariable DIM SHARED AS INTEGER Eintrag(i), Sonderzeichen, Attribut, STELLE, MaxAnzahl DIM SHARED AS INTEGER startwert, Paarungssystem, sx, r, RAZ, rotation, ppr, kampflose(i, j) DIM SHARED AS DOUBLE Punkte(i, j), Gesamtpunkte(i), Platz DIM SHARED AS INTEGER mausx, mausy, mausk DIM SHARED AS STRING AA, Eingabe(i), Spieler(i), taste, Titel(i), Verein(i), Temp(i, j), N DIM f AS INTEGER = FREEFILE SCREENRES 1024, 420, 32 ' ******************** Variablen definieren *************************** Tastensperre(1) = TRUE Tastensperre(2) = FALSE Tastensperre(3) = FALSE Tastensperre(4) = FALSE Tastensperre(5) = FALSE Tastensperre(6) = FALSE Tastensperre(7) = FALSE Tastensperre(8) = FALSE Tastensperre(9) = FALSE Tastensperre(10) = FALSE Tastensperre(11) = FALSE Tastensperre(12) = FALSE i = 1 TAZ = 0 Seite = 1 ' Aktuelle aufgerufene Seite Runde = 1 ' Aktuelle Runde Brett = 1 ' aufgerufenes Brett Platz = 1 ' aufgerufener Platz MaxAnzahl = 2002 ' maximale Anzahl der Teilnehmer Paarungssystem = 1 ' Rundensystem aktiv ' Punkte initialisieren - auf -0 setzen FOR j = 1 TO MaxAnzahl FOR laufvariable = 1 TO MaxAnzahl Punkte(laufvariable, j) = 2000 ' kampflose(laufvariable, j) = 0 ' 0 = keine Kampflose Ergebnisse - 1 = kampflose Ergebnisse NEXT NEXT '/ ' alle Einträge sind freigegeben FOR laufvariable = 1 TO MaxAnzahl Eintrag(laufvariable) = 0 NEXT MENU ' Menu laden DO taste = INKEY GETMOUSE mausx, mausy,, mausk ' LOCATE 5,5: PRINT "mausx: "; mausx; " mausy: "; mausy; " " COLOR &hFFFFFF SELECT CASE mausk CASE 1 ' Schaltfläche - Teilnehmer SELECT CASE mausx CASE 2 TO 93 SELECT CASE mausy CASE 2 TO 28 IF Seite <> 1 THEN SCREENRES 1024, 420, 32 Seite = 1 MENU ANZEIGE(i) END IF END SELECT END SELECT ' Schaltfläche - Paarungen SELECT CASE mausx CASE 97 TO 182 SELECT CASE mausy CASE 2 TO 28 IF Seite <> 2 THEN SCREENRES 1024, 620, 32 Seite = 2 MENU END IF END SELECT END SELECT ' Schaltfläche - Tabelle SELECT CASE mausx CASE 186 TO 268 SELECT CASE mausy CASE 2 TO 28 IF Seite <> 3 THEN SCREENRES 1024, 640, 32 Seite = 3 MENU PUNKTEANZEIGE END IF END SELECT END SELECT IF Seite < 2 THEN ' Eingabe - Verein SELECT CASE mausx CASE 770 TO 1020 SELECT CASE mausy CASE 57 TO 77 INGET 20, 9, 106, Eingabe(5) Verein(i) = Eingabe(5) ANZEIGE(i) END SELECT END SELECT ' Eingabe - Spielername SELECT CASE mausx CASE 48 TO 470 SELECT CASE mausy CASE 57 TO 77 INGET 35, 9, 23, Eingabe(1) Spieler(i) = Eingabe(1) k = 1 TAZ = 0 DO IF Spieler(k) = "" THEN EXIT DO TAZ += 1 k += 1 LOOP ANZEIGE(i) END SELECT END SELECT ' Eingabe - ELO SELECT CASE mausx CASE 475 TO 565 SELECT CASE mausy CASE 57 TO 77 INGET 4, 9, 66, Eingabe(2) ELO(i) = VAL(Eingabe(2)) ANZEIGE(i) ' Tastensperre(2) = FALSE ' Tastensperre(3) = FALSE END SELECT END SELECT ' Eingabe - DWZ SELECT CASE mausx CASE 570 TO 660 SELECT CASE mausy CASE 57 TO 77 INGET 4, 9, 78, Eingabe(3) DWZ(i) = VAL(Eingabe(3)) ANZEIGE(i) END SELECT END SELECT ' Eingabe - Titel SELECT CASE mausx CASE 665 TO 765 SELECT CASE mausy CASE 57 TO 77 INGET 3, 9, 92, Eingabe(4) Titel(i) = Eingabe(4) ANZEIGE(i) END SELECT END SELECT ' Datei anlegen SELECT CASE mausx CASE 8 TO 77 SELECT CASE mausy CASE 386 TO 406 ANLEGEN END SELECT END SELECT ' Datei laden SELECT CASE mausx CASE 87 TO 142 SELECT CASE mausy CASE 386 TO 406 LADEN END SELECT END SELECT ' Datei speichern SELECT CASE mausx CASE 152 TO 238 SELECT CASE mausy CASE 386 TO 406 SPEICHERN END SELECT END SELECT ' neue Spieler SELECT CASE mausx CASE 248 TO 380 SELECT CASE mausy CASE 386 TO 406 i = TAZ+1 ANZEIGE(TAZ+1) INGET 35, 9, 23, Eingabe(1) Spieler(i) = Eingabe(1) k = 1 TAZ = 0 DO IF Spieler(k) = "" THEN EXIT DO TAZ += 1 k += 1 LOOP ANZEIGE(TAZ) END SELECT END SELECT ' Spieler löschen SELECT CASE mausx CASE 390 TO 494 SELECT CASE mausy CASE 386 TO 406 LOESCHEN ANZEIGE(1) END SELECT END SELECT END IF IF Seite = 2 THEN ' Schaltfläche - Auslosung SELECT CASE mausx CASE 332 TO 411 SELECT CASE mausy CASE 563 TO 596 AUSLOSUNG END SELECT END SELECT ' Schaltfläche - 1-0 SELECT CASE mausx CASE 6 TO 67 SELECT CASE mausy CASE 66 TO 84 BUTTON 6, 66, 67, 84 ' Button Anzeigen Punkte(paarungen(Brett,1,Runde),Runde) = 1 Punkte(paarungen(Brett,2,Runde),Runde) = 0 kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE IF brett < ppr THEN ' Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END SELECT END SELECT ' Schaltfläche - 1/2-1/2 SELECT CASE mausx CASE 76 TO 137 SELECT CASE mausy CASE 66 TO 84 BUTTON 76, 66, 137, 84 Punkte(paarungen(Brett,1,Runde),Runde) = 0.5 Punkte(paarungen(Brett,2,Runde),Runde) = 0.5 kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE IF brett < ppr THEN ' Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END SELECT END SELECT ' Schaltfläche - 0-1 SELECT CASE mausx CASE 146 TO 207 SELECT CASE mausy CASE 66 TO 84 BUTTON 146, 66, 207, 84 Punkte(paarungen(Brett,1,Runde),Runde) = 0 Punkte(paarungen(Brett,2,Runde),Runde) = 1 kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE IF brett < ppr THEN ' Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END SELECT END SELECT ' Schaltfläche - 1/2-0 SELECT CASE mausx CASE 6 TO 67 SELECT CASE mausy CASE 89 TO 109 BUTTON 6, 89, 67, 109 Punkte(paarungen(Brett,1,Runde),Runde) = 0.5 Punkte(paarungen(Brett,2,Runde),Runde) = 0 kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE IF brett < ppr THEN ' Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END SELECT END SELECT ' Schaltfläche - 0-1/2 SELECT CASE mausx CASE 76 TO 137 SELECT CASE mausy CASE 89 TO 109 BUTTON 76, 89, 137, 109 Punkte(paarungen(Brett,1,Runde),Runde) = 0 Punkte(paarungen(Brett,2,Runde),Runde) = 0.5 kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE IF brett < ppr THEN ' Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END SELECT END SELECT ' Schaltfläche - 0-0 SELECT CASE mausx CASE 146 TO 207 SELECT CASE mausy CASE 89 TO 109 BUTTON 146, 89, 207, 109 Punkte(paarungen(Brett,1,Runde),Runde) = 0 Punkte(paarungen(Brett,2,Runde),Runde) = 0 kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE IF brett < ppr THEN ' Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END SELECT END SELECT ' Schaltfläche - +-- SELECT CASE mausx CASE 6 TO 67 SELECT CASE mausy CASE 114 TO 134 BUTTON 6, 114, 67, 134 Punkte(paarungen(Brett,1,Runde),Runde) = 1 Punkte(paarungen(Brett,2,Runde),Runde) = 0 kampflose(Brett, Runde) = 1 ERGEBNISANZEIGE IF brett < ppr THEN ' Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END SELECT END SELECT ' Schaltfläche - --- SELECT CASE mausx CASE 76 TO 137 SELECT CASE mausy CASE 114 TO 134 BUTTON 76, 114, 137, 134 Punkte(paarungen(Brett,1,Runde),Runde) = 0 Punkte(paarungen(Brett,2,Runde),Runde) = 0 kampflose(Brett, Runde) = 1 ERGEBNISANZEIGE IF brett < ppr THEN ' Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END SELECT END SELECT ' Schaltfläche - --+ SELECT CASE mausx CASE 146 TO 207 SELECT CASE mausy CASE 114 TO 134 BUTTON 146, 114, 207, 134 Punkte(paarungen(Brett,1,Runde),Runde) = 0 Punkte(paarungen(Brett,2,Runde),Runde) = 1 kampflose(Brett, Runde) = 1 ERGEBNISANZEIGE IF brett < ppr THEN ' Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END SELECT END SELECT END IF END SELECT IF Seite = 1 THEN ' sortieren - Taste F7 IF MULTIKEY(&h41) THEN SORTIEREN ANZEIGE(1) MessageBox(0, "Spieler sortiert!", "Schachturnierorganisationsprogramm", MB_ICONINFORMATION OR MB_SYSTEMMODAL) END IF ' speichern - Taste S (save/speichern) IF MULTIKEY(&h1F) THEN SPEICHERN ' einen neuen Teilnehmer eingeben - Taste N (New/Neu) IF MULTIKEY(&h31) THEN i = TAZ+1 ANZEIGE(TAZ+1) INGET 35, 9, 23, Eingabe(1) Spieler(i) = Eingabe(1) k = 1 TAZ = 0 DO IF Spieler(k) = "" THEN EXIT DO TAZ += 1 k += 1 LOOP ANZEIGE(TAZ) END IF 'letzten Eintrag aufrufen mit Bild-Ab-Taste IF MULTIKEY(&h51) THEN i = TAZ ANZEIGE(TAZ) END IF ' Spieler 1 aufrufen mit Bild-Auf-Taste IF MULTIKEY(&h49) THEN i = 1 ANZEIGE(1) END IF ' nach oben - Pfeiltaste nach oben -1 IF MULTIKEY(&h48) AND Tastensperre(1) AND TAZ > 0 THEN Tastensperre(1) = FALSE i -= 1 IF i < 1 THEN i = 1 ANZEIGE(i) END IF IF MULTIKEY(&h48) THEN Tastensperre(1) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(1) = TRUE ' nach unten - Pfeiltaste nach unten +1 IF MULTIKEY(&h50) AND Tastensperre(2) AND TAZ > 0 THEN Tastensperre(2) = FALSE i += 1 IF i >= TAZ THEN i = TAZ ANZEIGE(i) END IF IF MULTIKEY(&h50) THEN Tastensperre(2) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(2) = TRUE ' nach unten - Pfeiltaste nach links -24 IF MULTIKEY(&h4B) AND Tastensperre(3) AND TAZ > 0 THEN Tastensperre(3) = FALSE IF i > 1 THEN i -= 24 IF i <= 0 THEN i = 1 ANZEIGE(i) END IF IF MULTIKEY(&h4B) THEN Tastensperre(3) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(3) = TRUE ' nach oben - Pfeiltaste nach rechts +24 IF MULTIKEY(&h4D) AND Tastensperre(4) AND TAZ > 0 THEN Tastensperre(4) = FALSE IF i < TAZ THEN i += 24 IF i >= TAZ THEN i = TAZ ANZEIGE(i) END IF IF MULTIKEY(&h4D) THEN Tastensperre(4) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(4) = TRUE ' Datei anlegen - Taste STRG + A IF MULTIKEY(&h1E) AND MULTIKEY(&h1D) THEN ANLEGEN ' Eintrag aus Datei löschen - STRG + Taste E (Löschen / Entfernen) IF MULTIKEY(&h26) AND MULTIKEY(&h12) THEN LOESCHEN ' Datei laden - Taste L (Load/Laden) IF MULTIKEY(&h26) THEN LADEN END IF IF Seite = 2 THEN ' nach oben - Pfeiltaste nach oben -1 IF MULTIKEY(&h48) AND Tastensperre(1) THEN IF ppr < 60 THEN Tastensperre(1) = FALSE Brett -= 1 IF Brett < 1 THEN Brett = 1 AUSLOSUNG ERGEBNISANZEIGE END IF IF MULTIKEY(&h48) AND ppr < 60 THEN Tastensperre(1) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(1) = TRUE ' nach unten - Pfeiltaste nach unten +1 IF MULTIKEY(&h50) AND Tastensperre(2) THEN IF ppr < 60 THEN Tastensperre(2) = FALSE Brett += 1 IF Brett >= ppr THEN Brett = ppr AUSLOSUNG ERGEBNISANZEIGE END IF IF MULTIKEY(&h50) AND ppr < 60 THEN Tastensperre(2) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(2) = TRUE ' nach unten - Pfeiltaste nach links -59 IF MULTIKEY(&h4B) AND Tastensperre(3) AND ppr > 59 THEN Tastensperre(3) = FALSE IF Brett > 1 THEN Brett -= 59 IF Brett <= 0 THEN Brett = 1 AUSLOSUNG ERGEBNISANZEIGE END IF IF MULTIKEY(&h4B) THEN Tastensperre(3) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(3) = TRUE ' nach oben - Pfeiltaste nach rechts +59 IF MULTIKEY(&h4D) AND Tastensperre(4) AND ppr > 59 THEN Tastensperre(4) = FALSE IF Brett < ppr THEN Brett += 59 IF Brett >= ppr THEN Brett = ppr AUSLOSUNG ERGEBNISANZEIGE END IF IF MULTIKEY(&h4D) THEN Tastensperre(4) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(4) = TRUE ' Runde vor - (Plus-Taste) IF MULTIKEY(&h4E) AND Tastensperre(5) AND Runde < RAZ THEN Tastensperre(5) = FALSE Brett = 1 Runde += 1 FONT "RUNDE: " + LTRIM$(STR$(Runde)) + " ", 7, 88, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 AUSLOSUNG ERGEBNISANZEIGE END IF IF MULTIKEY(&h4E) THEN Tastensperre(5) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(5) = TRUE ' Runde zurück - (Minus-Taste) IF MULTIKEY(&h0C) AND Tastensperre(6) AND Runde > 1 THEN Tastensperre(6) = FALSE Brett = 1 Runde -= 1 FONT "RUNDE: " + LTRIM$(STR$(Runde)) + " ", 7, 88, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 AUSLOSUNG ERGEBNISANZEIGE END IF IF MULTIKEY(&h0C) THEN Tastensperre(6) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(6) = TRUE ' Auslosen - Taste A IF MULTIKEY(&h1E) THEN AUSLOSUNG ' Punkte eingeben - Taste 1 - Gewinn Weiß (1-0) IF MULTIKEY(&h02) AND Tastensperre(7) THEN Tastensperre(7) = FALSE Punkte(paarungen(Brett,1,Runde),Runde) = 1 ' "1" Punkte(paarungen(Brett,2,Runde),Runde) = 0 ' "0" kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE SLEEP 2000/TAZ, 1 IF brett < ppr THEN Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END IF IF MULTIKEY(&h02) THEN Tastensperre(7) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(7) = TRUE ' Punkte eingeben - Taste 0 - Gewinn Schwarz (0-1) IF MULTIKEY(&h0B) AND Tastensperre(8) THEN Tastensperre(8) = FALSE Punkte(paarungen(Brett,1,Runde),Runde) = 0 ' "0" Punkte(paarungen(Brett,2,Runde),Runde) = 1 ' "1" kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE SLEEP 2000/TAZ, 1 IF brett < ppr THEN Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END IF IF MULTIKEY(&h0B) THEN Tastensperre(8) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(8) = TRUE ' Punkte eingeben - Taste 2 - Remis (1/2:1/2) IF MULTIKEY(&h03) AND Tastensperre(9) THEN Tastensperre(9) = FALSE Punkte(paarungen(Brett,1,Runde),Runde) = 0.5 ' "0.5" Punkte(paarungen(Brett,2,Runde),Runde) = 0.5 ' "0.5" kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE SLEEP 2000/TAZ, 1 IF brett < ppr THEN Brett +=1 AUSLOSUNG ERGEBNISANZEIGE END IF END IF IF MULTIKEY(&h03) THEN Tastensperre(9) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(9) = TRUE ' Kampflose Ergebnisse eintragen - Taste K IF MULTIKEY(&h25) AND Tastensperre(10) THEN Tastensperre(10) = FALSE kampflose(Brett, Runde) = 1 ERGEBNISANZEIGE END IF IF MULTIKEY(&h25) THEN Tastensperre(10) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(10) = TRUE /' Punkte eingeben - Taste ??? = Kampflos beide Spieler (---) IF MULTIKEY(&h1D) AND MULTIKEY(&h0C) AND Tastensperre(12) THEN Tastensperre(11) = FALSE Punkte((paarungen(Brett,1,Runde)),Runde) = 0 ' "-" Punkte((paarungen(Brett,2,Runde)),Runde) = 0 ' "-" kampflose(Brett, Runde) = 1 ERGEBNISANZEIGE END IF ' IF MULTIKEY(&h0C) THEN Tastensperre(11) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(11) = TRUE '/ /' Punkte eingeben - Taste ??? = Verloren beide Spieler (0-0) IF MULTIKEY(&h1D) AND MULTIKEY(&h0C) AND Tastensperre(13) THEN Tastensperre(13) = FALSE Punkte((paarungen(Brett,1,Runde)),Runde) = 0 ' "0" Punkte((paarungen(Brett,2,Runde)),Runde) = 0 ' "0" kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE END IF ' IF MULTIKEY(&h0C) THEN Tastensperre(11) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(12) = TRUE '/ /' Punkte eingeben - Taste ??? = Verloren/Remis (0-0,5) IF MULTIKEY(&h1D) AND MULTIKEY(&h0C) AND Tastensperre(14) THEN Tastensperre(14) = FALSE Punkte((paarungen(Brett,1,Runde)),Runde) = 0 ' "0" Punkte((paarungen(Brett,2,Runde)),Runde) = 0 ' "0.5" kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE END IF ' IF MULTIKEY(&h0C) THEN Tastensperre(14) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(14) = TRUE '/ /' Punkte eingeben - Taste ??? = Remis/Verloren (0,5-0) IF MULTIKEY(&h1D) AND MULTIKEY(&h0C) AND Tastensperre(15) THEN Tastensperre(15) = FALSE Punkte((paarungen(Brett,1,Runde)),Runde) = 0 ' "0.5" Punkte((paarungen(Brett,2,Runde)),Runde) = 0 ' "0" kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE END IF ' IF MULTIKEY(&h0C) THEN Tastensperre(15) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(15) = TRUE '/ ' Punkte löschen - Taste Entf IF MULTIKEY(&h53) AND Tastensperre(16) THEN Tastensperre(16) = FALSE Punkte(paarungen(Brett,1,Runde),Runde) = 2000 Punkte(paarungen(Brett,2,Runde),Runde) = 2000 kampflose(Brett, Runde) = 0 ERGEBNISANZEIGE IF brett < ppr THEN Brett += 1 AUSLOSUNG ERGEBNISANZEIGE END IF IF MULTIKEY(&h53) THEN Tastensperre(16) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(16) = TRUE END IF IF Seite = 3 THEN ' nach oben - Pfeiltaste nach oben -1 IF MULTIKEY(&h48) AND Tastensperre(1) THEN IF TAZ < 70 THEN Tastensperre(1) = FALSE Platz -= 1 IF Platz < 1 THEN Platz = 1 PUNKTEANZEIGE END IF IF MULTIKEY(&h48) AND ppr < 60 THEN Tastensperre(1) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(1) = TRUE ' nach unten - Pfeiltaste nach unten +1 IF MULTIKEY(&h50) AND Tastensperre(2) THEN IF TAZ < 70 THEN Tastensperre(2) = FALSE Platz += 1 IF Platz >= TAZ THEN Platz = TAZ PUNKTEANZEIGE END IF IF MULTIKEY(&h50) AND ppr < 60 THEN Tastensperre(2) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(2) = TRUE ' nach unten - Pfeiltaste nach links -70 IF MULTIKEY(&h4B) AND Tastensperre(3) AND TAZ > 70 THEN Tastensperre(3) = FALSE IF Platz > 1 THEN Platz -= 70 IF Platz <= 0 THEN Platz = 1 PUNKTEANZEIGE END IF IF MULTIKEY(&h4B) THEN Tastensperre(3) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(3) = TRUE ' nach oben - Pfeiltaste nach rechts +70 IF MULTIKEY(&h4D) AND Tastensperre(4) AND TAZ > 70 THEN Tastensperre(4) = FALSE IF Platz < TAZ THEN Platz += 70 IF Platz >= TAZ THEN Platz = TAZ PUNKTEANZEIGE END IF IF MULTIKEY(&h4D) THEN Tastensperre(4) = FALSE ELSE IF mausk <> 1 THEN Tastensperre(4) = TRUE END IF ' Teilnehmer aufrufen - Taste T IF MULTIKEY(&h14) THEN IF Seite <> 1 THEN SCREENRES 1024, 420, 32 Seite = 1 MENU ANZEIGE(i) END IF END IF ' Paarungen aufrufen - Taste P IF MULTIKEY(&h19) THEN IF Seite <> 2 THEN SCREENRES 1024, 620, 32 Seite = 2 MENU ANZEIGE(i) END IF END IF ' Rangliste aufrufen - Taste R IF MULTIKEY(&h13) THEN IF Seite <> 3 THEN SCREENRES 1024, 640, 32 Seite = 3 MENU PUNKTEANZEIGE END IF END IF ' Programmende mit ESC-Taste IF MULTIKEY(&h01) THEN END SLEEP 1 IF taste = CHR(27) OR taste = CHR(255, 107) THEN EXIT DO SCREENLOCK FONT TIME, 2, 120, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 SCREENUNLOCK LOOP ' Ende ' CLOSEN END SUB ANZEIGE (i AS INTEGER) IF Seite = 1 THEN SCREENLOCK IF TAZ >= 1 THEN FONT "Eintrag: " + LTRIM$(STR$(i)) + " von " + LTRIM$(STR$(TAZ)) + " ", 45, 3, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 IF TAZ = 0 THEN FONT "Eintrag: " + LTRIM$(STR$(i-1)) + " von " + LTRIM$(STR$(TAZ)) + " ", 45, 3, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT " ", 9, 23, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 ' Name, Vorname FONT " ", 9, 66, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT " ", 9, 78, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT " ", 9, 92, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT " ", 9, 106, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT " ", 9, 2, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 'ausgewählten Spieler anzeigen FONT i & ".", 9, 2, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT Spieler(i), 9, 23, &hFFFFFF, &h55FF55, &h00AA00, 0, 0 IF ELO(i) <> 0 THEN FONT LTRIM$(STR$(ELO(i))), 9, 66, &hFFFFFF, &h55FF55, &h00AA00, 0, 0 IF DWZ(i) <> 0 THEN FONT LTRIM$(STR$(DWZ(i))), 9, 78, &hFFFFFF, &h55FF55, &h00AA00, 0, 0 IF Titel(i) <> "" THEN FONT LTRIM$(STR$(Titel(i))), 9, 92, &hFFFFFF, &h55FF55, &h00AA00, 0, 0 IF Verein(i) <> "" THEN FONT Verein(i), 9, 106, &hFFFFFF, &h55FF55, &h00AA00, 0, 0 ' &hFFFFFF, &hAAAAAA, &h555555 FOR k = 0 TO 23 FONT " ", k+20, 5, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 NEXT ' 24 Teilnehmer/Spieler anzeigen FOR j = 0 TO 23 ' FONT "Teilnehmer ELO DWZ Titel Verein", 1+17, 5, &hFFFFFF, &hFF55FF, &hAA00AA IF Spieler(i+j) = "" THEN EXIT FOR ' Schleife verlassen, wenn letzter Spieler aufgerufen wurde! FONT i+j & ": " & Spieler(i+j), j+ 20, 5, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF ELO(i+j) > 0 THEN FONT LTRIM$(STR$(ELO(i+j))), j+20, 66-18, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF DWZ(i+j) > 0 THEN FONT LTRIM$(STR$(DWZ(i+j))), j+20, 78-18, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Titel(i+j) <> "" THEN FONT LTRIM$(STR$(Titel(i+j))), j+20, 92-18, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Verein(i+j) <> "" THEN FONT Verein(i+j), j+20, 106-18, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 NEXT Eingabe(1) = Spieler(i) IF ELO(i) <> 0 THEN Eingabe(2) = STR(ELO(i)) ELSE Eingabe(2) = "" IF DWZ(i) <> 0 THEN Eingabe(3) = STR(DWZ(i)) ELSE Eingabe(3) = "" Eingabe(4) = STR(Titel(i)) Eingabe(5) = Verein(i) SCREENUNLOCK END IF END SUB SUB MENU ' SCREENLOCK CLS ' Bildschirm löschen ' Schaltflächen anzeigen FELD 0, 0, 1023, 30, &hAAAAAA FELD 2, 2, 93, 28, 0 ' Teilnehmer FELD 97, 2, 182, 28, 0 ' Paarungen FELD 186, 2, 268, 28, 0 ' Tabelle FELD 944, 2, 1021, 28, 0 ' Feld für die Uhranzeige FONT "TEILNEHMER", 2, 2, &hFFFFFF, &hFF55FF, &hAA00AA, 1, 1 FONT "PAARUNGEN", 2, 14, &hFFFFFF, &hFF55FF, &hAA00AA, 1, 1 FONT "RANGLISTE", 2, 25, &hFFFFFF, &hFF55FF, &hAA00AA, 1, 1 IF Seite = 1 THEN ' Eingabefelder anzeigen FELD 48, 57, 470, 77, 0 ' Name, Vorname FELD 475, 57, 565, 77, 0 ' ELO FELD 570, 57, 660, 77, 0 ' DWZ FELD 665, 57, 765, 77, 0 ' Titel FELD 770, 57, 1020, 77, 0 ' Verein ' FELD 8, 386, 77, 406, 0 ' Datei anlegen FELD 87, 386, 142, 406, 0 ' Datei laden FELD 152, 386, 238, 406, 0 ' Datei speichern FELD 248, 386, 380, 406, 0 ' neuer Spieler FELD 390, 386, 494, 406, 0 ' Spieler löschen ' FELD 28, 130, 992, 348, 0 ' Anzeige Teilnehmer FONT "Teilnehmer ELO DWZ Titel Verein", 18, 5, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT i & ".", 9, 2, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 ' Anzeige ausgewählter Spieler FONT "Name, Vorname:", 9, 8, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "ELO:", 9, 61, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "DWZ:", 9, 73, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "Titel:", 9, 85, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "Verein:", 9, 98, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "ANLEGEN", 50, 3, &hFFFFFF, &hFF55FF, &hAA00AA, 1, 1 FONT "LADEN", 50, 13, &hFFFFFF, &hFF55FF, &hAA00AA, 1, 1 FONT "SPEICHERN", 50, 21, &hFFFFFF, &hFF55FF, &hAA00AA, 1, 1 FONT " NEUER SPIELER ", 50, 33, &hFFFFFF, &hFF55FF, &hAA00AA, 1, 2 ' FONT " LöSCHEN ", 50, 51, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT " ENTFERNEN ", 50, 51, &hFFFFFF, &hFF55FF, &hAA00AA, 1, 2 IF TAZ > 1 THEN FONT "Eintrag: " + LTRIM$(STR$(i)) + " von " + LTRIM$(STR$(TAZ)) + " ", 45, 3, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 IF TAZ = 0 THEN FONT "Eintrag: " + LTRIM$(STR$(i-1)) + " von " + LTRIM$(STR$(TAZ)) + " ", 45, 3, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 END IF IF Seite = 2 THEN FONT "RUNDE: " + LTRIM$(STR$(Runde)) + " ", 7, 88, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 ' FELD 332, 67, 1021, 548, 0 ' Anzeige Paarungstafel FELD 262, 67, 322, 548, 0 ' Anzeige Punktetafel FELD 332, 563, 411, 596, 0 ' Auslosung ' Ergebnisauswahlfelder FELD 6, 66, 67, 84, 0 ' Feld 1-0 FELD 76, 66, 137, 84, 0 ' Feld 1/2-1/2 FELD 146, 66, 207, 84, 0 ' Feld 0-1 FELD 6, 89, 67, 109, 0 ' Feld 1/2-0 FELD 76, 89, 137, 109, 0 ' Feld 0-1/2 FELD 146, 89, 207, 109, 0 ' Feld 0-0 FELD 6, 114, 67, 134, 0 ' Feld +-- FELD 76, 114, 137, 134, 0 ' Feld --- FELD 146, 114, 207, 134, 0 ' Feld --+ ' mögliche Ergebnisse FONT "1-0", 10, 4, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "1/2-1/2", 10, 11, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "0-1", 10, 22, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "1/2-0", 13, 3, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "0-1/2", 13, 12, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "0-0", 13, 22, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "+--", 16, 4, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "---", 16, 13, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "--+", 16, 22, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 ' Auslosung FONT "AUSLOSUNG", 72, 43, &hFFFFFF, &hFF55FF, &hAA00AA, 1, 1 ' FELD 87, 386, 142, 406, 0 ' Datei laden END IF IF Seite = 3 THEN ' Eingabefelder anzeigen FELD 3, 57, 43, 635, 0 ' Platz FELD 48, 57, 340, 635, 0 ' Name, Vorname FELD 345, 57, 390, 635, 0 ' ELO - 475 565 FELD 395, 57, 440, 635, 0 ' DWZ - 570 660 FELD 445, 57, 490, 635, 0 ' Titel - 665 765 FELD 495, 57, 600, 635, 0 ' Punkte - 770 1020 FONT "Rang", 7, 2, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "Teilnehmer", 7, 8, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "ELO", 7, 45, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "DWZ", 7, 51, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "Titel", 7, 57, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT "Punkte", 7, 63, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 ' FONT "2000.5", 9, 63, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 END IF FONT TIME, 2, 120, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 ' Uhrzeit anzeigen ' SCREENUNLOCK END SUB SUB BUTTON (X AS INTEGER, Y AS INTEGER, XX AS INTEGER, YY AS INTEGER) LINE (X, Y)-(X, YY), &h555555 LINE (X, Y)-(XX, Y), &h555555 LINE (X, YY)-(XX, YY), &hFFFFFF LINE (XX, Y)-(XX, YY), &hFFFFFF DO GETMOUSE mausx, mausy,, mausk SCREENLOCK FONT TIME, 2, 120, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0' Zeit anzeigen SCREENUNLOCK SLEEP 1 IF mausk = 0 THEN EXIT DO LOOP LINE (X, Y)-(X, YY), &hFFFFFF LINE (X, Y)-(XX, Y), &hFFFFFF LINE (X, YY)-(XX, YY), &h555555 LINE (XX, Y)-(XX, YY), &h555555 END SUB SUB FELD (X AS INTEGER, Y AS INTEGER, XX AS INTEGER, YY AS INTEGER, FARBEN AS INTEGER) LINE (X, Y)-(X, YY), &hFFFFFF LINE (X, Y)-(XX, Y), &hFFFFFF LINE (X, YY)-(XX, YY), &h555555 LINE (XX, Y)-(XX, YY), &h555555 VIEW (X + 2, Y + 2)-(XX - 2, YY - 2), FARBEN, FARBEN VIEW (0, 0)-(1024, 647) END SUB SUB FONT (WORT AS STRING, HOEHE AS INTEGER, BREITE AS INTEGER, FARBE1 AS INTEGER, FARBE2 AS INTEGER, FARBE3 AS INTEGER, ATTRIBUT AS INTEGER, STELLE AS INTEGER) REM PALETTE 7, 7 COLOR 7 IF Sonderzeichen = 0 THEN CharToOem Wort, Wort L = LEN(WORT) LOCATE HOEHE, BREITE: PRINT WORT; T = HOEHE * 8 - 8 FOR E = BREITE * 8 - 8 TO BREITE * 8 + L * 8 - 8 IF E >= ((Breite*8+(8*STELLE))-16) AND E < ((Breite*8+(8*STELLE))-8) AND ATTRIBUT = 1 THEN FOR XXX = 0 TO 7 IF XXX < 2 AND POINT(E, T + XXX) = 7 THEN PSET (E, T + XXX), &hFFFFFF IF XXX > 1 AND XXX < 5 AND POINT(E, T + XXX) = 7 THEN PSET (E, T + XXX), &h55FFFF IF XXX > 4 AND POINT(E, T + XXX) = 7 THEN PSET (E, T + XXX), &h00AAAA NEXT ELSE FOR XXX = 0 TO 7 IF XXX < 2 AND POINT(E, T + XXX) = 7 THEN PSET (E, T + XXX), FARBE1 IF XXX > 1 AND XXX < 5 AND POINT(E, T + XXX) = 7 THEN PSET (E, T + XXX), FARBE2 IF XXX > 4 AND POINT(E, T + XXX) = 7 THEN PSET (E, T + XXX), FARBE3 NEXT END IF NEXT PALETTE COLOR 15 END SUB SUB INGET (ANZAHLE AS INTEGER, STELLEN AS INTEGER, ZEILEN AS INTEGER, N AS STRING) N = RTRIM(N) BB = LEN(N) Sonderzeichen = TRUE FONT N + "_", STELLEN, ZEILEN, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 Ausgabe: AA = "" WHILE AA = "" COLOR &hFFFFFF AA = INKEY$ SLEEP 1 WEND IF MULTIKEY(&h01) THEN END IF ASC(AA) < 32 AND ASC(AA) <> 27 AND ASC(AA) <> 13 AND ASC(AA) <> 8 THEN GOTO Ausgabe IF ASC(AA) > 126 AND ASC(AA) <> 129 AND ASC(AA) <> 132 AND ASC(AA) <> 142 AND ASC(AA) <> 148 AND ASC(AA) <> 153 AND ASC(AA) <> 154 THEN GOTO Ausgabe ' IF ASC(AA) > 126 THEN GOTO Ausgabe IF LEFT(AA, 1) = CHR(0) THEN GOTO Ausgabe SELECT CASE AA CASE CHR(13), CHR(27): FONT N + " ", STELLEN, ZEILEN, &hFFFFFF, &hAAAAAA, &h555555, 0, 0: GOTO ENDE CASE CHR(8): BB -= 1: IF BB < 0 THEN BB = 0: ELSE N = LEFT(N, BB): FONT N + "_ ", STELLEN, ZEILEN, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 CASE IS <> "": BB += 1: IF BB = ANZAHLE + 1 THEN BB = BB - 1: GOTO Ausgabe ELSE N = N + AA: FONT N + "_", STELLEN, ZEILEN, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 END SELECT GOTO Ausgabe ENDE: END SUB SUB SORTIEREN FOR j = 1 TO TAZ FOR k = 1 TO TAZ-1 IF DWZ(k) < DWZ(k+1) THEN SWAP ELO(k), ELO(k+1): SWAP DWZ(k), DWZ(k+1): SWAP Titel(k), Titel(k+1): SWAP Spieler(k), Spieler(k+1): SWAP Verein(k), Verein(k+1) NEXT NEXT DIM f AS INTEGER = FREEFILE /' sortierte Datei speichern IF DateiName <> "" THEN OPEN DateiName FOR OUTPUT AS #f FOR j = 1 TO TAZ OemToChar Spieler(j), Spieler(j) OemToChar Verein(j), Verein(j) WRITE #f, ELO(j), DWZ(j), Titel(j), Spieler(j), Verein(j) CharToOem Spieler(j), Spieler(j) CharToOem Verein(j), Verein(j) NEXT CLOSE #f ELSE DateiName = LOADSAVEDIALOG (1,fil,1,,"stop") OPEN DateiName FOR OUTPUT AS #f FOR j = 1 TO TAZ OemToChar Spieler(j), Spieler(j) OemToChar Verein(j), Verein(j) WRITE #f, ELO(j), DWZ(j), Titel(j), Spieler(j), Verein(j) CharToOem Spieler(j), Spieler(j) CharToOem Verein(j), Verein(j) NEXT CLOSE #f END IF '/ ' CharToOem Spieler(k+1), Spieler(k+1) ' CharToOem Verein(k+1), Verein(k+1) ' CharToOem Spieler(k), Spieler(k) ' CharToOem Verein(k), Verein(k) ' OemToChar Spieler(k), Spieler(k) ' OemToChar Verein(k), Verein(k) END SUB SUB LOESCHEN ' Dateiendung definieren fil = "Turnierdateien (*.stop)" + CHR(0) + "*.STOP" + CHR(0) ' Eintrag aus Datei löschen ' Datei anschließend neu laden Eintrag(i) = 1 ' Eintrag zum löschen auswählen! ' gelöschte Einträge zählen vorhandeneEintraege = 0 FOR j = 1 TO maxAnzahl IF Eintrag(j) = 1 THEN vorhandeneEintraege += 1 NEXT ' Anzahl der Einträge ermitteln TAZ -= vorhandeneEintraege TAZ += 1 DIM f AS INTEGER = FREEFILE ' Datei nach löschen eines Elementes speichern IF DateiName <> "" THEN OPEN DateiName FOR OUTPUT AS #f FOR j = 1 TO TAZ OemToChar Spieler(j), Spieler(j) OemToChar Verein(j), Verein(j) IF Eintrag(j) <> 1 THEN WRITE #f, ELO(j), DWZ(j), Titel(j), Spieler(j), Verein(j) NEXT CLOSE #f MessageBox(0, "löschen erfolgreich!", "Schachturnierorganisationsprogramm", MB_ICONINFORMATION OR MB_SYSTEMMODAL) END IF IF DateiName = "" AND ELO(1) <> 0 THEN DateiName = LOADSAVEDIALOG (1,fil,1,,"stop") OPEN DateiName FOR OUTPUT AS #f FOR j = 1 TO TAZ OemToChar Spieler(j), Spieler(j) OemToChar Verein(j), Verein(j) IF Eintrag(j) <> 1 THEN WRITE #f, ELO(j), DWZ(j), Titel(j), Spieler(j), Verein(j) NEXT CLOSE #f IF DateiName <> "" THEN MessageBox(0, "löschen erfolgreich!", "Schachturnierorganisationsprogramm", MB_ICONINFORMATION OR MB_SYSTEMMODAL) END IF Eintrag(i) = 0 ' Eintrag wurde gelöscht und wird wieder freigeben für den nächsten Löschvorgang vorhandeneEintraege = 0 ' Variable auf 0 setzen ' Werte aus Datei einlesen IF DateiName <> "" THEN FOR j = 1 TO MaxAnzahl Spieler(j) = "" ELO(j) = 0 DWZ(j) = 0 Titel(j) = "" Verein(j) = "" NEXT ' Daten einlesen OPEN DateiName FOR INPUT AS #f TAZ = 1 DO UNTIL EOF(f) INPUT #f, ELO(TAZ), DWZ(TAZ), Titel(TAZ), Spieler(TAZ), Verein(TAZ) CharToOem Spieler(TAZ), Spieler(TAZ) CharToOem Verein(TAZ), Verein(TAZ) TAZ += 1 LOOP TAZ -= 1 CLOSE #f Eingabe(1) = Spieler(1) IF ELO(1) <> 0 THEN Eingabe(2) = STR(ELO(1)) IF DWZ(1) <> 0 THEN Eingabe(3) = STR(DWZ(1)) Eingabe(4) = STR(Titel(1)) Eingabe(5) = Verein(1) i = 1 ANZEIGE(i) END IF END SUB SUB LADEN DIM f AS INTEGER = FREEFILE fil = "Turnierdateien (*.stop)" + CHR(0) + "*.STOP" + CHR(0) DateiName = LOADSAVEDIALOG (,fil,1,,"stop") IF DateiName <> "" THEN FOR j = 1 TO MaxAnzahl Spieler(j) = "" ELO(j) = 0 DWZ(j) = 0 Titel(j) = "" Verein(j) = "" NEXT OPEN DateiName FOR INPUT AS #f TAZ = 1 DO UNTIL EOF(f) INPUT #f, ELO(TAZ), DWZ(TAZ), Titel(TAZ), Spieler(TAZ), Verein(TAZ) CharToOem Spieler(TAZ), Spieler(TAZ) CharToOem Verein(TAZ), Verein(TAZ) TAZ += 1 LOOP TAZ -= 1 CLOSE #f Eingabe(1) = Spieler(1) IF ELO(1) <> 0 THEN Eingabe(2) = STR(ELO(1)) IF DWZ(1) <> 0 THEN Eingabe(3) = STR(DWZ(1)) Eingabe(4) = STR(Titel(1)) Eingabe(5) = Verein(1) i = 1 ' RUECKSETZEN Sonderzeichen = TRUE ANZEIGE(i) WINDOWTITLE DateiName OemToChar Spieler(0), Spieler(0) END IF END SUB FUNCTION LOADSAVEDIALOG (savedlog AS INTEGER, filter AS STRING, fltrindex AS INTEGER,_ initdir AS STRING, strDefExt AS STRING) AS STRING DIM FB_OFN AS OPENFILENAME FB_OFN.lStructSize = LEN(FB_OFN) FB_OFN.hwndOwner = 0 ' nur Console FB_OFN.hInstance = 0 DIM strFilter AS STRING IF filter = "" THEN strFilter = "Alle Dateien (*.*)" + CHR(0) +"*.*" + CHR(0, 0) 'Vorgabe ELSE strFilter = filter + CHR(0, 0) END IF FB_OFN.lpstrFilter = STRPTR(strFilter) FB_OFN.nFilterIndex = fltrindex DIM strFile AS STRING *2048 strFile = SPACE(2047) + CHR(0) FB_OFN.lpstrFile = STRPTR(strFile) FB_OFN.nMaxFile = LEN(strFile) DIM strFileTitle AS STRING *2048 strFileTitle = STRING(2048, 0) FB_OFN.lpstrFileTitle = STRPTR(strFileTitle) FB_OFN.nMaxFileTitle = LEN(strFileTitle) DIM strdrstr AS STRING IF initdir = "" THEN strdrstr = "." ' Vorgabe aktueller Pfad ELSE strdrstr = initdir END IF FB_OFN.lpstrInitialDir = STRPTR(strdrstr) DIM strcapt AS STRING IF savedlog = 1 THEN strcapt = "Dateien Speichern" FB_OFN.lpstrTitle = STRPTR(strcapt) IF strDefExt > "" THEN DIM strdext AS STRING strdext = strDefExt FB_OFN.lpstrDefExt = STRPTR(strdext) END IF FB_OFN.flags = OFN_EXPLORER OR OFN_LONGNAMES OR OFN_OVERWRITEPROMPT OR OFN_HIDEREADONLY IF GetSaveFileName(@FB_OFN) THEN LOADSAVEDIALOG = TRIM(strFile) ELSE IF savedlog = 0 THEN strcapt = "Dateien öffnen" FB_OFN.lpstrTitle = STRPTR(strcapt) FB_OFN.flags = OFN_EXPLORER OR OFN_LONGNAMES OR OFN_CREATEPROMPT OR _ OFN_NODEREFERENCELINKS OR OFN_HIDEREADONLY IF GetOpenFileName(@FB_OFN) THEN LOADSAVEDIALOG = TRIM(strFile) END IF END IF IF savedlog = 2 THEN strcapt = "Datei anlegen" FB_OFN.lpstrTitle = STRPTR(strcapt) IF strDefExt > "" THEN DIM strdext AS STRING strdext = strDefExt FB_OFN.lpstrDefExt = STRPTR(strdext) END IF FB_OFN.flags = OFN_EXPLORER OR OFN_LONGNAMES OR OFN_OVERWRITEPROMPT OR OFN_HIDEREADONLY IF GetSaveFileName(@FB_OFN) THEN LOADSAVEDIALOG = TRIM(strFile) END IF END FUNCTION SUB ANLEGEN fil = "Schachturnierorganisationsprogramm (*.stop)" + CHR(0) + "*.STOP" + CHR(0) MessageBox(0, "Achtung, alte Dateien werden überschrieben!", "Schachturnierorganisationsprogramm", MB_ICONWARNING OR MB_SYSTEMMODAL) DateiName = LOADSAVEDIALOG (2,fil,1,,"stop") DIM f AS INTEGER = FREEFILE OPEN DateiName FOR OUTPUT AS #F OemToChar Spieler(1), Spieler(1) OemToChar Verein(1), Verein(1) WRITE #f, ELO(1), DWZ(1), Titel(1), Spieler(1), Verein(1) CharToOem Spieler(1), Spieler(1) CharToOem Verein(1), Verein(1) CLOSE #F IF DateiName <> "" THEN MessageBox(0, "Datei wurde angelegt!", "Schachturnierorganisationsprogramm", MB_ICONINFORMATION OR MB_SYSTEMMODAL) END SUB SUB SPEICHERN j = 1 IF Spieler(TAZ+1) = "" AND ELO(TAZ+1) = 0 AND DWZ(TAZ+1) = 0 AND Titel(TAZ+1) = "" AND Verein(TAZ+1) = "" THEN TAZ -= 1 END IF DIM f AS INTEGER = FREEFILE IF DateiName <> "" THEN OPEN DateiName FOR OUTPUT AS #f DO ' *************************************************************************************** OemToChar Spieler(j), Spieler(j) OemToChar Verein(j), Verein(j) WRITE #f, ELO(j), DWZ(j), Titel(j), Spieler(j), Verein(j) CharToOem Spieler(j), Spieler(j) CharToOem Verein(j), Verein(j) ' *************************************************************************************** j += 1 LOOP WHILE j <= TAZ+1 TAZ += 1 CLOSE #f MessageBox(0, "Alles gespeichert!", "Schachturnierorganisationsprogramm", MB_ICONINFORMATION OR MB_SYSTEMMODAL) SCREENLOCK IF TAZ > 1 THEN FONT "Eintrag: " + LTRIM$(STR$(i)) + " von " + LTRIM$(STR$(TAZ)) + " ", 45, 3, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 IF TAZ = 0 THEN FONT "Eintrag: " + LTRIM$(STR$(i-1)) + " von " + LTRIM$(STR$(TAZ)) + " ", 45, 3, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 SCREENUNLOCK END IF IF DateiName = "" THEN ' MessageBox(0, "Speichern nicht möglich!", "Schienendatenbank", MB_ICONINFORMATION OR MB_SYSTEMMODAL) ' DIM f AS INTEGER = FREEFILE fil = "Turnierdateien (*.stop)" + CHR(0) + "*.STOP" + CHR(0) DateiName = LOADSAVEDIALOG (1,fil,1,,"stop") END IF END SUB SUB AUSLOSUNG ' DIM AS INTEGER startwert, Paarungssystem, sx, r, RAZ, ppr, rotation IF TAZ < 3 THEN EXIT SUB ' Rundensystem IF Paarungssystem = 1 THEN ' Partien pro Runde ermitteln! IF TAZ MOD 2 <> 0 THEN ppr = (TAZ - 1) / 2 ppr += 1 RAZ = TAZ ' IF ppr < 0 THEN ppr = 1 ' IF RAZ < 0 THEN RAZ = 1 ELSE ppr = TAZ / 2 RAZ = TAZ - 1 ' IF ppr < 0 THEN ppr = 1 ' IF RAZ < 0 THEN RAZ = 1 END IF REDIM paarungen((1 TO (ppr+58)), 1 TO 2, 1 TO RAZ) ' Paarungen neu initialisieren ' SCREENLOCK FELD 332, 67, 1021, 548, 0 ' Anzeige Paarungstafel ' SCREENUNLOCK startwert=1 sx = 1 FOR r = 1 TO RAZ rotation=startwert FOR j AS INTEGER=1 TO ppr paarungen(j,1,r)=rotation rotation +=1 IF rotation>RAZ THEN rotation=1 NEXT j FOR j AS INTEGER=ppr TO 2 STEP -1 paarungen(j,2,r)=rotation rotation +=1 IF rotation>RAZ THEN rotation=1 NEXT j IF TAZ MOD 2 <> 0 THEN paarungen(1,2,r)=TAZ + 1 ELSE paarungen(1,2,r)=TAZ END IF IF Runde MOD 2 = 0 THEN SWAP paarungen(1,1,r),paarungen(1,2,r) ' bei jeder geraden Runde erstes Paar tauschen ' bei mehr als 59 Paarungen, nur 59 anzeigen! ' SCREENLOCK IF ppr < 59 THEN FOR j = 0 TO ppr ' max 59 Paarungen! IF r = Runde THEN IF Spieler(paarungen(j+Brett,1,Runde)) <> "" THEN FONT LTRIM$(STR$(Brett+j)) + "| " + LTRIM$(STR$(paarungen(j+Brett,1,Runde))) + " " + Spieler(paarungen(j+Brett,1,Runde)), 9+sx, 43, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Spieler(paarungen(j+Brett,1,Runde)) <> "" THEN FONT " - " , 9+sx, 83, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Spieler(paarungen(j+Brett,2,Runde)) <> "" THEN FONT LTRIM$(STR$(paarungen(j+Brett,2,Runde))) + " " + Spieler(paarungen(j+Brett,2,Runde)), 9+sx, 86, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 END IF IF MULTIKEY(&h01) THEN END sx +=1 IF sx > 59 THEN sx = 1 NEXT j ELSE FOR j = 0 TO 58 ' max 59 Paarungen! IF r = Runde THEN IF Spieler(paarungen(j+Brett,1,Runde)) <> "" THEN FONT LTRIM$(STR$(Brett+j)) + "| " + LTRIM$(STR$(paarungen(j+Brett,1,Runde))) + " " + Spieler(paarungen(j+Brett,1,Runde)), 9+sx, 43, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Spieler(paarungen(j+Brett,1,Runde)) <> "" THEN FONT " - " , 9+sx, 83, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Spieler(paarungen(j+Brett,2,Runde)) <> "" THEN FONT LTRIM$(STR$(paarungen(j+Brett,2,Runde))) + " " + Spieler(paarungen(j+Brett,2,Runde)), 9+sx, 86, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 END IF IF MULTIKEY(&h01) THEN END sx +=1 IF sx > ppr THEN sx = 1 NEXT j END IF startwert=paarungen(ppr,2,r) NEXT r ' SCREENUNLOCK END IF END SUB SUB ERGEBNISANZEIGE IF Seite = 2 THEN ' Ergebnisse anzeigen - maximal 59 Stück!!! IF ppr < 60 THEN SCREENLOCK FOR j = 0 TO ppr FONT " ", j+10, 34, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF kampflose(Brett+j, Runde) = 0 THEN IF Punkte(paarungen(Brett+j,1,Runde),Runde) <> 2000 AND Punkte(paarungen(Brett+j,2,Runde),Runde) <> 2000 AND Punkte(paarungen(Brett+j,1,Runde),Runde) <> 0.5 AND Punkte(paarungen(Brett+j,2,Runde),Runde) <> 0.5 AND Brett+j <= ppr THEN FONT LTRIM$(STR$(Punkte(paarungen(Brett+j,1,Runde),Runde))) + " - " + LTRIM$(STR$(Punkte((paarungen(Brett+j,2,Runde)),Runde))), j+10, 35, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 0.5 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 0.5 AND Brett+j <= ppr THEN FONT LTRIM$(STR$(Punkte(paarungen(Brett+j,1,Runde),Runde))) + "-" + LTRIM$(STR$(Punkte(paarungen(Brett+j,2,Runde),Runde))), j+10, 34, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 0.5 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 0 AND Brett+j <= ppr THEN FONT LTRIM$(STR$(Punkte(paarungen(Brett+j,1,Runde),Runde))) + "-" + LTRIM$(STR$(Punkte(paarungen(Brett+j,2,Runde),Runde))), j+10, 35, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 0 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 0.5 AND Brett+j <= ppr THEN FONT LTRIM$(STR$(Punkte(paarungen(Brett+j,1,Runde),Runde))) + "-" + LTRIM$(STR$(Punkte(paarungen(Brett+j,2,Runde),Runde))), j+10, 35, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 ELSE IF Punkte(paarungen(Brett+j,1,Runde),Runde) <> 2000 AND Punkte(paarungen(Brett+j,2,Runde),Runde) <> 2000 AND Brett+j <= ppr THEN IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 0 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 1 THEN FONT " -" + " - " + "+", j+10, 34, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 1 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 0 THEN FONT " +" + " - " + "-", j+10, 34, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 0 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 0 THEN FONT " -" + " - " + "-", j+10, 34, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 END IF END IF NEXT SCREENUNLOCK EXIT SUB END IF '/ ' bei mehr als 59 Paarungen, nur 59 anzeigen! IF ppr > 59 THEN SCREENLOCK FOR j = 0 TO 58 FONT " ", j+10, 34, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF kampflose(Brett+j, Runde) = 0 THEN IF Punkte(paarungen(Brett+j,1,Runde),Runde) < 2000 AND Punkte(paarungen(Brett+j,2,Runde),Runde) < 2000 AND Punkte(paarungen(Brett+j,1,Runde),Runde) <> 0.5 AND Punkte(paarungen(Brett+j,2,Runde),Runde) <> 0.5 AND Brett+j <= ppr THEN FONT LTRIM$(STR$(Punkte(paarungen(Brett+j,1,Runde),Runde))) + " - " + LTRIM$(STR$(Punkte((paarungen(Brett+j,2,Runde)),Runde))), j+10, 35, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 0.5 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 0.5 AND Brett+j <= ppr THEN FONT LTRIM$(STR$(Punkte(paarungen(Brett+j,1,Runde),Runde))) + "-" + LTRIM$(STR$(Punkte(paarungen(Brett+j,2,Runde),Runde))), j+10, 34, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 0.5 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 0 AND Brett+j <= ppr THEN FONT LTRIM$(STR$(Punkte(paarungen(Brett+j,1,Runde),Runde))) + "-" + LTRIM$(STR$(Punkte(paarungen(Brett+j,2,Runde),Runde))), j+10, 35, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 0 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 0.5 AND Brett+j <= ppr THEN FONT LTRIM$(STR$(Punkte(paarungen(Brett+j,1,Runde),Runde))) + "-" + LTRIM$(STR$(Punkte(paarungen(Brett+j,2,Runde),Runde))), j+10, 35, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 ELSE IF Punkte(paarungen(Brett+j,1,Runde),Runde) <> 2000 AND Punkte(paarungen(Brett+j,2,Runde),Runde) <> 2000 AND Brett+j <= ppr THEN IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 0 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 1 THEN FONT " -" + " - " + "+", j+10, 34, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 1 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 0 THEN FONT " +" + " - " + "-", j+10, 34, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 IF Punkte(paarungen(Brett+j,1,Runde),Runde) = 0 AND Punkte(paarungen(Brett+j,2,Runde),Runde) = 0 THEN FONT " -" + " - " + "-", j+10, 34, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 END IF END IF NEXT SCREENUNLOCK END IF END IF END SUB SUB PUNKTEANZEIGE /' FOR j = 1 TO TAZ Gesamtpunkte(j) = 0 NEXT '/ FOR k = 1 TO TAZ Gesamtpunkte(k) = 0 FOR j = 1 TO RAZ IF Punkte(k,j) <> 2000 AND Punkte(k,j) <> 0 THEN Gesamtpunkte(k) += Punkte(k,j) NEXT NEXT /' FOR j = 1 TO TAZ FOR k = 1 TO TAZ-1 IF Gesamtpunkte(k) < Gesamtpunkte(k+1) THEN SWAP Gesamtpunkte(k), Gesamtpunkte(k+1): SWAP Players(k), Players(k+1) NEXT NEXT '/ ' Tabelle anzeigen ' TABELLE ' Spielernamen zwischenspeichern FOR j = 1 TO TAZ Temp(j, 1) = Spieler(j) NEXT ' ELO zwischenspeichern FOR j = 1 TO TAZ Temp(j, 2) = LTRIM$(STR$(ELO(j))) NEXT ' DWZ zwischenspeichern FOR j = 1 TO TAZ Temp(j, 3) = LTRIM$(STR$(DWZ(j))) NEXT ' Titel zwischenspeichern FOR j = 1 TO TAZ Temp(j, 4) = Titel(j) NEXT ' Spieler nach Punkte sortieren FOR j = 1 TO TAZ FOR k = 1 TO TAZ-1 IF Gesamtpunkte(k) < Gesamtpunkte(k+1) THEN SWAP Gesamtpunkte(k), Gesamtpunkte(k+1) SWAP Temp(k, 1), Temp(k+1, 1) SWAP Temp(k, 2), Temp(k+1, 2) SWAP Temp(k, 3), Temp(k+1, 3) SWAP Temp(k, 4), Temp(k+1, 4) END IF NEXT NEXT SCREENLOCK ' Bildschirm löschen FOR j = 0 TO 70 FONT " ", j+9, 2, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT " ", j+9, 8, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT " ", j+9, 45, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT " ", j+9, 51, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT " ", j+9, 57, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 FONT " ", j+9, 64, &hFFFFFF, &hFF55FF, &hAA00AA, 0, 0 NEXT ' Tabelle Anzeigen IF TAZ > 70 THEN FOR j = 0 TO 70 IF Platz+j > TAZ THEN EXIT FOR FONT LTRIM$(STR$(Platz+j)), 9+j, 2, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 FONT Temp(Platz+j, 1), 9+j, 8, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 FONT Temp(Platz+j, 2), 9+j, 45, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 FONT Temp(Platz+j, 3), 9+j, 51, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 FONT Temp(Platz+j, 4), 9+j, 57, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 FONT LTRIM$(STR$(Gesamtpunkte(Platz+j))), 9+j, 64, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 NEXT ELSE FOR j = 1 TO TAZ FONT LTRIM$(STR$(j)), 9+j, 2, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 FONT Temp(j, 1), 9+j, 8, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 FONT Temp(j, 2), 9+j, 45, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 FONT Temp(j, 3), 9+j, 51, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 FONT Temp(j, 4), 9+j, 57, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 FONT LTRIM$(STR$(Gesamtpunkte(j))), 9+j, 64, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 NEXT END IF SCREENUNLOCK END SUB SUB Tabelle /' bubbleSort(Array A) for (n=A.size; n>1; n=n-1){ for (i=0; i A[i+1]){ A.swap(i, i+1) } // ende if } // ende innere for-Schleife } // ende äußere for-Schleife FOR j = '/ /' FOR j = UBOUND(ArrayToSort) - 1 TO LBOUND(ArrayToSort) STEP -1 ' Alle links davon liegenden Zeichen auf richtige Sortierung ' der jeweiligen Nachfolger überprüfen: FOR i = LBOUND(ArrayToSort) TO j ' Ist das aktuelle Element seinem Nachfolger gegenüber korrekt sortiert? IF ArrayToSort(i) > ArrayToSort(i + 1) THEN ' Element und seinen Nachfolger vertauschen. vTemp = ArrayToSort(i) ArrayToSort(i) = ArrayToSort(i + 1) ArrayToSort(i + 1) = vTemp END IF NEXT i NEXT j '/ ' DIM AS INTEGER vTemp ' LOCATE 8,5: PRINT "Geamt: "; Gesamtpunkte(1) ' LOCATE 10,5: PRINT "Gesamt: "; Gesamtpunkte(2) ' LOCATE 14,5: PRINT "Punkte: "; Punkte(1,1) /' FOR j = UBOUND(Gesamtpunkte) TO LBOUND(Gesamtpunkte) STEP -1 FOR k = LBOUND(Gesamtpunkte) TO j IF Gesamtpunkte(k) > Gesamtpunkte(k + 1) THEN vTemp = Gesamtpunkte(k) Gesamtpunkte(k) = Gesamtpunkte(k + 1) Gesamtpunkte(k + 1) = vTemp END IF NEXT k NEXT j '/ ' Spielernamen zwischenspeichern FOR j = 1 TO TAZ Temp(j, 1) = Spieler(j) NEXT FOR j = 1 TO TAZ FOR k = 1 TO TAZ-1 IF Gesamtpunkte(k) < Gesamtpunkte(k+1) THEN SWAP Gesamtpunkte(k), Gesamtpunkte(k+1): SWAP Temp(k, 1), Temp(k+1, 1) NEXT NEXT COLOR &hFFFFFF ' Testausgabe!!! FOR j = 1 TO 20 LOCATE j+20,5: PRINT Gesamtpunkte(j); " "; Temp(j, 1); " " NEXT END SUB