49 lines
2.0 KiB
Plaintext
49 lines
2.0 KiB
Plaintext
@page "/"
|
|
|
|
@using Shogi.Contracts.Types
|
|
@using System.Net.WebSockets
|
|
@using System.Text
|
|
|
|
<main class="shogi PrimaryTheme">
|
|
<h2>What is Shogi?</h2>
|
|
<p>Shogi is a two-player strategy game where each player simultaneously protects their king while capturing their opponent's.</p>
|
|
<p>Players take turns, moving one piece each turn until check-mate is achieved.</p>
|
|
|
|
<h2>How to Play</h2>
|
|
|
|
<h3>Setup</h3>
|
|
<p>Arrange the board so it looks like this. Take note of the Rook and Bishop positions for each player.</p>
|
|
<BoardSetupVisualAid />
|
|
|
|
<!-- Margin top is because chromium browsers do not render nested grids the same as Firefox -->
|
|
<h3 style="margin-top: 2rem">Pieces and Movement</h3>
|
|
<p>Each piece has a unique set of moves. Some pieces, like the Pawn, may move only one tile per turn. Other pieces, like the Bishop, may move multiple tiles per turn.</p>
|
|
<p>A tile may only hold one piece and, except for the Knight, pieces may never move through each other.</p>
|
|
<p>Should your piece enter the tile of an opponent's piece, you must stop there and capture the opponent's piece.</p>
|
|
<PieceMovesVisualAid />
|
|
|
|
<h3>Promotion</h3>
|
|
<p>The furthest three ranks from your starting position is an area called the <b>promotion zone</b>. A piece may promote at the end of the turn when it moves in to, out of, or within the promotion zone.</p>
|
|
<p>Promoting changes the move-set available to the peice, and a piece <em>must promote</em> if it has no legal, future moves. An example of this is a Pawn moving the the furthest rank on the board such that it cannot go further. In this case, the Pawn must promote.</p>
|
|
<p>All pieces may promote <b>except for</b> the Gold General and King.</p>
|
|
<PromotedPieceVisualAid />
|
|
|
|
<h3>Capturing and the Hand</h3>
|
|
<h3>The King and "Check"</h3>
|
|
<h3>Victory</h3>
|
|
</main>
|
|
|
|
@code {
|
|
private string activeSessionName = string.Empty;
|
|
private Task OnLoginChanged()
|
|
{
|
|
StateHasChanged();
|
|
return Task.CompletedTask;
|
|
}
|
|
private void OnChangeSession(SessionMetadata s)
|
|
{
|
|
activeSessionName = s.SessionId.ToString();
|
|
StateHasChanged();
|
|
}
|
|
}
|