Getting started on how-to-play instructions.

This commit is contained in:
2024-09-07 03:41:11 +00:00
parent 22d332c246
commit 0eb75994c9
31 changed files with 4666 additions and 31 deletions

View File

@@ -0,0 +1,50 @@
@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 />
<h3>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();
}
}