1316 lines
42 KiB
HTML
1316 lines
42 KiB
HTML
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><style>@font-face {
|
|
font-family: "fontawesome-mini";
|
|
src: url(data:application/octet-stream;base64,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);
|
|
}
|
|
|
|
[data-theme="dark"] {
|
|
color-scheme: dark;
|
|
}
|
|
|
|
[data-theme="light"] {
|
|
color-scheme: light;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
[data-theme="auto"],
|
|
[data-theme="dark"]
|
|
{
|
|
--color-bg: #0d1117;
|
|
--color-bg-subtle: #161b22;
|
|
--color-fg: #e6edf3;
|
|
--color-link-fg: #2f81f7;
|
|
--color-border: #30363d;
|
|
--color-border-muted: #21262d;
|
|
--color-fg-muted: #848d97;
|
|
--color-note-fg: #2f81f7;
|
|
--color-note-emphasis: #1f6feb;
|
|
--color-tip-fg: #3fb950;
|
|
--color-tip-emphasis: #238636;
|
|
--color-warning-fg: #d29922;
|
|
--color-warning-emphasis: #9e6a03;
|
|
--color-attention-subtle: rgba(187,128,9,0.15);
|
|
--color-caution-fg: #f85149;
|
|
--color-caution-emphasis: #da3633;
|
|
--color-important-fg: #a371f7;
|
|
--color-important-emphasis: #8957e5;
|
|
--color-neutral-muted: rgba(110,118,129,0.4);
|
|
--color-progress-shadow: #010101;
|
|
--color-progress-shadow2: rgba(0, 0, 0, .5);
|
|
--color-progress-bg: #363c43;
|
|
}
|
|
}
|
|
|
|
@media (prefers-color-scheme: light) {
|
|
[data-theme="auto"],
|
|
[data-theme="light"] {
|
|
--color-bg: #ffffff;
|
|
--color-bg-subtle: #f6f8fa;
|
|
--color-fg: #333333;
|
|
--color-link-fg: #0969da;
|
|
--color-border: #d0d7de;
|
|
--color-border-muted: #d8dee4;
|
|
--color-fg-muted: #656d76;
|
|
--color-note-fg: #0969da;
|
|
--color-note-emphasis: #0969da;
|
|
--color-tip-fg: #1a7f37;
|
|
--color-tip-emphasis: #1f883d;
|
|
--color-warning-fg: #9a6700;
|
|
--color-warning-emphasis: #9a6700;
|
|
--color-attention-subtle: #fff8c5;
|
|
--color-caution-fg: #d1242f;
|
|
--color-caution-emphasis: #cf222e;
|
|
--color-important-fg: #8250df;
|
|
--color-important-emphasis: #8250df;
|
|
--color-neutral-muted: rgba(175,184,193,0.2);
|
|
--color-progress-shadow: #fefefe;
|
|
--color-progress-shadow2: rgba(0, 0, 0, .1);
|
|
--color-progress-bg: #efefef;
|
|
}
|
|
}
|
|
|
|
body {
|
|
max-width: 980px;
|
|
margin: 16px auto;
|
|
background-color: var(--color-bg);
|
|
}
|
|
|
|
body .markdown-body
|
|
{
|
|
padding: 45px;
|
|
}
|
|
|
|
.markdown-body {
|
|
font-family: sans-serif;
|
|
-ms-text-size-adjust: 100%;
|
|
-webkit-text-size-adjust: 100%;
|
|
color: var(--color-fg);
|
|
overflow: hidden;
|
|
font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
|
|
font-size: 16px;
|
|
line-height: 1.6;
|
|
word-wrap: break-word;
|
|
}
|
|
|
|
.markdown-body a {
|
|
background: transparent;
|
|
}
|
|
|
|
.markdown-body a:active,
|
|
.markdown-body a:hover {
|
|
outline: 0;
|
|
}
|
|
|
|
.markdown-body b,
|
|
.markdown-body strong {
|
|
font-weight: bold;
|
|
}
|
|
|
|
.markdown-body mark {
|
|
background: #ff0;
|
|
color: #000;
|
|
font-style: italic;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.markdown-body sub,
|
|
.markdown-body sup {
|
|
font-size: 75%;
|
|
line-height: 0;
|
|
position: relative;
|
|
vertical-align: baseline;
|
|
}
|
|
.markdown-body sup {
|
|
top: -0.5em;
|
|
}
|
|
.markdown-body sub {
|
|
bottom: -0.25em;
|
|
}
|
|
|
|
.markdown-body h1 {
|
|
font-size: 2em;
|
|
margin: 0.67em 0;
|
|
}
|
|
|
|
.markdown-body img {
|
|
border: 0;
|
|
}
|
|
|
|
.markdown-body hr {
|
|
-moz-box-sizing: content-box;
|
|
box-sizing: content-box;
|
|
height: 0;
|
|
}
|
|
|
|
.markdown-body pre {
|
|
overflow: auto;
|
|
}
|
|
|
|
.markdown-body code,
|
|
.markdown-body kbd,
|
|
.markdown-body pre,
|
|
.markdown-body samp {
|
|
font-family: monospace, monospace;
|
|
font-size: 1em;
|
|
}
|
|
|
|
.markdown-body input {
|
|
color: inherit;
|
|
font: inherit;
|
|
margin: 0;
|
|
}
|
|
|
|
.markdown-body html input[disabled] {
|
|
cursor: default;
|
|
}
|
|
|
|
.markdown-body input {
|
|
line-height: normal;
|
|
}
|
|
|
|
.markdown-body input[type="checkbox"] {
|
|
box-sizing: border-box;
|
|
padding: 0;
|
|
}
|
|
|
|
.markdown-body table {
|
|
border-collapse: collapse;
|
|
border-spacing: 0;
|
|
}
|
|
|
|
.markdown-body td,
|
|
.markdown-body th {
|
|
padding: 0;
|
|
}
|
|
|
|
.markdown-body .codehilitetable,
|
|
.markdown-body .highlighttable {
|
|
border: 0;
|
|
border-spacing: 0;
|
|
}
|
|
|
|
.markdown-body .codehilitetable tr,
|
|
.markdown-body .highlighttable {
|
|
border: 0;
|
|
}
|
|
|
|
.markdown-body .codehilitetable pre,
|
|
.markdown-body .codehilitetable div.codehilite,
|
|
.markdown-body .highlighttable pre,
|
|
.markdown-body .highlighttable div.highlight {
|
|
margin: 0;
|
|
}
|
|
|
|
.markdown-body .linenos,
|
|
.markdown-body .code,
|
|
.markdown-body .codehilitetable td,
|
|
.markdown-body .highlighttable td {
|
|
border: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.markdown-body td:not(.linenos) .linenodiv {
|
|
padding: 0 !important;
|
|
}
|
|
|
|
.markdown-body .code {
|
|
width: 100%;
|
|
}
|
|
|
|
.markdown-body .linenos div pre,
|
|
.markdown-body .linenodiv pre,
|
|
.markdown-body .linenodiv {
|
|
border: 0;
|
|
-webkit-border-radius: 0;
|
|
-moz-border-radius: 0;
|
|
border-radius: 0;
|
|
-webkit-border-top-left-radius: 3px;
|
|
-webkit-border-bottom-left-radius: 3px;
|
|
-moz-border-radius-topleft: 3px;
|
|
-moz-border-radius-bottomleft: 3px;
|
|
border-top-left-radius: 3px;
|
|
border-bottom-left-radius: 3px;
|
|
}
|
|
|
|
.markdown-body .code div pre,
|
|
.markdown-body .code div {
|
|
border: 0;
|
|
-webkit-border-radius: 0;
|
|
-moz-border-radius: 0;
|
|
border-radius: 0;
|
|
-webkit-border-top-right-radius: 3px;
|
|
-webkit-border-bottom-right-radius: 3px;
|
|
-moz-border-radius-topright: 3px;
|
|
-moz-border-radius-bottomright: 3px;
|
|
border-top-right-radius: 3px;
|
|
border-bottom-right-radius: 3px;
|
|
}
|
|
|
|
.markdown-body * {
|
|
-moz-box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.markdown-body input {
|
|
font: 13px Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.markdown-body a {
|
|
color: var(--color-link-fg);
|
|
}
|
|
|
|
.markdown-body hr {
|
|
height: 0;
|
|
margin: 15px 0;
|
|
overflow: hidden;
|
|
background: transparent;
|
|
border: 0;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.markdown-body hr::before,
|
|
.markdown-body hr::after {
|
|
display: table;
|
|
content: " ";
|
|
}
|
|
|
|
.markdown-body hr::after {
|
|
clear: both;
|
|
}
|
|
|
|
.markdown-body h1,
|
|
.markdown-body h2,
|
|
.markdown-body h3,
|
|
.markdown-body h4,
|
|
.markdown-body h5,
|
|
.markdown-body h6 {
|
|
margin-top: 15px;
|
|
margin-bottom: 15px;
|
|
line-height: 1.1;
|
|
}
|
|
|
|
.markdown-body h1 {
|
|
font-size: 30px;
|
|
}
|
|
|
|
.markdown-body h2 {
|
|
font-size: 21px;
|
|
}
|
|
|
|
.markdown-body h3 {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.markdown-body h4 {
|
|
font-size: 14px;
|
|
}
|
|
|
|
.markdown-body h5 {
|
|
font-size: 12px;
|
|
}
|
|
|
|
.markdown-body h6 {
|
|
font-size: 11px;
|
|
}
|
|
|
|
.markdown-body blockquote {
|
|
margin: 0;
|
|
}
|
|
|
|
.markdown-body ul,
|
|
.markdown-body ol {
|
|
padding: 0;
|
|
margin-top: 0;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.markdown-body ol ol,
|
|
.markdown-body ul ol {
|
|
list-style-type: lower-roman;
|
|
}
|
|
|
|
.markdown-body ul ul ol,
|
|
.markdown-body ul ol ol,
|
|
.markdown-body ol ul ol,
|
|
.markdown-body ol ol ol {
|
|
list-style-type: lower-alpha;
|
|
}
|
|
|
|
.markdown-body dd {
|
|
margin-left: 0;
|
|
}
|
|
|
|
.markdown-body code,
|
|
.markdown-body pre,
|
|
.markdown-body samp {
|
|
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.markdown-body pre {
|
|
margin-top: 0;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.markdown-body kbd {
|
|
display: inline-block;
|
|
padding: 3px 5px;
|
|
color: var(--color-fg-default);
|
|
vertical-align: middle;
|
|
background-color: var(--color-bg-subtle);
|
|
border: solid 1px var(--color-neutral-muted);
|
|
border-bottom-color: var(--color-neutral-muted);
|
|
border-radius: 6px;
|
|
box-shadow: inset 0 -1px 0 var(--color-neutral-muted);
|
|
font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
|
}
|
|
|
|
.markdown-body>*:first-child {
|
|
margin-top: 0 !important;
|
|
}
|
|
|
|
.markdown-body>*:last-child {
|
|
margin-bottom: 0 !important;
|
|
}
|
|
|
|
.markdown-body .headerlink {
|
|
font: normal normal 16px fontawesome-mini;
|
|
vertical-align: middle;
|
|
margin-left: -20px;
|
|
float: left;
|
|
display: inline-block;
|
|
text-decoration: none;
|
|
opacity: 0;
|
|
color: var(--color-fg);
|
|
}
|
|
|
|
.markdown-body .headerlink:focus {
|
|
outline: none;
|
|
}
|
|
|
|
.markdown-body h1 .headerlink {
|
|
margin-top: 0.8rem;
|
|
}
|
|
|
|
.markdown-body h2 .headerlink,
|
|
.markdown-body h3 .headerlink {
|
|
margin-top: 0.6rem;
|
|
}
|
|
|
|
.markdown-body h4 .headerlink {
|
|
margin-top: 0.2rem;
|
|
}
|
|
|
|
.markdown-body h5 .headerlink,
|
|
.markdown-body h6 .headerlink {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.markdown-body .headerlink:hover,
|
|
.markdown-body h1:hover .headerlink,
|
|
.markdown-body h2:hover .headerlink,
|
|
.markdown-body h3:hover .headerlink,
|
|
.markdown-body h4:hover .headerlink,
|
|
.markdown-body h5:hover .headerlink,
|
|
.markdown-body h6:hover .headerlink {
|
|
opacity: 1;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.markdown-body h1 {
|
|
padding-bottom: 0.3em;
|
|
font-size: 2.25em;
|
|
line-height: 1.2;
|
|
border-bottom: 1px solid var(--color-border-muted);
|
|
}
|
|
|
|
.markdown-body h2 {
|
|
padding-bottom: 0.3em;
|
|
font-size: 1.75em;
|
|
line-height: 1.225;
|
|
border-bottom: 1px solid var(--color-border-muted);
|
|
}
|
|
|
|
.markdown-body h3 {
|
|
font-size: 1.5em;
|
|
line-height: 1.43;
|
|
}
|
|
|
|
.markdown-body h4 {
|
|
font-size: 1.25em;
|
|
}
|
|
|
|
.markdown-body h5 {
|
|
font-size: 1em;
|
|
}
|
|
|
|
.markdown-body h6 {
|
|
font-size: 1em;
|
|
color: var(--color-fg-muted);
|
|
}
|
|
|
|
.markdown-body p,
|
|
.markdown-body blockquote,
|
|
.markdown-body ul,
|
|
.markdown-body ol,
|
|
.markdown-body dl,
|
|
.markdown-body table,
|
|
.markdown-body pre,
|
|
.markdown-body .admonition,
|
|
.markdown-body details {
|
|
margin-top: 0;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.markdown-body hr {
|
|
height: 4px;
|
|
padding: 0;
|
|
margin: 16px 0;
|
|
background-color: var(--color-border);
|
|
border: 0 none;
|
|
}
|
|
|
|
.markdown-body ul,
|
|
.markdown-body ol {
|
|
padding-left: 2em;
|
|
}
|
|
|
|
.markdown-body ul ul,
|
|
.markdown-body ul ol,
|
|
.markdown-body ol ol,
|
|
.markdown-body ol ul {
|
|
margin-top: 0;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.markdown-body li>p {
|
|
margin-top: 16px;
|
|
}
|
|
|
|
.markdown-body dl {
|
|
padding: 0;
|
|
}
|
|
|
|
.markdown-body dl dt {
|
|
padding: 0;
|
|
margin-top: 16px;
|
|
font-size: 1em;
|
|
font-style: italic;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.markdown-body dl dd {
|
|
padding: 0 16px;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.markdown-body blockquote {
|
|
padding: 0 15px;
|
|
color: var(--color-fg-muted);
|
|
border-left: 4px solid var(--color-border);
|
|
}
|
|
|
|
.markdown-body blockquote>:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.markdown-body blockquote>:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.markdown-body table {
|
|
display: block;
|
|
width: 100%;
|
|
overflow: auto;
|
|
word-break: normal;
|
|
word-break: keep-all;
|
|
}
|
|
|
|
.markdown-body table th {
|
|
font-weight: bold;
|
|
}
|
|
|
|
.markdown-body table th,
|
|
.markdown-body table td {
|
|
padding: 6px 13px;
|
|
border: 1px solid var(--color-border-muted);
|
|
}
|
|
|
|
.markdown-body table tr {
|
|
border-top: 1px solid var(--color-border-muted);
|
|
}
|
|
|
|
.markdown-body table tr:nth-child(2n) {
|
|
background-color: var(--color-bg-subtle);
|
|
}
|
|
|
|
.markdown-body img {
|
|
max-width: 100%;
|
|
-moz-box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.markdown-body code,
|
|
.markdown-body samp {
|
|
padding: 0;
|
|
padding-top: 0.2em;
|
|
padding-bottom: 0.2em;
|
|
margin: 0;
|
|
font-size: 85%;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.markdown-body :not(pre) > code:not(.highlight):not(.codehilite), .markdown-body samp {
|
|
background-color: var(--color-bg-subtle);
|
|
}
|
|
|
|
.markdown-body code::before,
|
|
.markdown-body code::after {
|
|
letter-spacing: -0.2em;
|
|
content: "\00a0";
|
|
}
|
|
|
|
.markdown-body pre>code {
|
|
padding: 0;
|
|
margin: 0;
|
|
font-size: 100%;
|
|
word-break: normal;
|
|
white-space: pre;
|
|
background: transparent;
|
|
border: 0;
|
|
}
|
|
|
|
.markdown-body .codehilite,
|
|
.markdown-body .highlight {
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.markdown-body .codehilite pre,
|
|
.markdown-body .highlight pre,
|
|
.markdown-body pre {
|
|
padding: 16px;
|
|
overflow: auto;
|
|
font-size: 85%;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.markdown-body .codehilite,
|
|
.markdown-body .highlight,
|
|
.markdown-body pre {
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.markdown-body :not(.highlight) > pre {
|
|
background-color: var(--color-bg-subtle);
|
|
}
|
|
|
|
.markdown-body .codehilite pre,
|
|
.markdown-body .highlight pre {
|
|
margin-bottom: 0;
|
|
word-break: normal;
|
|
}
|
|
|
|
.markdown-body pre {
|
|
word-wrap: normal;
|
|
}
|
|
|
|
.markdown-body pre code {
|
|
display: inline;
|
|
max-width: initial;
|
|
padding: 0;
|
|
margin: 0;
|
|
overflow: initial;
|
|
line-height: inherit;
|
|
word-wrap: normal;
|
|
background-color: transparent;
|
|
border: 0;
|
|
}
|
|
|
|
.markdown-body pre code::before,
|
|
.markdown-body pre code::after {
|
|
content: normal;
|
|
}
|
|
|
|
/* Admonition */
|
|
.markdown-body .admonition,
|
|
.markdown-body details[class] {
|
|
position: relative;
|
|
border-left: 4px solid var(--color-fg);
|
|
padding: 10px 10px 10px 10px;
|
|
}
|
|
|
|
.markdown-body details[class] > summary {
|
|
list-style: none;
|
|
}
|
|
|
|
.markdown-body .admonition p {
|
|
padding: 0;
|
|
}
|
|
|
|
.markdown-body .admonition > .admonition-title,
|
|
.markdown-body details[class] > summary {
|
|
position: relative;
|
|
font-weight: bold;
|
|
margin: 0;
|
|
padding-left: 20px;
|
|
}
|
|
|
|
.markdown-body .admonition-title::before,
|
|
.markdown-body details[class]> summary::before {
|
|
font: normal normal 16px fontawesome-mini;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
user-select: none;
|
|
line-height: 1.5;
|
|
color: var(--color-fg);
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
}
|
|
|
|
.markdown-body details[class]> summary::after {
|
|
font: normal normal 16px fontawesome-mini;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
user-select: none;
|
|
line-height: 1.5;
|
|
color: var(--color-fg);
|
|
position: absolute;
|
|
right: 0;
|
|
top: 0;
|
|
}
|
|
|
|
.markdown-body details[class] > summary::after {
|
|
content: "\e803";
|
|
}
|
|
|
|
.markdown-body details[class][open] > summary::after {
|
|
content: "\e802";
|
|
}
|
|
|
|
.markdown-body details[class] > summary::after {
|
|
color: var(--color-fg);
|
|
}
|
|
|
|
.markdown-body details.question > summary::after,
|
|
.markdown-body details.important > summary::after,
|
|
.markdown-body details.attention > summary::after {
|
|
color: var(--color-important-emphasis);
|
|
}
|
|
|
|
.markdown-body details.warning > summary::after {
|
|
color: var(--color-warning-emphasis);
|
|
}
|
|
|
|
.markdown-body details.tip > summary::after,
|
|
.markdown-body details.hint > summary::after {
|
|
color: var(--color-tip-emphasis);
|
|
}
|
|
|
|
.markdown-body details.caution > summary::after,
|
|
.markdown-body details.danger > summary::after {
|
|
color: var(--color-caution-emphasis);
|
|
}
|
|
|
|
.markdown-body details.note > summary::after {
|
|
color: var(--color-note-emphasis);
|
|
}
|
|
|
|
.markdown-body .admonition-title::before,
|
|
.markdown-body details[class] summary::before {
|
|
content: "\e800\00a0";
|
|
color: var(--color-fg);
|
|
}
|
|
|
|
.markdown-body .important > :is(.admonition-title, summary)::before,
|
|
.markdown-body .attention > :is(.admonition-title, summary)::before {
|
|
content: "\f0f3\00a0";
|
|
color: var(--color-important-emphasis);
|
|
}
|
|
|
|
.markdown-body .question > :is(.admonition-title, summary)::before {
|
|
content: "\e804\00a0";
|
|
color: var(--color-important-emphasis);
|
|
}
|
|
|
|
.markdown-body .warning > :is(.admonition-title, summary)::before {
|
|
content: "\e801\00a0";
|
|
color: var(--color-warning-emphasis);
|
|
}
|
|
|
|
.markdown-body .tip > :is(.admonition-title, summary)::before,
|
|
.markdown-body .hint > :is(.admonition-title, summary)::before {
|
|
content: "\f0eb\00a0";
|
|
color: var(--color-tip-emphasis);
|
|
}
|
|
|
|
.markdown-body .caution > :is(.admonition-title, summary)::before,
|
|
.markdown-body .danger > :is(.admonition-title, summary)::before {
|
|
content: "\e807\00a0";
|
|
color: var(--color-caution-emphasis);
|
|
}
|
|
|
|
.markdown-body .note > :is(.admonition-title, summary)::before {
|
|
content: "\e800\00a0";
|
|
color: var(--color-note-emphasis);
|
|
}
|
|
|
|
.markdown-body .admonition > :is(.admonition-title, summary)::after,
|
|
.markdown-body details::after {
|
|
content: normal;
|
|
}
|
|
|
|
.markdown-body .question:is(.admonition, details[class]),
|
|
.markdown-body .important:is(.admonition, details[class]),
|
|
.markdown-body .attention:is(.admonition, details[class]) {
|
|
border-left-color: var(--color-important-emphasis);
|
|
}
|
|
|
|
.markdown-body .warning:is(.admonition, details[class]) {
|
|
border-left-color: var(--color-warning-emphasis);
|
|
}
|
|
|
|
.markdown-body .tip:is(.admonition, details[class]),
|
|
.markdown-body .hint:is(.admonition, details[class]) {
|
|
border-left-color: var(--color-tip-emphasis);
|
|
}
|
|
|
|
.markdown-body .caution:is(.admonition, details[class]),
|
|
.markdown-body .danger:is(.admonition, details[class]) {
|
|
border-left-color: var(--color-caution-emphasis);
|
|
}
|
|
|
|
.markdown-body .note:is(.admonition, details[class]) {
|
|
border-left-color: var(--color-note-emphasis);
|
|
}
|
|
|
|
.markdown-body .admonition>*:first-child,
|
|
.markdown-body details[class]>*:first-child {
|
|
margin-top: 0 !important;
|
|
}
|
|
|
|
.markdown-body .admonition>*:last-child,
|
|
.markdown-body details[class]>*:last-child {
|
|
margin-bottom: 0 !important;
|
|
}
|
|
|
|
/* progress bar*/
|
|
.markdown-body .progress {
|
|
display: block;
|
|
width: 300px;
|
|
margin: 10px 0;
|
|
height: 24px;
|
|
-webkit-border-radius: 3px;
|
|
-moz-border-radius: 3px;
|
|
border-radius: 3px;
|
|
background-color: var(--color-progress-bg);
|
|
position: relative;
|
|
box-shadow: inset -1px 1px 3px var(--color-progress-shadow2);
|
|
}
|
|
|
|
.markdown-body .progress-label {
|
|
position: absolute;
|
|
text-align: center;
|
|
font-weight: bold;
|
|
width: 100%; margin: 0;
|
|
line-height: 24px;
|
|
color: var(--color-fg);
|
|
text-shadow: 1px 1px 0 var(--color-progress-shadow), -1px -1px 0 var(--color-progress-shadow), -1px 1px 0 var(--color-progress-shadow),
|
|
1px -1px 0 var(--color-progress-shadow), 0 1px 0 var(--color-progress-shadow), 0 -1px 0 var(--color-progress-shadow),
|
|
1px 0 0 var(--color-progress-shadow), -1px 0 0 var(--color-progress-shadow), 1px 1px 2px #000;
|
|
-webkit-font-smoothing: antialiased !important;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.markdown-body .progress-bar {
|
|
height: 24px;
|
|
float: left;
|
|
-webkit-border-radius: 3px;
|
|
-moz-border-radius: 3px;
|
|
border-radius: 3px;
|
|
background-color: #96c6d7;
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5), inset 0 -1px 0 rgba(0, 0, 0, .1);
|
|
background-size: 30px 30px;
|
|
background-image: -webkit-linear-gradient(
|
|
135deg, rgba(255, 255, 255, .4) 27%,
|
|
transparent 27%,
|
|
transparent 52%, rgba(255, 255, 255, .4) 52%,
|
|
rgba(255, 255, 255, .4) 77%,
|
|
transparent 77%, transparent
|
|
);
|
|
background-image: -moz-linear-gradient(
|
|
135deg,
|
|
rgba(255, 255, 255, .4) 27%, transparent 27%,
|
|
transparent 52%, rgba(255, 255, 255, .4) 52%,
|
|
rgba(255, 255, 255, .4) 77%, transparent 77%,
|
|
transparent
|
|
);
|
|
background-image: -ms-linear-gradient(
|
|
135deg,
|
|
rgba(255, 255, 255, .4) 27%, transparent 27%,
|
|
transparent 52%, rgba(255, 255, 255, .4) 52%,
|
|
rgba(255, 255, 255, .4) 77%, transparent 77%,
|
|
transparent
|
|
);
|
|
background-image: -o-linear-gradient(
|
|
135deg,
|
|
rgba(255, 255, 255, .4) 27%, transparent 27%,
|
|
transparent 52%, rgba(255, 255, 255, .4) 52%,
|
|
rgba(255, 255, 255, .4) 77%, transparent 77%,
|
|
transparent
|
|
);
|
|
background-image: linear-gradient(
|
|
135deg,
|
|
rgba(255, 255, 255, .4) 27%, transparent 27%,
|
|
transparent 52%, rgba(255, 255, 255, .4) 52%,
|
|
rgba(255, 255, 255, .4) 77%, transparent 77%,
|
|
transparent
|
|
);
|
|
}
|
|
|
|
.markdown-body .progress-100plus .progress-bar {
|
|
background-color: #a6d796;
|
|
}
|
|
|
|
.markdown-body .progress-80plus .progress-bar {
|
|
background-color: #c6d796;
|
|
}
|
|
|
|
.markdown-body .progress-60plus .progress-bar {
|
|
background-color: #d7c896;
|
|
}
|
|
|
|
.markdown-body .progress-40plus .progress-bar {
|
|
background-color: #d7a796;
|
|
}
|
|
|
|
.markdown-body .progress-20plus .progress-bar {
|
|
background-color: #d796a6;
|
|
}
|
|
|
|
.markdown-body .progress-0plus .progress-bar {
|
|
background-color: #c25f77;
|
|
}
|
|
|
|
.markdown-body .candystripe-animate .progress-bar{
|
|
-webkit-animation: animate-stripes 3s linear infinite;
|
|
-moz-animation: animate-stripes 3s linear infinite;
|
|
animation: animate-stripes 3s linear infinite;
|
|
}
|
|
|
|
@-webkit-keyframes animate-stripes {
|
|
0% {
|
|
background-position: 0 0;
|
|
}
|
|
|
|
100% {
|
|
background-position: 60px 0;
|
|
}
|
|
}
|
|
|
|
@-moz-keyframes animate-stripes {
|
|
0% {
|
|
background-position: 0 0;
|
|
}
|
|
|
|
100% {
|
|
background-position: 60px 0;
|
|
}
|
|
}
|
|
|
|
@keyframes animate-stripes {
|
|
0% {
|
|
background-position: 0 0;
|
|
}
|
|
|
|
100% {
|
|
background-position: 60px 0;
|
|
}
|
|
}
|
|
|
|
.markdown-body .gloss .progress-bar {
|
|
box-shadow:
|
|
inset 0 4px 12px rgba(255, 255, 255, .7),
|
|
inset 0 -12px 0 rgba(0, 0, 0, .05);
|
|
}
|
|
|
|
/* MultiMarkdown Critic Blocks */
|
|
.markdown-body .critic_mark {
|
|
background: #ff0;
|
|
}
|
|
|
|
.markdown-body .critic_delete {
|
|
color: var(--color-caution-emphasis);
|
|
text-decoration: line-through;
|
|
}
|
|
|
|
.markdown-body .critic_insert {
|
|
color: var(--color-tip-emphasis) ;
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.markdown-body .critic_comment {
|
|
color: var(--color-fg-muted);
|
|
font-style: italic;
|
|
}
|
|
|
|
.markdown-body .headeranchor {
|
|
font: normal normal 16px fontawesome-mini;
|
|
line-height: 1;
|
|
display: inline-block;
|
|
text-decoration: none;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
user-select: none;
|
|
}
|
|
|
|
.markdown-body .task-list-item {
|
|
list-style-type: none;
|
|
}
|
|
|
|
.markdown-body .task-list-item+.task-list-item {
|
|
margin-top: 3px;
|
|
}
|
|
|
|
.markdown-body .task-list-item input {
|
|
margin: 0 4px 0.25em -20px;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.markdown-body diagram-div, .markdown-body div.uml-sequence-diagram, .markdown-body, div.uml-flowchart {
|
|
overflow: auto;
|
|
}
|
|
|
|
.markdown-body diagram-div, .markdown-body div.uml-sequence-diagram, div.uml-flowchart {
|
|
background-color: #ffffff;
|
|
}
|
|
|
|
/* Media */
|
|
@media only screen and (min-width: 480px) {
|
|
.markdown-body {
|
|
font-size:14px;
|
|
}
|
|
}
|
|
|
|
@media only screen and (min-width: 768px) {
|
|
.markdown-body {
|
|
font-size:16px;
|
|
}
|
|
}
|
|
|
|
@media print {
|
|
.markdown-body * {
|
|
background: transparent !important;
|
|
color: black !important;
|
|
filter:none !important;
|
|
-ms-filter: none !important;
|
|
}
|
|
|
|
.markdown-body {
|
|
font-size:12pt;
|
|
max-width:100%;
|
|
outline:none;
|
|
border: 0;
|
|
}
|
|
|
|
.markdown-body .headeranchor-link {
|
|
display: none;
|
|
}
|
|
|
|
.markdown-body a[href]::after {
|
|
content: " (" attr(href) ")";
|
|
}
|
|
|
|
.markdown-body abbr[title]::after {
|
|
content: " (" attr(title) ")";
|
|
}
|
|
|
|
.markdown-body .ir a::after,
|
|
.markdown-body a[href^="javascript:"]::after,
|
|
.markdown-body a[href^="#"]::after {
|
|
content: "";
|
|
}
|
|
|
|
.markdown-body pre {
|
|
white-space: pre;
|
|
white-space: pre-wrap;
|
|
word-wrap: break-word;
|
|
}
|
|
|
|
.markdown-body pre,
|
|
.markdown-body blockquote {
|
|
padding-right: 1em;
|
|
page-break-inside: avoid;
|
|
}
|
|
|
|
.markdown-body .progress,
|
|
.markdown-body .progress-bar {
|
|
-moz-box-shadow: none;
|
|
-webkit-box-shadow: none;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.markdown-body .progress {
|
|
border: 1px solid #ddd;
|
|
}
|
|
|
|
.markdown-body .progress-bar {
|
|
height: 22px;
|
|
border-right: 1px solid #ddd;
|
|
}
|
|
|
|
.markdown-body tr,
|
|
.markdown-body img {
|
|
page-break-inside: avoid;
|
|
}
|
|
|
|
.markdown-body img {
|
|
max-width: 100% !important;
|
|
}
|
|
|
|
.markdown-body p,
|
|
.markdown-body h2,
|
|
.markdown-body h3 {
|
|
orphans: 3;
|
|
widows: 3;
|
|
}
|
|
|
|
.markdown-body h2,
|
|
.markdown-body h3 {
|
|
page-break-after: avoid;
|
|
}
|
|
}
|
|
</style><style>/* GitHub Dark from Pygments with lighter background */
|
|
@media (prefers-color-scheme: dark) {
|
|
body,
|
|
[data-theme="dark"] {
|
|
.highlight {background-color:#161b22; color:#F8F8F2;}
|
|
.highlight .hll { background-color: #6e7681 }
|
|
.highlight .c { color: #8B949E; font-style: italic }
|
|
.highlight .err { color: #F85149 }
|
|
.highlight .esc { color: #E6EDF3 }
|
|
.highlight .g { color: #E6EDF3 }
|
|
.highlight .k { color: #FF7B72 }
|
|
.highlight .l { color: #A5D6FF }
|
|
.highlight .n { color: #E6EDF3 }
|
|
.highlight .o { color: #FF7B72; font-weight: bold }
|
|
.highlight .x { color: #E6EDF3 }
|
|
.highlight .p { color: #E6EDF3 }
|
|
.highlight .ch { color: #8B949E; font-style: italic }
|
|
.highlight .cm { color: #8B949E; font-style: italic }
|
|
.highlight .cp { color: #8B949E; font-weight: bold; font-style: italic }
|
|
.highlight .cpf { color: #8B949E; font-style: italic }
|
|
.highlight .c1 { color: #8B949E; font-style: italic }
|
|
.highlight .cs { color: #8B949E; font-weight: bold; font-style: italic }
|
|
.highlight .gd { color: #FFA198; background-color: #490202 }
|
|
.highlight .ge { color: #E6EDF3; font-style: italic }
|
|
.highlight .ges { color: #E6EDF3; font-weight: bold; font-style: italic }
|
|
.highlight .gr { color: #FFA198 }
|
|
.highlight .gh { color: #79C0FF; font-weight: bold }
|
|
.highlight .gi { color: #56D364; background-color: #0F5323 }
|
|
.highlight .go { color: #8B949E }
|
|
.highlight .gp { color: #8B949E }
|
|
.highlight .gs { color: #E6EDF3; font-weight: bold }
|
|
.highlight .gu { color: #79C0FF }
|
|
.highlight .gt { color: #FF7B72 }
|
|
.highlight .g-Underline { color: #E6EDF3; text-decoration: underline }
|
|
.highlight .kc { color: #79C0FF }
|
|
.highlight .kd { color: #FF7B72 }
|
|
.highlight .kn { color: #FF7B72 }
|
|
.highlight .kp { color: #79C0FF }
|
|
.highlight .kr { color: #FF7B72 }
|
|
.highlight .kt { color: #FF7B72 }
|
|
.highlight .ld { color: #79C0FF }
|
|
.highlight .m { color: #A5D6FF }
|
|
.highlight .s { color: #A5D6FF }
|
|
.highlight .na { color: #E6EDF3 }
|
|
.highlight .nb { color: #E6EDF3 }
|
|
.highlight .nc { color: #F0883E; font-weight: bold }
|
|
.highlight .no { color: #79C0FF; font-weight: bold }
|
|
.highlight .nd { color: #D2A8FF; font-weight: bold }
|
|
.highlight .ni { color: #FFA657 }
|
|
.highlight .ne { color: #F0883E; font-weight: bold }
|
|
.highlight .nf { color: #D2A8FF; font-weight: bold }
|
|
.highlight .nl { color: #79C0FF; font-weight: bold }
|
|
.highlight .nn { color: #FF7B72 }
|
|
.highlight .nx { color: #E6EDF3 }
|
|
.highlight .py { color: #79C0FF }
|
|
.highlight .nt { color: #7EE787 }
|
|
.highlight .nv { color: #79C0FF }
|
|
.highlight .ow { color: #FF7B72; font-weight: bold }
|
|
.highlight .pm { color: #E6EDF3 }
|
|
.highlight .w { color: #6E7681 }
|
|
.highlight .mb { color: #A5D6FF }
|
|
.highlight .mf { color: #A5D6FF }
|
|
.highlight .mh { color: #A5D6FF }
|
|
.highlight .mi { color: #A5D6FF }
|
|
.highlight .mo { color: #A5D6FF }
|
|
.highlight .sa { color: #79C0FF }
|
|
.highlight .sb { color: #A5D6FF }
|
|
.highlight .sc { color: #A5D6FF }
|
|
.highlight .dl { color: #79C0FF }
|
|
.highlight .sd { color: #A5D6FF }
|
|
.highlight .s2 { color: #A5D6FF }
|
|
.highlight .se { color: #79C0FF }
|
|
.highlight .sh { color: #79C0FF }
|
|
.highlight .si { color: #A5D6FF }
|
|
.highlight .sx { color: #A5D6FF }
|
|
.highlight .sr { color: #79C0FF }
|
|
.highlight .s1 { color: #A5D6FF }
|
|
.highlight .ss { color: #A5D6FF }
|
|
.highlight .bp { color: #E6EDF3 }
|
|
.highlight .fm { color: #D2A8FF; font-weight: bold }
|
|
.highlight .vc { color: #79C0FF }
|
|
.highlight .vg { color: #79C0FF }
|
|
.highlight .vi { color: #79C0FF }
|
|
.highlight .vm { color: #79C0FF }
|
|
.highlight .il { color: #A5D6FF }
|
|
}
|
|
}
|
|
|
|
/* Taken from `github.css` */
|
|
@media (prefers-color-scheme: light) {
|
|
body,
|
|
[data-theme="light"] {
|
|
.highlight {background-color:#f7f7f7;color:#333333;}
|
|
.highlight .hll {background-color:#ffffcc;}
|
|
.highlight .c{color:#999988;font-style:italic}
|
|
.highlight .err{color:#a61717;background-color:#e3d2d2}
|
|
.highlight .k{font-weight:bold}
|
|
.highlight .o{font-weight:bold}
|
|
.highlight .cm{color:#999988;font-style:italic}
|
|
.highlight .cp{color:#999999;font-weight:bold}
|
|
.highlight .c1{color:#999988;font-style:italic}
|
|
.highlight .cs{color:#999999;font-weight:bold;font-style:italic}
|
|
.highlight .gd{color:#000000;background-color:#ffdddd}
|
|
.highlight .ge{font-style:italic}
|
|
.highlight .gr{color:#aa0000}
|
|
.highlight .gh{color:#999999}
|
|
.highlight .gi{color:#000000;background-color:#ddffdd}
|
|
.highlight .go{color:#888888}
|
|
.highlight .gp{color:#555555}
|
|
.highlight .gs{font-weight:bold}
|
|
.highlight .gu{color:#800080;font-weight:bold}
|
|
.highlight .gt{color:#aa0000}
|
|
.highlight .kc{font-weight:bold}
|
|
.highlight .kd{font-weight:bold}
|
|
.highlight .kn{font-weight:bold}
|
|
.highlight .kp{font-weight:bold}
|
|
.highlight .kr{font-weight:bold}
|
|
.highlight .kt{color:#445588;font-weight:bold}
|
|
.highlight .m{color:#009999}
|
|
.highlight .s{color:#dd1144}
|
|
.highlight .n{color:#333333}
|
|
.highlight .na{color:teal}
|
|
.highlight .nb{color:#0086b3}
|
|
.highlight .nc{color:#445588;font-weight:bold}
|
|
.highlight .no{color:teal}
|
|
.highlight .ni{color:purple}
|
|
.highlight .ne{color:#990000;font-weight:bold}
|
|
.highlight .nf{color:#990000;font-weight:bold}
|
|
.highlight .nn{color:#555555}
|
|
.highlight .nt{color:navy}
|
|
.highlight .nv{color:teal}
|
|
.highlight .ow{font-weight:bold}
|
|
.highlight .w{color:#bbbbbb}
|
|
.highlight .mf{color:#009999}
|
|
.highlight .mh{color:#009999}
|
|
.highlight .mi{color:#009999}
|
|
.highlight .mo{color:#009999}
|
|
.highlight .sb{color:#dd1144}
|
|
.highlight .sc{color:#dd1144}
|
|
.highlight .sd{color:#dd1144}
|
|
.highlight .s2{color:#dd1144}
|
|
.highlight .se{color:#dd1144}
|
|
.highlight .sh{color:#dd1144}
|
|
.highlight .si{color:#dd1144}
|
|
.highlight .sx{color:#dd1144}
|
|
.highlight .sr{color:#009926}
|
|
.highlight .s1{color:#dd1144}
|
|
.highlight .ss{color:#990073}
|
|
.highlight .bp{color:#999999}
|
|
.highlight .vc{color:teal}
|
|
.highlight .vg{color:teal}
|
|
.highlight .vi{color:teal}
|
|
.highlight .il{color:#009999}
|
|
.highlight .gc{color:#999;background-color:#EAF2F5}
|
|
}
|
|
}
|
|
</style><title>README</title></head><body data-theme="auto"><article class="markdown-body"><h1 id="jeu-de-role-niveau">Jeu de Rôle - Niveau<a class="headerlink" href="#jeu-de-role-niveau" title="Permanent link"></a></h1>
|
|
<p>Ce projet est une implémentation d’un système de niveau pour un jeu de rôle. Il permet de générer des pièces avec des mobs (monstres) et de naviguer entre ces pièces.</p>
|
|
<h2 id="structure-du-projet">Structure du Projet<a class="headerlink" href="#structure-du-projet" title="Permanent link"></a></h2>
|
|
<ul>
|
|
<li><strong>Level</strong>: La classe principale qui représente un niveau dans le jeu.</li>
|
|
<li><strong>BaseMob</strong>: La classe représentant les monstres (mobs).</li>
|
|
<li><strong>generate_random_rooms</strong>: Une fonction pour générer des pièces avec des mobs.</li>
|
|
</ul>
|
|
<h2 id="fonctionnalites">Fonctionnalités<a class="headerlink" href="#fonctionnalites" title="Permanent link"></a></h2>
|
|
<ol>
|
|
<li>
|
|
<p><strong>Génération de Niveau</strong> :
|
|
- Charge un nombre aléatoire de mobs en fonction de la difficulté.
|
|
- Génère des pièces et y répartit les mobs disponibles.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Navigation entre les Pièces</strong> :
|
|
- Permet à l’utilisateur de naviguer entre les pièces ou de quitter le jeu.</p>
|
|
</li>
|
|
</ol>
|
|
<h2 id="exemple-dutilisation">Exemple d’utilisation<a class="headerlink" href="#exemple-dutilisation" title="Permanent link"></a></h2>
|
|
<div class="highlight"><pre><span class="c1">#app.py</span>
|
|
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
|
<span class="n">loaded_character</span> <span class="o">=</span> <span class="n">CharacterBuilder</span><span class="o">.</span><span class="n">load_character</span><span class="p">(</span><span class="s2">"Jamin"</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">loaded_character</span><span class="p">:</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="n">loaded_character</span><span class="p">)</span>
|
|
|
|
<span class="n">level</span> <span class="o">=</span> <span class="n">Level</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">CharacterBuilder</span><span class="o">.</span><span class="n">load_character</span><span class="p">(</span><span class="s2">"Jamin"</span><span class="p">))</span>
|
|
<span class="n">player</span> <span class="o">=</span> <span class="n">level</span><span class="o">.</span><span class="n">player</span>
|
|
<span class="n">rooms</span> <span class="o">=</span> <span class="n">level</span><span class="o">.</span><span class="n">rooms</span>
|
|
<span class="n">number_room</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">rooms</span><span class="p">)</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Nombre de pièce dans le donjon : {number_room}"</span><span class="p">)</span>
|
|
|
|
<span class="k">while</span> <span class="n">level</span><span class="o">.</span><span class="n">exit_level</span><span class="p">:</span>
|
|
<span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s1">'cls'</span> <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s1">'nt'</span> <span class="k">else</span> <span class="s1">'clear'</span><span class="p">)</span>
|
|
<span class="n">match</span> <span class="n">action_menu</span><span class="p">():</span>
|
|
<span class="n">case</span> <span class="mi">1</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">level</span><span class="o">.</span><span class="n">current_room_index</span> <span class="o">>=</span> <span class="n">number_room</span><span class="p">:</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="s2">"fin du donjon !"</span><span class="p">)</span>
|
|
<span class="k">break</span>
|
|
<span class="n">room</span> <span class="o">=</span> <span class="n">rooms</span><span class="p">[</span><span class="n">level</span><span class="o">.</span><span class="n">current_room_index</span><span class="p">]</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Pièce actuelle : {level.current_room_index}"</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">room</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
|
<span class="k">for</span> <span class="n">mob</span> <span class="ow">in</span> <span class="n">room</span><span class="p">:</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Un {mob.name} est devant toi !"</span><span class="p">)</span>
|
|
<span class="n">match</span> <span class="n">action_menu</span><span class="p">():</span>
|
|
<span class="n">case</span> <span class="mi">2</span><span class="p">:</span>
|
|
<span class="n">level</span><span class="o">.</span><span class="n">combat</span><span class="p">(</span><span class="n">mob</span><span class="p">,</span> <span class="n">player</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">player</span><span class="o">.</span><span class="n">current_pv</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="s2">"!!!!!!!!! Joueur mort !!!!!!!!!!"</span><span class="p">)</span>
|
|
<span class="k">break</span>
|
|
<span class="k">if</span> <span class="n">mob</span><span class="o">.</span><span class="n">current_pv</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Le {mob.name} est mort !!"</span><span class="p">)</span>
|
|
<span class="n">case</span> <span class="mi">3</span><span class="p">:</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="s2">"Tu fuis la pièce"</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> ------ Pièce vide ------ </span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
<span class="n">player</span><span class="o">.</span><span class="n">current_pv</span> <span class="o">=</span> <span class="n">player</span><span class="o">.</span><span class="n">max_pv</span>
|
|
<span class="n">level</span><span class="o">.</span><span class="n">current_room_index</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
<span class="n">case</span> <span class="mi">4</span><span class="p">:</span>
|
|
<span class="n">level</span><span class="o">.</span><span class="n">exit_level</span> <span class="o">=</span> <span class="bp">False</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Au revoir {player.name} !"</span><span class="p">)</span>
|
|
<span class="n">case</span> <span class="n">_</span><span class="p">:</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="s2">"Mauvais choix"</span><span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<h2 id="installation">Installation<a class="headerlink" href="#installation" title="Permanent link"></a></h2>
|
|
<p>Pour exécuter ce projet, vous aurez besoin de Python 3.7 ou supérieur. </p>
|
|
<div class="highlight"><pre>python3 app.py
|
|
</pre></div></article></body></html> |