This commit is contained in:
Athena Funderburg
2026-05-25 07:05:17 +00:00
commit 4b463a3432
682 changed files with 47796 additions and 0 deletions
@@ -0,0 +1,84 @@
<html>
<head>
<title>Reversi</title>
<style type="text/css">
body{font-family:Tahoma;font-size:8pt}
table{font-family:Tahoma;font-size:8pt;border-style:solid;border-width:1px;border-color:buttonface;border-collapse:collapse}
.btn{font-family:Tahoma;font-size:8pt;border-style:solid;border-width:1px;border-color:buttonface;background-color:white}
</style>
</head>
<body>
<b><font size="5">The Rules of Reversi</font></b>
<br>
<i>Written by bno
<p>
Well, let us start with giving the general idea of the game.</i>
<p>
The idea is to (well, win obviously) capture your friend's pieces by
surrounding them.
<p><br>
<b>Claiming the opponent's pieces.</b>
<p>
You need to have two of your pieces in a straight line (horizontal or
vertical). The opponent's pieces that are in the middle of the one you have
just placed and a previously placed counter of yours will turn his/her
counter(s) the same colour as yours.
<p>
<img src="reversi-help.png"><br>
From the above you can see possible places (the ones marked yellow) of where to
go if you were white. These would change the red counters in the line white
too.
<p>
You must capture each time. If you are unable to capture any of your opponent's
pieces, then your go will be passed, and it will be your opponent's turn again.
<p>
Be careful with the corners! Don't let your opponent put their counter into a
corner. This could change the game around completely. Corner counters cannot be
changed, as you cannot make straight lines. Try to get the corner pieces first.
<p><br>
<i>The scoreboard at the bottom...</i>
<br>
<table border="1">
<tr bgcolor="buttonface">
<td width="100"><b>Name</td>
<td><b>Meaning</td>
</tr>
<tr>
<td>Players</td>
<td>You and your opponent's names.</td>
</tr>
<tr>
<td>Color</td>
<td>Your colour, and your opponent's colour.</td>
</tr>
<tr>
<td>Game points</td>
<td>The amount of points that player has this round (the amount of counters that
this player owns).</td>
</tr>
<tr>
<td>Games won</td>
<td>The amount of games this person has won.</td>
</tr>
<tr>
<td>Total points</td>
<td>The amount of points this player has had since the applet started.</td>
</tr>
</table>
<p><br>
<BR>
<b>I hope this guide has made it easier for you to understand the game. Of course,
another thing to help you get good at any game is to PRACTISE.
<p>
This guide has been brought to you by: bno
<p>
I would also like to thank everyone who has made this game possible with MSN. <font color="green">
THANKYOU</font>
</b>
<p>
<br>
<BR>
<hr>
This guide was written for 'Reversi v1.0'
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 900 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 807 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<words>
<cmdHelp>Hilfe</cmdHelp>
<cmdRestart>Neustart</cmdRestart>
<confirmRemoteWantsRestart>{0} möchte das Spiel neu starten, geht das in Ordnung?</confirmRemoteWantsRestart>
<connectionDirect>direkt</connectionDirect>
<connectionDisconnected>getrennt</connectionDisconnected>
<connectionIndirect>indirekt</connectionIndirect>
<errorDataSend>Datenfehler; Die Daten können nicht gesendet werden. Spiel gestoppt.</errorDataSend>
<errorDisconnected>Getrennt.</errorDisconnected>
<errorUserLeft>{0} hat das Spiel verlassen. Das Spiel wurde beendet.</errorUserLeft>
<infoRestartDenied>{0} möchte das Spiel nicht neu starten.</infoRestartDenied>
<infoClickToPlayAgain>Klicken Sie auf 'Neustart' für ein neues Spiel.</infoClickToPlayAgain>
<lblBroughtToYouBy>Wird Ihnen präsentiert von {0}</lblBroughtToYouBy>
<lblConnectionType>Verbindungsart</lblConnectionType>
<lblPlayers>Spieler</lblPlayers>
<lblColor>Farbe</lblColor>
<lblGamePoints>Spielpunkte</lblGamePoints>
<lblGameTotalPoints>Gesamtpunkte</lblGameTotalPoints>
<lblGamesWon>Spiele gewonnen</lblGamesWon>
<lblRed>rot</lblRed>
<lblVersion>Reversi {0}</lblVersion>
<lblWhite>weiß</lblWhite>
<stateAnotherMyTurn>{0} kann nicht, Sie sind dran.</stateAnotherMyTurn>
<stateAnotherRemoteTurn>Sie können nicht, {0} ist wieder dran.</stateAnotherRemoteTurn>
<stateInitializing>Starte Spiel...</stateInitializing>
<stateGameOverDraw>Spiel beendet! Es ist ein Unentschieden.</stateGameOverDraw>
<stateGameOverLost>Was für ein Pech! Sie haben verloren.</stateGameOverLost>
<stateGameOverWon>Gratulation, Sie haben gewonnen!</stateGameOverWon>
<stateMyTurn>Sie sind dran.</stateMyTurn>
<stateRemoteTurn>Bitte warten Sie bis {0} einen Zug gemacht hat.</stateRemoteTurn>
<stateStartMyTurn>Spiel gestartet. Sie sind dran.</stateStartMyTurn>
<stateStartRemoteTurn>Spiel gestartet. Bitte warten Sie bis {0} einen Zug gemacht hat.</stateStartRemoteTurn>
</words>
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8" ?>
<words>
<cmdHelp>Help</cmdHelp>
<cmdRestart>Restart</cmdRestart>
<confirmRemoteWantsRestart>{0} wants to restart this game, are you ok with that?</confirmRemoteWantsRestart>
<connectionDirect>direct</connectionDirect>
<connectionDisconnected>disconnected</connectionDisconnected>
<connectionIndirect>indirect</connectionIndirect>
<errorDataSend>Data error; unable to send data. Game stopped.</errorDataSend>
<errorDisconnected>Disconnected.</errorDisconnected>
<errorUserLeft>{0} has left the game. The game is over.</errorUserLeft>
<infoRestartDenied>{0} doesn't want to restart this game.</infoRestartDenied>
<infoClickToPlayAgain>Click 'Restart' to play again.</infoClickToPlayAgain>
<lblBroughtToYouBy>Brought to you by {0}</lblBroughtToYouBy>
<lblConnectionType>Connection type</lblConnectionType>
<lblPlayers>Players</lblPlayers>
<lblColor>Color</lblColor>
<lblGamePoints>Game points</lblGamePoints>
<lblGameTotalPoints>Total points</lblGameTotalPoints>
<lblGamesWon>Games won</lblGamesWon>
<lblRed>red</lblRed>
<lblVersion>Reversi {0}</lblVersion>
<lblWhite>white</lblWhite>
<stateAnotherMyTurn>{0} can't move, it's your turn again.</stateAnotherMyTurn>
<stateAnotherRemoteTurn>You are stuck, {0} gets to move again.</stateAnotherRemoteTurn>
<stateInitializing>Initializing game...</stateInitializing>
<stateGameOverDraw>Game over, it's a draw!</stateGameOverDraw>
<stateGameOverLost>Game over, you have lost!</stateGameOverLost>
<stateGameOverWon>Game over, you have won!</stateGameOverWon>
<stateMyTurn>It's your turn.</stateMyTurn>
<stateRemoteTurn>Waiting for {0} to make a move.</stateRemoteTurn>
<stateStartMyTurn>Game started, it's your turn.</stateStartMyTurn>
<stateStartRemoteTurn>Game started, waiting for {0} to make a move.</stateStartRemoteTurn>
</words>
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8" ?>
<words>
<cmdHelp>Ayuda</cmdHelp>
<cmdRestart>Reiniciar</cmdRestart>
<confirmRemoteWantsRestart>{0} quiere reiniciar el juego, ¿estás de acuerdo?</confirmRemoteWantsRestart>
<connectionDirect>directa</connectionDirect>
<connectionDisconnected>desconectado</connectionDisconnected>
<connectionIndirect>indirecta</connectionIndirect>
<errorDataSend>Error; Imposible enviar datos. Se ha parado el juego.</errorDataSend>
<errorDisconnected>Desconectado.</errorDisconnected>
<errorUserLeft>{0} ha dejado el juego. El juego ha acabado.</errorUserLeft>
<infoRestartDenied>{0} no quiere reiniciar el juego.</infoRestartDenied>
<infoClickToPlayAgain>Haz clic en 'Reiniciar' para jugar de nuevo.</infoClickToPlayAgain>
<lblBroughtToYouBy>Juego patrocinado por {0}</lblBroughtToYouBy>
<lblConnectionType>Tipo de conexión</lblConnectionType>
<lblPlayers>Jugadores</lblPlayers>
<lblColor>Color</lblColor>
<lblGamePoints>Puntos en este juego</lblGamePoints>
<lblGameTotalPoints>Puntos totales</lblGameTotalPoints>
<lblGamesWon>Juegos ganados</lblGamesWon>
<lblRed>rojo</lblRed>
<lblVersion>Reversi {0}</lblVersion>
<lblWhite>blanco</lblWhite>
<stateAnotherMyTurn>{0} no puede mover, es tu turno otra vez.</stateAnotherMyTurn>
<stateAnotherRemoteTurn>Estás bloqueado, {0} mueve otra vez.</stateAnotherRemoteTurn>
<stateInitializing>Iniciando juego...</stateInitializing>
<stateGameOverDraw>Juego acabado, Es un empate! </stateGameOverDraw>
<stateGameOverLost>Juego acabado, Has perdido!</stateGameOverLost>
<stateGameOverWon>Juego acabado, Has ganado!</stateGameOverWon>
<stateMyTurn>Es tu turno.</stateMyTurn>
<stateRemoteTurn>Esperando por {0} para realizar movimiento.</stateRemoteTurn>
<stateStartMyTurn>El juego ha empezado, tu eres el color {0}. Es tu turno.</stateStartMyTurn>
<stateStartRemoteTurn>El juego ha empezado, tu eres el color {0}. Esperando por {1} para completar su turno.</stateStartRemoteTurn>
</words>
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<words>
<cmdHelp>Aide</cmdHelp>
<cmdRestart>Recommencer</cmdRestart>
<confirmRemoteWantsRestart>{0} désire recommencer la partie, êtes-vous d'accord?</confirmRemoteWantsRestart>
<connectionDirect>direct</connectionDirect>
<connectionDisconnected>disconnected</connectionDisconnected>
<connectionIndirect>indirect</connectionIndirect>
<errorDataSend>Erreur de données; impossible d'envoyer les données. Jeu arrêté.</errorDataSend>
<errorDisconnected>Déconnecté.</errorDisconnected>
<errorUserLeft>{0} a quitté la partie. Le jeu est terminé.</errorUserLeft>
<infoRestartDenied>{0} ne veut pas redémarrer la partie.</infoRestartDenied>
<infoClickToPlayAgain>Cliquez sur "Redémarrer" pour rejouer.</infoClickToPlayAgain>
<lblBroughtToYouBy>Offert par {0}</lblBroughtToYouBy>
<lblConnectionType>Type de connexion</lblConnectionType>
<lblPlayers>Joueurs</lblPlayers>
<lblColor>Couleur</lblColor>
<lblGamePoints>Points</lblGamePoints>
<lblGameTotalPoints>Points Total</lblGameTotalPoints>
<lblGamesWon>Parties Gagnées</lblGamesWon>
<lblRed>rouge</lblRed>
<lblVersion>Reversi {0}</lblVersion>
<lblWhite>blanc</lblWhite>
<stateAnotherMyTurn>{0} ne peut bouger, c'est de nouveau votre tour.</stateAnotherMyTurn>
<stateAnotherRemoteTurn>Vous êtes bloqués, à {0} de bouger.</stateAnotherRemoteTurn>
<stateInitializing>Initialisation du jeu en cours...</stateInitializing>
<stateGameOverDraw>Partie terminée, c'ets un match nul!</stateGameOverDraw>
<stateGameOverLost>Partie terminée, vous avez perdu!</stateGameOverLost>
<stateGameOverWon>Partie terminée, vous avez gagné!</stateGameOverWon>
<stateMyTurn>A vous de jouer.</stateMyTurn>
<stateRemoteTurn>En attente d'un mouvement de {0}</stateRemoteTurn>
<stateStartMyTurn>Début du jeu, à vous de jouer.</stateStartMyTurn>
<stateStartRemoteTurn>Début du jeu, attente d'un mouvement de {0}</stateStartRemoteTurn>
</words>
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<words>
<cmdHelp>Súgó</cmdHelp>
<cmdRestart>Újrakezdés</cmdRestart>
<confirmRemoteWantsRestart>{0} újra akarja kezdeni a játékot, eggyet ért ezzel?</confirmRemoteWantsRestart>
<connectionDirect>közvetlen</connectionDirect>
<connectionDisconnected>megszakadt</connectionDisconnected>
<connectionIndirect>közvetett</connectionIndirect>
<errorDataSend>Adat hiba; nem lehet adatot küldeni. A játék megállt.</errorDataSend>
<errorDisconnected>Lekapcsolva.</errorDisconnected>
<errorUserLeft>{0} elhagyta a játékot. A játék véget ért.</errorUserLeft>
<infoRestartDenied>{0} nem akarja újraindítani a játékot.</infoRestartDenied>
<infoClickToPlayAgain>Kattints az 'Újrakezdés' gombra, az újabb játékért.</infoClickToPlayAgain>
<lblBroughtToYouBy>Kihívó: {0}</lblBroughtToYouBy>
<lblConnectionType>Kapcsolat típusa</lblConnectionType>
<lblPlayers>Játékosok</lblPlayers>
<lblColor>Szín</lblColor>
<lblGamePoints>Pontos</lblGamePoints>
<lblGameTotalPoints>Összes pont</lblGameTotalPoints>
<lblGamesWon>Gyõzelmek</lblGamesWon>
<lblRed>piros</lblRed>
<lblVersion>Reversi {0}</lblVersion>
<lblWhite>fehér</lblWhite>
<stateAnotherMyTurn>{0} nem tud lépni, újra te jössz.</stateAnotherMyTurn>
<stateAnotherRemoteTurn>Megakadtál, {0} jön újra.</stateAnotherRemoteTurn>
<stateInitializing>Játék betöltése...</stateInitializing>
<stateGameOverDraw>Vége, döntetlen!</stateGameOverDraw>
<stateGameOverLost>Vége, vesztettél!</stateGameOverLost>
<stateGameOverWon>Vége, nyertél!</stateGameOverWon>
<stateMyTurn>Te jössz.</stateMyTurn>
<stateRemoteTurn>Várakozás {0} lépésére.</stateRemoteTurn>
<stateStartMyTurn>A játék elindult, te jössz.</stateStartMyTurn>
<stateStartRemoteTurn>A játék elindult, várakozás {0} lépésére.</stateStartRemoteTurn>
</words>
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8" ?>
<words>
<cmdHelp>Help</cmdHelp>
<cmdRestart>Herstart</cmdRestart>
<confirmRemoteWantsRestart>{0} wil het spel opnieuw beginnen. Vind je dat goed?</confirmRemoteWantsRestart>
<connectionDirect>direkt</connectionDirect>
<connectionDisconnected>verbroken</connectionDisconnected>
<connectionIndirect>indirekt</connectionIndirect>
<errorDataSend>Data fout; kan geen gegevens versturen. Het spel is gestopt.</errorDataSend>
<errorDisconnected>Verbroken.</errorDisconnected>
<errorUserLeft>{0} heeft het spel verlaten. Het spel is gestopt.</errorUserLeft>
<infoRestartDenied>{0} wil dit spel niet opnieuw beginnen.</infoRestartDenied>
<infoClickToPlayAgain>Druk op 'Herstart' om opnieuw te spelen.</infoClickToPlayAgain>
<lblBroughtToYouBy>Aangeboden door {0}</lblBroughtToYouBy>
<lblConnectionType>Connectie type</lblConnectionType>
<lblPlayers>Spelers</lblPlayers>
<lblColor>Kleur</lblColor>
<lblGamePoints>Punten</lblGamePoints>
<lblGameTotalPoints>Puntentotaal</lblGameTotalPoints>
<lblGamesWon>Gewonnen</lblGamesWon>
<lblRed>rood</lblRed>
<lblVersion>Reversi {0}</lblVersion>
<lblWhite>wit</lblWhite>
<stateAnotherMyTurn>{0} zit vast, het is weer jouw beurt.</stateAnotherMyTurn>
<stateAnotherRemoteTurn>Je zit vast, {0} mag nog een keer.</stateAnotherRemoteTurn>
<stateInitializing>Spel wordt geïnitialiseerd...</stateInitializing>
<stateGameOverDraw>Spel over, het is een gelijkspel!</stateGameOverDraw>
<stateGameOverLost>Spel over, je hebt verloren!</stateGameOverLost>
<stateGameOverWon>Spel over, je hebt gewonnen!</stateGameOverWon>
<stateMyTurn>Het is jouw beurt</stateMyTurn>
<stateRemoteTurn>Wacht op de beurt van {0}.</stateRemoteTurn>
<stateStartMyTurn>Spel gestart, het is jouw beurt.</stateStartMyTurn>
<stateStartRemoteTurn>Spel gestart, wacht op de beurt van {0}.</stateStartRemoteTurn>
</words>
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<words>
<cmdHelp>Ajuda</cmdHelp>
<cmdRestart>Recomeçar</cmdRestart>
<confirmRemoteWantsRestart>{0} quer recomeçar o jogo, está de acordo?</confirmRemoteWantsRestart>
<connectionDirect>directo</connectionDirect>
<connectionDisconnected>desconectar</connectionDisconnected>
<connectionIndirect>indirecto</connectionIndirect>
<errorDataSend>Erro de comunicação. Jogo parado.</errorDataSend>
<errorDisconnected>Desconectar.</errorDisconnected>
<errorUserLeft>{0} saiu. O jogo acabou.</errorUserLeft>
<infoRestartDenied>{0} não quer recomeçar o jogo.</infoRestartDenied>
<infoClickToPlayAgain>Clique em 'Recomeçar' para jogar de novo.</infoClickToPlayAgain>
<lblBroughtToYouBy>Produzido por {0}</lblBroughtToYouBy>
<lblConnectionType>Tipo de ligação</lblConnectionType>
<lblPlayers>Jogadores</lblPlayers>
<lblColor>Cores</lblColor>
<lblGamePoints>Pontos no Jogo</lblGamePoints>
<lblGameTotalPoints>Pontos Totais</lblGameTotalPoints>
<lblGamesWon>Jogos ganhos</lblGamesWon>
<lblRed>vermelho</lblRed>
<lblVersion>Reversi {0}</lblVersion>
<lblWhite>branco</lblWhite>
<stateAnotherMyTurn>{0} não pode mover-se, é a sua vez de novo.</stateAnotherMyTurn>
<stateAnotherRemoteTurn>Você está preso, {0} vai jogar de novo.</stateAnotherRemoteTurn>
<stateInitializing>Iniciando o jogo...</stateInitializing>
<stateGameOverDraw>Jogo terminado, é um empate!</stateGameOverDraw>
<stateGameOverLost>Jogo terminado, você perceu!</stateGameOverLost>
<stateGameOverWon>Jogo terminado, você ganhou!</stateGameOverWon>
<stateMyTurn>É a sua vez.</stateMyTurn>
<stateRemoteTurn>À espera que {0} jogue.</stateRemoteTurn>
<stateStartMyTurn>Jogo começado, é a sua vez.</stateStartMyTurn>
<stateStartRemoteTurn>Jogo começado, à espera que {0} jogue.</stateStartRemoteTurn>
</words>
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8" ?>
<words>
<cmdHelp>Pomoč</cmdHelp>
<cmdRestart>Reset</cmdRestart>
<confirmRemoteWantsRestart>{0} želi resetirati igro, se strinjaš?</confirmRemoteWantsRestart>
<connectionDirect>posredno</connectionDirect>
<connectionDisconnected>prekinjeno</connectionDisconnected>
<connectionIndirect>neposredno</connectionIndirect>
<errorDataSend>Podatkovna napaka; pošiljanje podatkov ni možno. Igra ustavljena.</errorDataSend>
<errorDisconnected>Prekinjeno.</errorDisconnected>
<errorUserLeft>{0} je zapustil igro. Igra je končana.</errorUserLeft>
<infoRestartDenied>{0} ne želi resetirati te igre.</infoRestartDenied>
<infoClickToPlayAgain>Klikni 'Reset' za novo igro.</infoClickToPlayAgain>
<lblBroughtToYouBy>Vam na uslugo: {0}</lblBroughtToYouBy>
<lblConnectionType>Vrsta povezave</lblConnectionType>
<lblPlayers>Igralci</lblPlayers>
<lblColor>Barva</lblColor>
<lblGamePoints>Točke v igri</lblGamePoints>
<lblGameTotalPoints>Skupne točke</lblGameTotalPoints>
<lblGamesWon>Zmage</lblGamesWon>
<lblRed>rdeč</lblRed>
<lblVersion>Reversi {0}</lblVersion>
<lblWhite>bel</lblWhite>
<stateAnotherMyTurn>{0} ne more napraviti poteze, ponovno si ti na potezi.</stateAnotherMyTurn>
<stateAnotherRemoteTurn>Obtičal si, {0} je ponovno na potezi.</stateAnotherRemoteTurn>
<stateInitializing>Nalagam igro...</stateInitializing>
<stateGameOverDraw>Igra je končana, neodločeno je!</stateGameOverDraw>
<stateGameOverLost>Igra je končana, izgubil si!</stateGameOverLost>
<stateGameOverWon>Igra je končana, zmagal si!</stateGameOverWon>
<stateMyTurn>Ti si na potezi.</stateMyTurn>
<stateRemoteTurn>Čakaš, da {0} naredi potezo.</stateRemoteTurn>
<stateStartMyTurn>Igra se je pričela, ti si na potezi.</stateStartMyTurn>
<stateStartRemoteTurn>Igra se je pričela, čakaš, da {0} naredi potezo.</stateStartRemoteTurn>
</words>
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<words>
<cmdHelp>Hjälp</cmdHelp>
<cmdRestart>Starta om</cmdRestart>
<confirmRemoteWantsRestart>{0} vill starta om omgången, är det okej med dig?</confirmRemoteWantsRestart>
<connectionDirect>direkt</connectionDirect>
<connectionDisconnected>anslutning bruten</connectionDisconnected>
<connectionIndirect>indirekt</connectionIndirect>
<errorDataSend>Data fel; omöjligt att skicka data. Spelet har stoppats.</errorDataSend>
<errorDisconnected>Anslutning bruten.</errorDisconnected>
<errorUserLeft>{0} har lämnat spelet. Spelet är över.</errorUserLeft>
<infoRestartDenied>{0} vill inte starta om spelet.</infoRestartDenied>
<infoClickToPlayAgain>Klicka på 'Starta om' för att spela igen.</infoClickToPlayAgain>
<lblBroughtToYouBy>Framtaget till dig av {0}</lblBroughtToYouBy>
<lblConnectionType>Anslutnings typ</lblConnectionType>
<lblPlayers>Spelare</lblPlayers>
<lblColor>Färg</lblColor>
<lblGamePoints>Antal Spel poäng</lblGamePoints>
<lblGameTotalPoints>Antal Poäng totalt</lblGameTotalPoints>
<lblGamesWon>Antal vunna spel</lblGamesWon>
<lblRed>röd</lblRed>
<lblVersion>Reversi {0}</lblVersion>
<lblWhite>vit</lblWhite>
<stateAnotherMyTurn>{0} kan inte flytta, det är din tur igen.</stateAnotherMyTurn>
<stateAnotherRemoteTurn>Du kan inte flytta, {0} får flytta igen.</stateAnotherRemoteTurn>
<stateInitializing>Påbörjar spel...</stateInitializing>
<stateGameOverDraw>Spelet över, det blev lika!</stateGameOverDraw>
<stateGameOverLost>Spelet över, du har förlorat!</stateGameOverLost>
<stateGameOverWon>Spelet över, du har vunnit!</stateGameOverWon>
<stateMyTurn>Det är din tur.</stateMyTurn>
<stateRemoteTurn>Väntar på att {0} ska göra sitt drag.</stateRemoteTurn>
<stateStartMyTurn>Spelet har börjat, det är din tur.</stateStartMyTurn>
<stateStartRemoteTurn>Spelet har startat, väntar på att {0} ska göra sitt drag.</stateStartRemoteTurn>
</words>
@@ -0,0 +1,729 @@
<html>
<!--
Copyright by Koen, 2003,2004,2005
http://games.mess.be
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
<title>Reversi</title>
<style type="text/css">
table{font-family:Tahoma;font-size:8pt}
</style>
<script language="javascript" src="../common/common.js"></script>
<script language="javascript">
var VERSION = "v2.0";
/// GAME_STATE
var GS_INITIALIZING = 0;
var GS_MYTURN = 1;
var GS_REMOTETURN = 2;
var GS_GAMEOVER = 3;
var GS_ERROR = 4;
var m_remoteUserName;
var m_gameState = GS_INITIALIZING;
var m_isInitialized = false;
/// Game specific variables
var PC_EMPTY = 0;
var PC_WHITE = 1;
var PC_RED = 2;
/// Data commands
var CMD_RESTART = "res";
var CMD_NORESTART = "nor";
var CMD_HINT = "hint";
var m_gamesWon = 0;
var m_totalPoints = 0;
var m_remoteGames = 0;
var m_remoteTotal = 0;
var m_iStart;
var m_fields;
var m_myColor;
var m_remoteColor;
var m_myValidMoves;
var m_remoteValidMoves;
var m_requestRestart = false;
var m_firstMove;
var m_preloadDone = false;
var m_remoteLoaded = false;
var m_lastYellowField = null;
///
/// Global event handlers
///
function OnLoad(){
// load language
loadLanguage("reversi");
applyLanguage();
m_remoteUserName = getRemoteUserName();
updateGameState(GS_INITIALIZING, getWord("stateInitializing"));
updateConnectionType();
nameMe.innerText = getDisplayName(window.external.Users.Me.Name);
nameRemote.innerText = getDisplayName(m_remoteUserName);
m_iStart = iAmInviter();
m_myColor = m_iStart ? PC_WHITE : PC_RED;
m_remoteColor = getOppositeColor(m_myColor);
colorMe.innerText = getWord(m_myColor == PC_WHITE ? "lblWhite" : "lblRed")
colorRemote.innerText = getWord(m_remoteColor == PC_WHITE ? "lblWhite" : "lblRed")
m_isInitialized = true;
window.external.Channel.Initialize();
preloadImages(new Array("ct_direct.gif", "ct_disconnected.gif", "ct_indirect.gif",
"empty.gif", "gameboard.jpg", "gameover.gif", "headerbg.gif", "help.gif", "leftcorner.jpg",
"playerbg.gif", "rc.jpg", "rc_yellow.jpg", "rightcorner.jpg", "star.jpg", "wc.jpg", "wc_yellow.jpg"), OnPreloadProgress, OnPreloadComplete);
}
function OnUnload(){
}
///
/// Preloading stuff
///
function OnPreloadProgress(progress){
divProgress.style.width = progress + "%";
}
function OnPreloadComplete(){
m_preloadDone = true;
initialize();
}
function initialize(){
if (m_preloadDone && m_remoteLoaded){
tblPreload.style.display = "none";
tblGame.style.display = "";
startGame();
}
}
function applyLanguage(){
lblBy.innerHTML = getWord("lblBroughtToYouBy", "<b>games.mess.be</b>");
lblVersion.innerText = getWord("lblVersion", VERSION);
btnHelp.title = getWord("cmdHelp");
btnRestart.innerText = getWord("cmdRestart");
lblPlayers.innerText = getWord("lblPlayers");
lblColor.innerText = getWord("lblColor");
lblGamePoints.innerText = getWord("lblGamePoints");
lblGamesWon.innerText = getWord("lblGamesWon");
lblGameTotalPoints.innerText = getWord("lblGameTotalPoints");
colorMe.innerText = getWord(m_myColor == PC_WHITE ? "lblWhite" : "lblRed")
colorRemote.innerText = getWord(m_remoteColor == PC_WHITE ? "lblWhite" : "lblRed")
}
///
/// Channel event handlers
///
///
/// Occurs when the remote user closes the application, the conversation window or signs out of Messenger.
///
function Channel_OnAppClose(){
m_remoteLoaded = false;
updateGameState(GS_ERROR, getWord("errorUserLeft", getDisplayName(m_remoteUserName)));
}
///
/// Occurs when a data send has failed, inspect Channel.Error for details.
///
function Channel_OnDataError(){
updateGameState(GS_ERROR, getWord("errorDataSend"));
}
///
/// Occurs when new data has been received. The data is available in window.external.Channel.Data.
///
function Channel_OnDataReceived(){
var data = window.external.Channel.Data;
if (data == CMD_RESTART){
if (m_gameState == GS_MYTURN || m_gameState == GS_REMOTETURN){
if (m_requestRestart){
m_requestRestart = false;
startGame();
}
else{
var restart = confirm(getWord("confirmRemoteWantsRestart", getDisplayName(m_remoteUserName)));
var cmd = restart ? CMD_RESTART : CMD_NORESTART;
window.external.Channel.SendData(cmd);
if (restart)
startGame();
}
}
}
else if (data == CMD_NORESTART){
if (m_gameState == GS_MYTURN || m_gameState == GS_REMOTETURN){
m_requestRestart = false;
alert(getWord("infoRestartDenied", getDisplayName(m_remoteUserName)));
}
}
else if (data.startsWith(CMD_HINT)){
if (m_gameState == GS_MYTURN){
var f = new field(data.substr(4));
setYellow(f);
}
}
else if (m_gameState == GS_REMOTETURN)
doMove(new field(data), m_remoteColor);
else if (m_gameState == GS_GAMEOVER)
m_firstMove = new field(data);
}
///
/// Occurs when the remote user closes the window that contains the app.
///
function Channel_OnRemoteAppClosed(){
m_remoteLoaded = false;
updateGameState(GS_ERROR, getWord("errorUserLeft", getDisplayName(m_remoteUserName)));
}
///
/// Occurs when the remote app has been initialized. Both apps are now initialized.
///
function Channel_OnRemoteAppLoaded(){
m_remoteLoaded = true;
initialize();
}
///
/// Occurs when the connection between conversants changes from direct to indirect or disconnected.
/// The type is available in window.external.Channel.Type
///
function Channel_OnTypeChanged(){
updateConnectionType();
}
///
/// Helpers functions
///
function updateConnectionType(){
var icon, descr;
switch(window.external.Channel.Type){
case CT_DIRECT:
icon = "ct_direct.gif"
descr = getWord("connectionDirect");
break;
case CT_DISCONNECTED:
icon = "ct_disconnected.gif"
descr = getWord("connectionDisconnected");
if (m_isInitialized)
updateGameState(GS_ERROR, getWord("errorDisconnected"));
else
updateGameState(GS_INITIALIZING, getWord("stateInitializing"));
break;
case CT_INDIRECT:
icon = "ct_indirect.gif"
descr = getWord("connectionIndirect");
break;
}
statusIcon.src = "images/" + icon;
statusIcon.title = getWord("lblConnectionType") + ": " + descr;
}
///
/// Game specific objects
///
function field(){
if (arguments.length == 1){
var args = arguments[0].split(",");
this.x = parseInt(args[0]);
this.y = parseInt(args[1]);
}
else{
this.x = arguments[0];
this.y = arguments[1];
}
}
field.prototype.toString = function(){
return this.x + "," + this.y;
}
function score(me, remote){
this.me = me;
this.remote = remote;
}
///
/// Game specific functions
///
function startGame(){
m_fields = new Array(8);
for(var i = 0; i < 8; i++){
m_fields[i] = new Array(8);
for(var j = 0; j < 8; j++)
setField(new field(i, j), PC_EMPTY);
}
document.body.disabled = false;
pnlGameover.style.display = "none";
setField(new field(3, 3), PC_RED);
setField(new field(3, 4), PC_WHITE);
setField(new field(4, 3), PC_WHITE);
setField(new field(4, 4), PC_RED);
updateScore();
calcValidMoves();
if (m_iStart || (!m_iStart && m_firstMove)){
if (m_firstMove){
doMove(m_firstMove, m_remoteColor);
m_firstMove = null;
}
updateGameState(GS_MYTURN, getWord("stateStartMyTurn"));
}
else
updateGameState(GS_REMOTETURN, getWord("stateStartRemoteTurn", getDisplayName(m_remoteUserName)));
}
function updateGameState(gameState, msg){
if (gameState == GS_ERROR && m_gameState != GS_ERROR){
m_fields = new Array(8);
for(var i = 0; i < 8; i++){
m_fields[i] = new Array(8);
for(var j = 0; j < 8; j++)
setField(new field(i, j), PC_EMPTY);
}
document.body.disabled = true;
}
m_gameState = gameState;
statusText.innerText = msg;
}
function setField(f, value, useYellow){
m_fields[f.x][f.y] = value;
var img = useYellow ? "yellow.jpg" : "empty.gif";
if (value == PC_WHITE)
img = (useYellow) ? "wc_yellow.jpg" : "wc.jpg";
else if (value == PC_RED)
img = (useYellow) ? "rc_yellow.jpg" : "rc.jpg";
if (useYellow){
m_lastYellowField = f;
}
tblBoard.rows[f.x].cells[f.y].firstChild.src = "images/" + img;
}
function fieldFromElement(element){
var td;
if (element.tagName == "TD")
td = event.srcElement;
else if (element.tagName == "IMG")
td = event.srcElement.parentElement;
else
return null;
var y = td.cellIndex;
var x = td.parentElement.rowIndex;
return new field(x, y);
}
function calcValidMove(f, color){
var oppositeColor = getOppositeColor(color);
var neighbors = getNeighbors(f.x, f.y, oppositeColor);
for(var i = 0; i < neighbors.length; i++){
var neighbor = neighbors[i];
var deltaX = neighbor.x - f.x;
var deltaY = neighbor.y - f.y;
var nextX = f.x + deltaX;
var nextY = f.y + deltaY;
while (nextX > -1 && nextX < 8 && nextY > -1 && nextY < 8){
if (m_fields[nextX][nextY] == PC_EMPTY)
break;
if (m_fields[nextX][nextY] == oppositeColor){
nextX = nextX + deltaX;
nextY = nextY + deltaY;
}
else
return true;
}
}
return false;
}
function calcValidMoves(){
m_myValidMoves = new Array();
m_remoteValidMoves = new Array();
for(var x = 0; x < 8; x++){
for(var y = 0; y < 8; y++){
// tblBoard.rows[x].cells[y].style.backgroundColor = "";
if (m_fields[x][y] == PC_EMPTY){
var f = new field(x, y);
if (calcValidMove(f, m_myColor)){
// tblBoard.rows[f.x].cells[f.y].style.backgroundColor = (m_myColor == PC_WHITE) ? "white" : "red";
m_myValidMoves.push(f);
}
if (calcValidMove(f, m_remoteColor))
m_remoteValidMoves.push(f);
}
}
}
}
function isGameOver(){
return (m_myValidMoves.length == 0 && m_remoteValidMoves.length == 0);
}
function getNeighbors(x, y, color){
var neighbors = new Array();
for(i = x - 1; i < x + 2; i++){
for(j = y - 1; j < y + 2; j++){
if (i > -1 && i < 8 && j > -1 && j < 8 && !(i == x && j == y)){
if (m_fields[i][j] == color)
neighbors.push(new field(i, j));
}
}
}
return neighbors;
}
function getOppositeColor(color){
return (color == PC_RED) ? PC_WHITE : PC_RED;
}
function isValidMove(f){
if (f){
for(var i = 0; i < m_myValidMoves.length; i++){
var validMove = m_myValidMoves[i];
if (validMove.x == f.x && validMove.y == f.y)
return true;
}
}
return false;
}
function setFieldMove(f, color){
var oppositeColor = getOppositeColor(color);
var neighbors = getNeighbors(f.x, f.y, oppositeColor);
for(var i = 0; i < neighbors.length; i++){
var neighbor = neighbors[i];
var deltaX = neighbor.x - f.x;
var deltaY = neighbor.y - f.y;
var newFields = new Array();
var nextX = f.x + deltaX;
var nextY = f.y + deltaY;
while (nextX > -1 && nextX < 8 && nextY > -1 && nextY < 8){
if (m_fields[nextX][nextY] == PC_EMPTY)
break;
if (m_fields[nextX][nextY] == oppositeColor){
newFields.push(new field(nextX, nextY));
nextX = nextX + deltaX;
nextY = nextY + deltaY;
}
else{
for(j = 0; j < newFields.length; j++)
setField(newFields[j], color);
break;
}
}
}
setField(f, color, color == m_remoteColor);
updateScore();
}
function setYellow(f){
if (f){
setYellow(null);
setField(f, m_fields[f.x][f.y], true);
}
else if (m_lastYellowField != null){
setField(m_lastYellowField, m_fields[m_lastYellowField.x][m_lastYellowField.y], false);
m_lastYellowField = null;
}
}
function doMove(f, color){
setYellow(null);
setFieldMove(f, color);
calcValidMoves();
if (isGameOver()){
var s = getScore();
var msg;
if (s.me > s.remote){
msg = getWord("stateGameOverWon");
m_iStart = true;
m_gamesWon++;
}
else if (s.me < s.remote){
msg = getWord("stateGameOverLost");
m_iStart = false;
m_remoteGames++;
}
else
msg = getWord("stateGameOverDraw");
updateScore();
m_totalPoints += s.me;
m_remoteTotal += s.remote;
pnlGameover.style.display = "";
updateGameState(GS_GAMEOVER, msg + " " + getWord("infoClickToPlayAgain"));
}
else if (m_gameState == GS_MYTURN){
if (m_remoteValidMoves.length > 0)
updateGameState(GS_REMOTETURN, getWord("stateRemoteTurn", getDisplayName(m_remoteUserName)));
else
updateGameState(GS_MYTURN, getWord("stateAnotherMyTurn", getDisplayName(m_remoteUserName)));
tblBoard.style.cursor = (m_isIE55) ? "default" : "not-allowed";
}
else if (m_gameState == GS_REMOTETURN){
if (m_myValidMoves.length > 0)
updateGameState(GS_MYTURN, getWord("stateMyTurn"));
else
updateGameState(GS_REMOTETURN, getWord("stateAnotherRemoteTurn", getDisplayName(m_remoteUserName)));
}
}
function getScore(){
var me = 0;
var remote = 0;
for(var i = 0; i < 8; i++){
for(var j = 0; j < 8; j++){
var c = m_fields[i][j];
if (m_fields[i][j] == m_myColor)
me++;
else if (m_fields[i][j] == m_remoteColor)
remote++;
}
}
return new score(me, remote);
}
function updateScore(){
var s = getScore();
scoreMe.innerText = s.me;
scoreRemote.innerText = s.remote;
gamesMe.innerText = m_gamesWon;
gamesRemote.innerText = m_remoteGames;
totalMe.innerText = m_totalPoints + s.me;
totalRemote.innerText = m_remoteTotal + s.remote;
}
///
/// GUI event handlers
///
function tblBoard_onmouseover(){
var newCursor = (m_isIE55) ? "default" : "not-allowed";
if (m_gameState == GS_MYTURN){
var f = fieldFromElement(event.srcElement);
if (isValidMove(f))
newCursor = "hand";
}
if (tblBoard.style.cursor != newCursor){
tblBoard.style.cursor = newCursor;
}
}
function tblBoard_onclick(){
if (m_gameState == GS_MYTURN){
var f = fieldFromElement(event.srcElement);
if (isValidMove(f)){
window.external.Channel.SendData(f.toString());
doMove(f, m_myColor);
}
}
}
function btnRestart_onclick(){
if (m_gameState == GS_GAMEOVER){
startGame();
}
else if ((m_gameState == GS_MYTURN || m_gameState == GS_REMOTETURN) && !m_requestRestart){
m_requestRestart = true;
window.external.Channel.SendData(CMD_RESTART);
}
}
function help_onclick(){
showHelpFile("help/reversi-help.htm");
}
</script>
</head>
<body onload="OnLoad();" onunload="OnUnload();" style="margin:0" scroll="no" bgcolor="#516CA1">
<xml id="words"></xml>
<table id="tblPreload" width="100%" height="100%">
<tr height="15%">
<td>&nbsp;</td>
</tr>
<tr height="60%">
<td align="center"><img src="images/reversi-logo.jpg"><div id="lblBy" style="color:#D4DEF4"></div></td>
</tr>
<tr valign="top" height="25%">
<td align="center"><div align="left" style="width:100px;height:16px;color:#D4DEF4;border-style:solid;border-width:1px"><div id="divProgress" style="background-color:#D4DEF4;width:0%;height:100%"></div></div></td>
</tr>
</table>
<table id="tblGame" width="100%" height="100%" style="font-family:Tahoma;font-size:8pt">
<tr valign="top">
<td align="center" width="100%" colspan="3">
<span id="pnlGameover" style="display:none;position:absolute;left:expression(document.body.clientWidth/2 - this.offsetWidth/2);
top:expression(document.body.clientHeight/2 - this.offsetHeight)">
<img src="images/gameover.gif" style="border-style:outset;border-width:2"></span>
<table id="tblBoard" onmouseover="tblBoard_onmouseover();" onclick="tblBoard_onclick();" border="0" cellpadding="0" cellspacing="0" style="background-image:url(images/gameboard.jpg)">
<tr>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
</tr>
<tr>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
</tr>
<tr>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
</tr>
<tr>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
</tr>
<tr>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
</tr>
<tr>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
</tr>
<tr>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
</tr>
<tr>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
<td><img width="43" height="43"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="33%">&nbsp;</td>
<td width="33%" align="center">
<button id="btnRestart" onclick="btnRestart_onclick();" style="font-family:Tahoma;font-size:8pt;border-style:none;background-image:url(images/playerbg.gif);height:17px"></button>
</td>
<td width="33%" align="right" style="font-size:7pt"><a id="lblVersion" href="http://games.mess.be" target="_blank" style="color:white"></a> <a href="javascript:help_onclick();"><img id="btnHelp" align="absmiddle" border="0" src="images/help.gif"></a></td>
</tr>
<tr>
<td colspan="3">
<div style="height:30px">
<table cellpadding="0" cellspacing="0" width="100%" style="font-family:Tahoma;font-size:8pt;background-color:white">
<tr height="17" style="font-weight:bold;background-image:url(images/headerbg.gif)">
<td><img src="images/leftcorner.jpg"></td>
<td id="lblPlayers" colspan="2">&nbsp;</td>
<td id="lblColor">&nbsp;</td>
<td id="lblGamePoints" align="center">&nbsp;</td>
<td id="lblGamesWon" align="center">&nbsp;</td>
<td id="lblGameTotalPoints" align="center">&nbsp;</td>
<td align="right"><img src="images/rightcorner.jpg"></td>
</tr>
<tr height="17" style="background-image:url(images/playerbg.gif)">
<td width="17" colspan="2"><img src="images/star.jpg"</td>
<td id="nameMe">&nbsp;</td>
<td id="colorMe">&nbsp;</td>
<td id="scoreMe" align="center">0</td>
<td id="gamesMe" align="center">0</td>
<td id="totalMe" align="center" colspan="2">0</td>
</tr>
<tr height="17" style="background-image:url(images/playerbg.gif)">
<td width="17" colspan="2">&nbsp;</td>
<td id="nameRemote">&nbsp;</td>
<td id="colorRemote">&nbsp;</td>
<td id="scoreRemote" align="center">0</td>
<td id="gamesRemote" align="center">0</td>
<td id="totalRemote" align="center" colspan="2">0</td>
</tr>
</table>
</div>
</td>
</tr>
<tr valign="bottom" height="17px">
<td colspan="3">
<div id="statusBar" style="height:17px;background-color:white;background-image:url(images/playerbg.gif)">
<img id="statusIcon" width="16" height="16" align="absmiddle" style="unselectable;margin:0px 5px" src="images/empty.gif">
<span id="statusText" unselectable style="cursor:default"></span>
</div>
</td>
</tr>
</table>
</body>
</html>