Files
ecarte/doc/Game.html
T
2026-10-10 14:57:27 +02:00

1204 lines
39 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>class Game - RDoc Documentation</title>
<meta
name="keywords"
content="ruby,class,Game"
>
<meta
name="description"
content="class Game: Gère le déroulement et les règles d&#39;une partie d&#39;Écarté."
>
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:title" content="class Game - RDoc Documentation">
<meta property="og:description" content="Gère le déroulement et les règles d&#39;une partie d&#39;Écarté.">
<!-- Twitter -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="class Game - RDoc Documentation">
<meta name="twitter:description" content="Gère le déroulement et les règles d&#39;une partie d&#39;Écarté.">
<script type="text/javascript">
var rdoc_rel_prefix = "./";
var index_rel_prefix = "./";
</script>
<script
src="./js/theme-toggle.js?v=7.0.4"
></script>
<script
src="./js/search_navigation.js?v=7.0.4"
defer
></script>
<script
src="./js/search_data.js?v=7.0.4"
defer
></script>
<script
src="./js/search_ranker.js?v=7.0.4"
defer
></script>
<script
src="./js/search_controller.js?v=7.0.4"
defer
></script>
<script
src="./js/c_highlighter.js?v=7.0.4"
defer
></script>
<script
src="./js/aliki.js?v=7.0.4"
defer
></script>
<link
href="./css/rdoc.css?v=7.0.4"
rel="stylesheet"
>
<body role="document" class="class has-toc">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<!-- Chevron (right arrow) - used for expand/collapse -->
<symbol
id="icon-chevron"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="9 18 15 12 9 6"></polyline>
</symbol>
<!-- File/Document - Pages section -->
<symbol
id="icon-file"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path
d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"
></path>
<polyline points="14 2 14 8 20 8"></polyline>
</symbol>
<!-- Layers/Stack - Classes and Modules section -->
<symbol
id="icon-layers"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
<polyline points="2 17 12 22 22 17"></polyline>
<polyline points="2 12 12 17 22 12"></polyline>
</symbol>
<!-- Curly braces with C - Class Methods section -->
<symbol
id="icon-class-methods"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M6 3C3.5 3 2 4.5 2 7v3c0 1.5-1 2-1 2s1 .5 1 2v5c0 2.5 1.5 4 4 4"></path>
<path d="M18 3c2.5 0 4 1.5 4 4v3c0 1.5 1 2 1 2s-1 .5-1 2v5c0 2.5-1.5 4-4 4"></path>
<text
x="12"
y="17"
text-anchor="middle"
font-size="13"
font-weight="bold"
fill="currentColor"
stroke="none"
>
C
</text>
</symbol>
<!-- Curly braces with I - Instance Methods section -->
<symbol
id="icon-instance-methods"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M6 3C3.5 3 2 4.5 2 7v3c0 1.5-1 2-1 2s1 .5 1 2v5c0 2.5 1.5 4 4 4"></path>
<path d="M18 3c2.5 0 4 1.5 4 4v3c0 1.5 1 2 1 2s-1 .5-1 2v5c0 2.5-1.5 4-4 4"></path>
<text
x="12"
y="17"
text-anchor="middle"
font-size="13"
font-weight="bold"
fill="currentColor"
stroke="none"
>
I
</text>
</symbol>
<!-- Double chevrons up - Ancestors section -->
<symbol
id="icon-ancestors"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="17 11 12 6 7 11"></polyline>
<polyline points="17 18 12 13 7 18"></polyline>
</symbol>
<!-- User with plus - Included Modules section -->
<symbol
id="icon-includes"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
<circle cx="8.5" cy="7" r="4"></circle>
<line
x1="20"
y1="8"
x2="20"
y2="14"
></line>
<line
x1="23"
y1="11"
x2="17"
y2="11"
></line>
</symbol>
<!-- User with check - Extended Modules section -->
<symbol
id="icon-extends"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
<circle cx="8.5" cy="7" r="4"></circle>
<polyline points="17 11 19 13 23 9"></polyline>
</symbol>
<!-- List - Sections section -->
<symbol
id="icon-list"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line
x1="8"
y1="6"
x2="21"
y2="6"
></line>
<line
x1="8"
y1="12"
x2="21"
y2="12"
></line>
<line
x1="8"
y1="18"
x2="21"
y2="18"
></line>
<line
x1="3"
y1="6"
x2="3.01"
y2="6"
></line>
<line
x1="3"
y1="12"
x2="3.01"
y2="12"
></line>
<line
x1="3"
y1="18"
x2="3.01"
y2="18"
></line>
</symbol>
</svg>
<header class="top-navbar">
<a href="./index.html" class="navbar-brand">
RDoc Documentation
</a>
<!-- Desktop search bar -->
<div class="navbar-search navbar-search-desktop" role="search">
<form action="#" method="get" accept-charset="utf-8">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results-desktop"
type="text" name="search" placeholder="Search (/) for a class, method..."
spellcheck="false" autocomplete="off"
title="Type to search, Up and Down to navigate, Enter to load">
<ul id="search-results-desktop" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden search-results"></ul>
</form>
</div>
<!-- Mobile search icon button -->
<button id="search-toggle" class="navbar-search-mobile" aria-label="Open search" type="button">
<span aria-hidden="true">🔍</span>
</button>
<!-- Theme toggle button -->
<button id="theme-toggle" class="theme-toggle" aria-label="Switch to dark mode" type="button">
<span class="theme-toggle-icon" aria-hidden="true">🌙</span>
</button>
</header>
<!-- Search Modal (Mobile) -->
<div id="search-modal" class="search-modal" hidden aria-modal="true" role="dialog" aria-label="Search">
<div class="search-modal-backdrop"></div>
<div class="search-modal-content">
<div class="search-modal-header">
<form class="search-modal-form" action="#" method="get" accept-charset="utf-8">
<span class="search-modal-icon" aria-hidden="true">🔍</span>
<input id="search-field-mobile" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results-mobile"
type="text" name="search" placeholder="Search documentation"
spellcheck="false" autocomplete="off">
<button type="button" class="search-modal-close" aria-label="Close search" id="search-modal-close">
<span aria-hidden="true">esc</span>
</button>
</form>
</div>
<div class="search-modal-body">
<ul id="search-results-mobile" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="search-results search-modal-results initially-hidden"></ul>
<div class="search-modal-empty">
<p>No recent searches</p>
</div>
</div>
</div>
</div>
<div id="navigation-toggle" role="button" tabindex="0" aria-label="Toggle sidebar" aria-expanded="true" aria-controls="navigation">
<span aria-hidden="true">&#9776;</span>
</div>
<nav id="navigation" role="navigation" hidden>
<div id="fileindex-section" class="nav-section">
<details class="nav-section-collapsible" >
<summary class="nav-section-header">
<span class="nav-section-icon">
<svg>
<use href="#icon-file"></use>
</svg>
</span>
<span class="nav-section-title">Pages</span>
<span class="nav-section-chevron">
<svg>
<use href="#icon-chevron"></use>
</svg>
</span>
</summary>
<ul class="nav-list">
<li>
<a href="./README_md.html">
README
</a>
</li>
</ul>
</details>
</div>
<div id="parent-class-section" class="nav-section">
<details class="nav-section-collapsible" open>
<summary class="nav-section-header">
<span class="nav-section-icon">
<svg><use href="#icon-ancestors"></use></svg>
</span>
<span class="nav-section-title">Ancestors</span>
<span class="nav-section-chevron">
<svg><use href="#icon-chevron"></use></svg>
</span>
</summary>
<ul><li>Object</li></ul>
</details>
</div>
<div class="nav-section">
<details class="nav-section-collapsible" open>
<summary class="nav-section-header">
<span class="nav-section-icon">
<svg><use href="#icon-class-methods"></use></svg>
</span>
<span class="nav-section-title">Class Methods</span>
<span class="nav-section-chevron">
<svg><use href="#icon-chevron"></use></svg>
</span>
</summary>
<ul class="nav-list" role="directory">
<li ><a href="#method-c-new">new</a></li>
</ul>
</details>
</div>
<div class="nav-section">
<details class="nav-section-collapsible" open>
<summary class="nav-section-header">
<span class="nav-section-icon">
<svg><use href="#icon-instance-methods"></use></svg>
</span>
<span class="nav-section-title">Instance Methods</span>
<span class="nav-section-chevron">
<svg><use href="#icon-chevron"></use></svg>
</span>
</summary>
<ul class="nav-list" role="directory">
<li ><a href="#method-i-change_dealer">change_dealer</a></li>
<li ><a href="#method-i-deal">deal</a></li>
<li ><a href="#method-i-determine_dealer">determine_dealer</a></li>
<li ><a href="#method-i-game_winner">game_winner</a></li>
<li ><a href="#method-i-other_player">other_player</a></li>
<li ><a href="#method-i-play">play</a></li>
<li ><a href="#method-i-play_trick">play_trick</a></li>
<li ><a href="#method-i-stock">stock</a></li>
<li ><a href="#method-i-valid_follow_card-3F">valid_follow_card?</a></li>
</ul>
</details>
</div>
<div id="classindex-section" class="nav-section">
<details class="nav-section-collapsible" open>
<summary class="nav-section-header">
<span class="nav-section-icon">
<svg><use href="#icon-layers"></use></svg>
</span>
<span class="nav-section-title">Classes and Modules</span>
<span class="nav-section-chevron">
<svg><use href="#icon-chevron"></use></svg>
</span>
</summary>
<ul class="link-list nav-list"><li><code><a href="./Card.html">Card</a></code></li><li><code><a href="./Deck.html">Deck</a></code></li><li><code><a href="./Game.html">Game</a></code></li><li><code><a href="./Player.html">Player</a></code></li><li><code><a href="./TerminalUI.html">TerminalUI</a></code></li></ul>
</details>
</div>
</nav>
<main role="main" aria-labelledby="class-Game">
<h1 id="class-Game" class="anchor-link class">
class Game
</h1>
<section class="description">
<p>Gère le déroulement et les règles d’une partie d’Écarté.</p>
</section>
<section id="5Buntitled-5D" class="documentation-section anchor-link">
<section class="attribute-method-details method-section">
<header>
<h3 id="attributes"><a href="#attributes">Attributes</a></h3>
</header>
<div id="attribute-i-dealer" class="method-detail anchor-link">
<div class="method-heading attribute-method-heading">
<a href="#attribute-i-dealer" title="Link to this attribute">
<span class="method-name">dealer</span>
<span class="attribute-access-type">[R]</span>
</a>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-non_dealer" class="method-detail anchor-link">
<div class="method-heading attribute-method-heading">
<a href="#attribute-i-non_dealer" title="Link to this attribute">
<span class="method-name">non_dealer</span>
<span class="attribute-access-type">[R]</span>
</a>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-player1" class="method-detail anchor-link">
<div class="method-heading attribute-method-heading">
<a href="#attribute-i-player1" title="Link to this attribute">
<span class="method-name">player1</span>
<span class="attribute-access-type">[R]</span>
</a>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-player2" class="method-detail anchor-link">
<div class="method-heading attribute-method-heading">
<a href="#attribute-i-player2" title="Link to this attribute">
<span class="method-name">player2</span>
<span class="attribute-access-type">[R]</span>
</a>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-trick_winner" class="method-detail anchor-link">
<div class="method-heading attribute-method-heading">
<a href="#attribute-i-trick_winner" title="Link to this attribute">
<span class="method-name">trick_winner</span>
<span class="attribute-access-type">[R]</span>
</a>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-trump_suit" class="method-detail anchor-link">
<div class="method-heading attribute-method-heading">
<a href="#attribute-i-trump_suit" title="Link to this attribute">
<span class="method-name">trump_suit</span>
<span class="attribute-access-type">[R]</span>
</a>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-upcard" class="method-detail anchor-link">
<div class="method-heading attribute-method-heading">
<a href="#attribute-i-upcard" title="Link to this attribute">
<span class="method-name">upcard</span>
<span class="attribute-access-type">[R]</span>
</a>
</div>
<div class="method-description">
</div>
</div>
</section>
<section id="public-class-5Buntitled-5D-method-details" class="method-section anchor-link">
<header>
<h3 id="public-class-methods"><a href="#public-class-methods">Public Class Methods</a></h3>
</header>
<div id="method-c-new" class="method-detail anchor-link ">
<div class="method-header">
<div class="method-heading">
<a href="#method-c-new" title="Link to this method">
<span class="method-name">new</span>
<span class="method-args">(player_name1, player_name2)</span>
</a>
</div>
</div>
<div class="method-controls">
<details class="method-source-toggle">
<summary>Source</summary>
</details>
</div>
<div class="method-source-code" id="new-source">
<pre class="ruby" data-language="ruby"><span class="ruby-comment"># File lib/game.rb, line 10</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">player_name1</span>, <span class="ruby-identifier">player_name2</span>)
<span class="ruby-ivar">@deck</span> = <span class="ruby-constant">Deck</span>.<span class="ruby-identifier">new</span>
<span class="ruby-ivar">@player1</span> = <span class="ruby-constant">Player</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">player_name1</span>)
<span class="ruby-ivar">@player2</span> = <span class="ruby-constant">Player</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">player_name2</span>)
<span class="ruby-ivar">@dealer</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@non_dealer</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@upcard</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@trump_suit</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@trick_winner</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@ui</span> = <span class="ruby-constant">TerminalUI</span>.<span class="ruby-identifier">new</span>
<span class="ruby-keyword">end</span></pre>
</div>
<div class="method-description">
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section anchor-link">
<header>
<h3 id="public-instance-methods"><a href="#public-instance-methods">Public Instance Methods</a></h3>
</header>
<div id="method-i-change_dealer" class="method-detail anchor-link ">
<div class="method-header">
<div class="method-heading">
<a href="#method-i-change_dealer" title="Link to this method">
<span class="method-name">change_dealer</span>
<span class="method-args">()</span>
</a>
</div>
</div>
<div class="method-controls">
<details class="method-source-toggle">
<summary>Source</summary>
</details>
</div>
<div class="method-source-code" id="change_dealer-source">
<pre class="ruby" data-language="ruby"><span class="ruby-comment"># File lib/game.rb, line 41</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">change_dealer</span>
<span class="ruby-identifier">old_dealer</span> = <span class="ruby-ivar">@dealer</span>
<span class="ruby-ivar">@dealer</span> = <span class="ruby-ivar">@non_dealer</span>
<span class="ruby-ivar">@non_dealer</span> = <span class="ruby-identifier">old_dealer</span>
<span class="ruby-keyword">end</span></pre>
</div>
<div class="method-description">
<p>Échange les rôles de donneur et de non-donneur.</p>
</div>
</div>
<div id="method-i-deal" class="method-detail anchor-link ">
<div class="method-header">
<div class="method-heading">
<a href="#method-i-deal" title="Link to this method">
<span class="method-name">deal</span>
<span class="method-args">()</span>
</a>
</div>
</div>
<div class="method-controls">
<details class="method-source-toggle">
<summary>Source</summary>
</details>
</div>
<div class="method-source-code" id="deal-source">
<pre class="ruby" data-language="ruby"><span class="ruby-comment"># File lib/game.rb, line 48</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">deal</span>
<span class="ruby-ivar">@player1</span>.<span class="ruby-identifier">clear_hand</span>
<span class="ruby-ivar">@player2</span>.<span class="ruby-identifier">clear_hand</span>
<span class="ruby-ivar">@deck</span> = <span class="ruby-constant">Deck</span>.<span class="ruby-identifier">new</span>
<span class="ruby-ivar">@deck</span>.<span class="ruby-identifier">shuffle</span>
<span class="ruby-value">5</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword">do</span>
<span class="ruby-ivar">@non_dealer</span>.<span class="ruby-identifier">receive</span>(<span class="ruby-ivar">@deck</span>.<span class="ruby-identifier">draw</span>)
<span class="ruby-ivar">@dealer</span>.<span class="ruby-identifier">receive</span>(<span class="ruby-ivar">@deck</span>.<span class="ruby-identifier">draw</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@upcard</span> = <span class="ruby-ivar">@deck</span>.<span class="ruby-identifier">draw</span>
<span class="ruby-ivar">@trump_suit</span> = <span class="ruby-ivar">@upcard</span>.<span class="ruby-identifier">suit</span>
<span class="ruby-keyword">end</span></pre>
</div>
<div class="method-description">
<p>Distribue les cartes et pose la retourne.</p>
</div>
</div>
<div id="method-i-determine_dealer" class="method-detail anchor-link ">
<div class="method-header">
<div class="method-heading">
<a href="#method-i-determine_dealer" title="Link to this method">
<span class="method-name">determine_dealer</span>
<span class="method-args">()</span>
</a>
</div>
</div>
<div class="method-controls">
<details class="method-source-toggle">
<summary>Source</summary>
</details>
</div>
<div class="method-source-code" id="determine_dealer-source">
<pre class="ruby" data-language="ruby"><span class="ruby-comment"># File lib/game.rb, line 23</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">determine_dealer</span>
<span class="ruby-ivar">@deck</span>.<span class="ruby-identifier">shuffle</span>
<span class="ruby-keyword">while</span> <span class="ruby-ivar">@dealer</span>.<span class="ruby-identifier">nil?</span>
<span class="ruby-identifier">card1</span> = <span class="ruby-ivar">@deck</span>.<span class="ruby-identifier">cards</span>[<span class="ruby-identifier">rand</span>(<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">29</span>)]
<span class="ruby-identifier">card2</span> = <span class="ruby-ivar">@deck</span>.<span class="ruby-identifier">cards</span>[<span class="ruby-identifier">rand</span>(<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">29</span>)]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">card1</span>.<span class="ruby-identifier">strength</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">card2</span>.<span class="ruby-identifier">strength</span>
<span class="ruby-ivar">@dealer</span> = <span class="ruby-ivar">@player1</span>
<span class="ruby-ivar">@non_dealer</span> = <span class="ruby-ivar">@player2</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">card2</span>.<span class="ruby-identifier">strength</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">card1</span>.<span class="ruby-identifier">strength</span>
<span class="ruby-ivar">@dealer</span> = <span class="ruby-ivar">@player2</span>
<span class="ruby-ivar">@non_dealer</span> = <span class="ruby-ivar">@player1</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
<div class="method-description">
<p>Simule une coupe pour déterminer quel joueur sera le donneur.</p>
</div>
</div>
<div id="method-i-game_winner" class="method-detail anchor-link ">
<div class="method-header">
<div class="method-heading">
<a href="#method-i-game_winner" title="Link to this method">
<span class="method-name">game_winner</span>
<span class="method-args">()</span>
</a>
</div>
</div>
<div class="method-controls">
<details class="method-source-toggle">
<summary>Source</summary>
</details>
</div>
<div class="method-source-code" id="game_winner-source">
<pre class="ruby" data-language="ruby"><span class="ruby-comment"># File lib/game.rb, line 128</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">game_winner</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@player1</span>.<span class="ruby-identifier">score</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@player2</span>.<span class="ruby-identifier">score</span>
<span class="ruby-ivar">@player1</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-ivar">@player1</span>.<span class="ruby-identifier">score</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@player2</span>.<span class="ruby-identifier">score</span>
<span class="ruby-ivar">@player2</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
<div class="method-description">
<p>Retourne le joueur ayant le meilleur score.</p>
</div>
</div>
<div id="method-i-other_player" class="method-detail anchor-link ">
<div class="method-header">
<div class="method-heading">
<a href="#method-i-other_player" title="Link to this method">
<span class="method-name">other_player</span>
<span class="method-args">(player)</span>
</a>
</div>
</div>
<div class="method-controls">
<details class="method-source-toggle">
<summary>Source</summary>
</details>
</div>
<div class="method-source-code" id="other_player-source">
<pre class="ruby" data-language="ruby"><span class="ruby-comment"># File lib/game.rb, line 108</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">other_player</span>(<span class="ruby-identifier">player</span>)
<span class="ruby-identifier">player</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@player1</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@player2</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@player1</span>
<span class="ruby-keyword">end</span></pre>
</div>
<div class="method-description">
<p>Retourne l’autre joueur.</p>
</div>
</div>
<div id="method-i-play" class="method-detail anchor-link ">
<div class="method-header">
<div class="method-heading">
<a href="#method-i-play" title="Link to this method">
<span class="method-name">play</span>
<span class="method-args">()</span>
</a>
</div>
</div>
<div class="method-controls">
<details class="method-source-toggle">
<summary>Source</summary>
</details>
</div>
<div class="method-source-code" id="play-source">
<pre class="ruby" data-language="ruby"><span class="ruby-comment"># File lib/game.rb, line 113</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">play</span>
<span class="ruby-identifier">lead_player</span> = <span class="ruby-ivar">@non_dealer</span>
<span class="ruby-identifier">follow_player</span> = <span class="ruby-ivar">@dealer</span>
<span class="ruby-ivar">@ui</span>.<span class="ruby-identifier">display_trump</span>(<span class="ruby-ivar">@trump_suit</span>)
<span class="ruby-value">5</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword">do</span>
<span class="ruby-identifier">play_trick</span>(<span class="ruby-identifier">lead_player</span>, <span class="ruby-identifier">follow_player</span>)
<span class="ruby-identifier">lead_player</span> = <span class="ruby-ivar">@trick_winner</span>
<span class="ruby-identifier">follow_player</span> = <span class="ruby-identifier">other_player</span>(<span class="ruby-identifier">lead_player</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
<div class="method-description">
<p>Joue une partie.</p>
</div>
</div>
<div id="method-i-play_trick" class="method-detail anchor-link ">
<div class="method-header">
<div class="method-heading">
<a href="#method-i-play_trick" title="Link to this method">
<span class="method-name">play_trick</span>
<span class="method-args">(lead_player, follow_player)</span>
</a>
</div>
</div>
<div class="method-controls">
<details class="method-source-toggle">
<summary>Source</summary>
</details>
</div>
<div class="method-source-code" id="play_trick-source">
<pre class="ruby" data-language="ruby"><span class="ruby-comment"># File lib/game.rb, line 84</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">play_trick</span>(<span class="ruby-identifier">lead_player</span>, <span class="ruby-identifier">follow_player</span>)
<span class="ruby-identifier">lead_card</span> = <span class="ruby-ivar">@ui</span>.<span class="ruby-identifier">choose_card</span>(<span class="ruby-identifier">lead_player</span>)
<span class="ruby-identifier">follow_card</span> = <span class="ruby-ivar">@ui</span>.<span class="ruby-identifier">choose_card</span>(<span class="ruby-identifier">follow_player</span>)
<span class="ruby-keyword">until</span> <span class="ruby-identifier">valid_follow_card?</span>(<span class="ruby-identifier">follow_player</span>, <span class="ruby-identifier">lead_card</span>, <span class="ruby-identifier">follow_card</span>)
<span class="ruby-ivar">@ui</span>.<span class="ruby-identifier">display_wrong_card</span>
<span class="ruby-identifier">follow_card</span> = <span class="ruby-ivar">@ui</span>.<span class="ruby-identifier">choose_card</span>(<span class="ruby-identifier">follow_player</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">lead_player</span>.<span class="ruby-identifier">play</span>(<span class="ruby-identifier">lead_card</span>)
<span class="ruby-identifier">follow_player</span>.<span class="ruby-identifier">play</span>(<span class="ruby-identifier">follow_card</span>)
<span class="ruby-ivar">@trick_winner</span> = <span class="ruby-keyword">if</span> (<span class="ruby-identifier">lead_card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">follow_card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">follow_card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">!=</span> <span class="ruby-ivar">@trump_suit</span>) <span class="ruby-operator">||</span>
(<span class="ruby-identifier">lead_card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">follow_card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">lead_card</span>.<span class="ruby-identifier">strength</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">follow_card</span>.<span class="ruby-identifier">strength</span>)
<span class="ruby-identifier">lead_player</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">follow_player</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@trick_winner</span>.<span class="ruby-identifier">add_point</span>
<span class="ruby-ivar">@ui</span>.<span class="ruby-identifier">display_trick_winner</span>(<span class="ruby-ivar">@trick_winner</span>)
<span class="ruby-keyword">end</span></pre>
</div>
<div class="method-description">
<p>Joue un pli.</p>
</div>
</div>
<div id="method-i-stock" class="method-detail anchor-link ">
<div class="method-header">
<div class="method-heading">
<a href="#method-i-stock" title="Link to this method">
<span class="method-name">stock</span>
<span class="method-args">()</span>
</a>
</div>
</div>
<div class="method-controls">
<details class="method-source-toggle">
<summary>Source</summary>
</details>
</div>
<div class="method-source-code" id="stock-source">
<pre class="ruby" data-language="ruby"><span class="ruby-comment"># File lib/game.rb, line 64</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">stock</span>
<span class="ruby-ivar">@deck</span>.<span class="ruby-identifier">cards</span>
<span class="ruby-keyword">end</span></pre>
</div>
<div class="method-description">
<p>Retourne les cartes restantes dans le talon.</p>
</div>
</div>
<div id="method-i-valid_follow_card-3F" class="method-detail anchor-link ">
<div class="method-header">
<div class="method-heading">
<a href="#method-i-valid_follow_card-3F" title="Link to this method">
<span class="method-name">valid_follow_card?</span>
<span class="method-args">(follow_player, lead_card, follow_card)</span>
</a>
</div>
</div>
<div class="method-controls">
<details class="method-source-toggle">
<summary>Source</summary>
</details>
</div>
<div class="method-source-code" id="valid_follow_card-3F-source">
<pre class="ruby" data-language="ruby"><span class="ruby-comment"># File lib/game.rb, line 69</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">valid_follow_card?</span>(<span class="ruby-identifier">follow_player</span>, <span class="ruby-identifier">lead_card</span>, <span class="ruby-identifier">follow_card</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">follow_player</span>.<span class="ruby-identifier">hand</span>.<span class="ruby-identifier">any?</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">card</span><span class="ruby-operator">|</span> <span class="ruby-identifier">card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">lead_card</span>.<span class="ruby-identifier">suit</span> }
<span class="ruby-keyword">if</span> <span class="ruby-identifier">follow_player</span>.<span class="ruby-identifier">hand</span>.<span class="ruby-identifier">any?</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">card</span><span class="ruby-operator">|</span> <span class="ruby-identifier">card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">lead_card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">card</span>.<span class="ruby-identifier">strength</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">lead_card</span>.<span class="ruby-identifier">strength</span> }
<span class="ruby-identifier">follow_card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">lead_card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">follow_card</span>.<span class="ruby-identifier">strength</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">lead_card</span>.<span class="ruby-identifier">strength</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">follow_card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">lead_card</span>.<span class="ruby-identifier">suit</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">follow_player</span>.<span class="ruby-identifier">hand</span>.<span class="ruby-identifier">any?</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">card</span><span class="ruby-operator">|</span> <span class="ruby-identifier">card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@trump_suit</span> }
<span class="ruby-identifier">follow_card</span>.<span class="ruby-identifier">suit</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@trump_suit</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
<div class="method-description">
<p>Vérifie si le coup du second joueur respecte les règles.</p>
</div>
</div>
</section>
</section>
</main>
<aside class="table-of-contents" role="complementary" aria-label="Table of Contents">
<div class="toc-sticky">
<h3 class="toc-heading">On This Page</h3>
<nav class="toc-nav" id="toc-nav" aria-label="Page sections">
<!-- Generated by JavaScript based on page headings -->
</nav>
</div>
</aside>
<footer class="site-footer">
<div class="footer-bottom">
<p>
Generated by <a href="https://ruby.github.io/rdoc/">RDoc 7.0.4</a>
using the Aliki theme by <a href="http://st0012.dev">Stan Lo</a>
</p>
</div>
</footer>
</body>