25가지 좋은 PHP 게임 프로그래밍 스크립트 코드 공유 (1)_PHP 튜토리얼
간단한 주사위 롤러
많은 게임과 게임 시스템에는 주사위가 필요합니다. 쉬운 부분부터 시작해 보겠습니다. 6면체 주사위를 굴리는 것입니다. 기본적으로 6면체 주사위를 굴리는 것은 단순히 1에서 6 사이의 임의의 숫자를 선택하는 것입니다. PHP에서는 매우 간단합니다: echo rand(1,6);.
많은 경우 이는 기본적으로 간단합니다. 그러나 우연한 게임을 다룰 때는 더 나은 구현이 필요합니다. PHP는 더 나은 난수 생성기인 mt_rand()를 제공합니다. 둘 사이의 차이점을 너무 깊이 파고들지 않고도 mt_rand는 더 빠르고 더 나은 난수 생성기로 생각할 수 있습니다: echo mt_rand(1,6);. 이 난수 생성기를 함수에 넣으면 더욱 좋습니다.
목록 1. mt_rand() 난수 생성기 함수 사용
<ol class="dp-c"> <li class="alt"><span><span class="keyword">function</span><span> roll () { </span></span></li> <li> <span class="keyword">return</span><span> mt_rand(1,6); </span> </li> <li class="alt"><span>} </span></li> <li> <span class="func">echo</span><span> roll(); </span> </li> </ol>
그런 다음 굴릴 주사위 유형을 함수에 매개 변수로 전달할 수 있습니다.
목록 2. 주사위 유형을 매개변수로 전달
<ol class="dp-c"> <li class="alt"><span><span class="keyword">function</span><span> roll (</span><span class="vars">$sides</span><span>) { </span></span></li> <li> <span class="keyword">return</span><span> mt_rand(1,</span><span class="vars">$sides</span><span>); </span> </li> <li class="alt"><span>} </span></li> <li> <span class="func">echo</span><span> roll(6); </span><span class="comment">// roll a six-sided die </span><span> </span> </li> <li class="alt"> <span class="func">echo</span><span> roll(10); </span><span class="comment">// roll a ten-sided die </span><span> </span> </li> <li> <span class="func">echo</span><span> roll(20); </span><span class="comment">// roll a twenty-sided die</span><span> </span> </li> </ol>
여기에서 필요에 따라 한 번에 여러 개의 주사위를 굴릴 수 있으며, 일련의 결과를 반환할 수도 있습니다. 한 번에 여러 개의 주사위 다양한 유형의 주사위. 그러나 대부분의 작업은 이 간단한 스크립트를 사용하여 수행할 수 있습니다.
임의의 이름 생성기
게임을 실행하거나 스토리를 작성하거나 한 번에 많은 수의 캐릭터를 생성하는 경우 때로는 유지하기가 부담스러울 수 있습니다. 끊임없이 새로운 이름이 쏟아져 나옵니다. 이 문제를 해결하는 데 사용할 수 있는 간단한 임의 이름 생성기를 살펴보겠습니다. 먼저 이름과 성에 대한 두 개의 간단한 배열을 만들어 보겠습니다.
목록 3. 이름과 성으로 구성된 두 개의 간단한 배열
<ol class="dp-c"> <li class="alt"><span><span class="vars">$male</span><span> = </span><span class="keyword">array</span><span>( </span></span></li> <li> <span class="string">"William"</span><span>, </span> </li> <li class="alt"> <span class="string">"Henry"</span><span>, </span> </li> <li> <span class="string">"Filbert"</span><span>, </span> </li> <li class="alt"> <span class="string">"John"</span><span>, </span> </li> <li> <span class="string">"Pat"</span><span>, </span> </li> <li class="alt"><span>); </span></li> <li> <span class="vars">$last</span><span> = </span><span class="keyword">array</span><span>( </span> </li> <li class="alt"> <span class="string">"Smith"</span><span>, </span> </li> <li> <span class="string">"Jones"</span><span>, </span> </li> <li class="alt"> <span class="string">"Winkler"</span><span>, </span> </li> <li> <span class="string">"Cooper"</span><span>, </span> </li> <li class="alt"> <span class="string">"Cline"</span><span>, </span> </li> <li><span>); </span></li> </ol>
그런 다음 각 배열에서 임의의 요소를 선택할 수 있습니다: echo $male[array_rand($male)] '. ' . $last[array_rand($last)];. 여러 이름을 한 번에 추출하려면 배열을 혼합하고 필요에 따라 추출하면 됩니다.
목록 4. 혼합 이름 배열
<ol class="dp-c"> <li class="alt"><span><span>shuffle(</span><span class="vars">$male</span><span>); </span></span></li> <li> <span>shuffle(</span><span class="vars">$last</span><span>); </span> </li> <li class="alt"> <span class="keyword">for</span><span> (</span><span class="vars">$i</span><span> = 0; </span><span class="vars">$i</span><span> <span class="vars">$i</span><span>++) { </span></span> </li> <li> <span class="func">echo</span><span> </span><span class="vars">$male</span><span>[</span><span class="vars">$i</span><span>] . </span><span class="string">' '</span><span> . </span><span class="vars">$last</span><span>[</span><span class="vars">$i</span><span>]; </span> </li> <li class="alt"><span>} </span></li> </ol>
이러한 기본 개념을 바탕으로 이름과 성을 포함하는 텍스트 파일을 만들 수 있습니다. 텍스트 파일의 각 줄에 이름을 저장하면 줄 바꿈으로 파일 내용을 쉽게 구분하여 소스 코드 배열을 구축할 수 있습니다.
목록 5. 이름이 포함된 텍스트 파일 만들기
<ol class="dp-c"> <li class="alt"><span><span class="vars">$male</span><span> = </span><span class="func">explode</span><span>(</span><span class="string">'n'</span><span>, </span><span class="func">file_get_contents</span><span>(</span><span class="string">'names.female.txt'</span><span>)); </span></span></li> <li> <span class="vars">$last</span><span> = </span><span class="func">explode</span><span>(</span><span class="string">'n'</span><span>, </span><span class="func">file_get_contents</span><span>(</span><span class="string">'names.last.txt'</span><span>)); </span> </li> </ol>
좋은 이름 파일을 만들거나 찾으면(일부는 코드 아카이브에 포함되어 있음) 이름에 대해 다시는 걱정할 필요가 없습니다. .
시나리오 생성기
이름 생성기를 구축할 때 사용한 것과 동일한 기본 원리를 사용하여 시나리오 생성기를 구축할 수 있습니다. 이 생성기는 롤플레잉 게임뿐만 아니라 의사 무작위 환경 모음(롤플레잉, 즉흥 연주, 글쓰기 등에 사용할 수 있음)을 사용해야 하는 상황에서도 유용합니다. 내가 가장 좋아하는 게임 중 하나인 Paranoia에는 GM 팩에 "미션 블렌더"가 포함되어 있습니다. 미션 믹서를 사용하면 주사위를 빠르게 굴리면서 전체 미션을 결합할 수 있습니다. 우리 자신의 장면 생성기를 함께 구성해 봅시다.
다음 시나리오를 생각해 보세요. 잠에서 깨어나 정글에서 길을 잃은 자신을 발견합니다. 당신은 뉴욕에 가야 한다는 것을 알지만, 그 이유는 모릅니다. 근처에서 개들이 짖는 소리와 적 수색자들의 뚜렷한 소리가 들립니다. 당신은 차갑고, 떨리고, 무장도 하지 않았습니다. 장면의 각 문장은 장면의 특정 측면을 소개합니다.
“당신은 잠에서 깨어나 정글에서 길을 잃은 자신을 발견합니다” — 이 문장이 배경을 설정합니다.
“You Know you have to get to New York” — 이 문장은 목표를 설명합니다.
“개들이 짖는 소리가 들립니다.” — 이 문장은 적을 소개합니다.
“당신은 차갑고, 떨리고, 무장하지 않았습니다” — 이 문장은 복잡성을 더할 것입니다.
이름과 성에 대한 텍스트 파일을 만든 것처럼 먼저 설정, 목표, 적 및 복잡성에 대해 별도의 텍스트 파일을 만듭니다. 샘플 파일은 코드 아카이브에 포함되어 있습니다. 이러한 파일이 있으면 장면을 생성하는 코드는 기본적으로 이름을 생성하는 코드와 동일합니다.
목록 6. 장면 생성
<ol class="dp-c"> <li class="alt"><span><span class="vars">$settings</span><span> = </span><span class="func">explode</span><span>(</span><span class="string">"n"</span><span>, </span><span class="func">file_get_contents</span><span>(</span><span class="string">'scenario.settings.txt'</span><span>)); </span></span></li> <li> <span class="vars">$objectives</span><span> = </span><span class="func">explode</span><span>(</span><span class="string">"n"</span><span>, </span><span class="func">file_get_contents</span><span>(</span><span class="string">'scenario.objectives.txt'</span><span>)); </span> </li> <li class="alt"> <span class="vars">$antagonists</span><span> = </span><span class="func">explode</span><span>(</span><span class="string">"n"</span><span>, </span><span class="func">file_get_contents</span><span>(</span><span class="string">'scenario.antagonists.txt'</span><span>)); </span> </li> <li> <span class="vars">$complicati</span><span>**** = </span><span class="func">explode</span><span>(</span><span class="string">"n"</span><span>, </span><span class="func">file_get_contents</span><span>(</span><span class="string">'scenario.complicati****.txt'</span><span>)); </span> </li> <li class="alt"> <span>shuffle(</span><span class="vars">$settings</span><span>); </span> </li> <li> <span>shuffle(</span><span class="vars">$objectives</span><span>); </span> </li> <li class="alt"> <span>shuffle(</span><span class="vars">$antagonists</span><span>); </span> </li> <li> <span>shuffle(</span><span class="vars">$complicati</span><span>****); </span> </li> <li class="alt"> <span class="func">echo</span><span> </span><span class="vars">$settings</span><span>[0] . </span><span class="string">' '</span><span> . </span><span class="vars">$objectives</span><span>[0] . </span><span class="string">' '</span><span> . </span><span class="vars">$antagonists</span><span>[0] . </span><span class="string">' '</span><span> </span> </li> <li> <span>. </span><span class="vars">$complicati</span><span>****[0] . </span><span class="string">"<br>n"</span><span>; </span> </li> </ol>
새 텍스트 파일을 추가하여 장면에 요소를 추가할 수 있으며 여러 수준의 복잡성을 추가할 수도 있습니다. 기본 텍스트 파일에 더 많은 콘텐츠를 추가할수록 시간이 지남에 따라 장면이 더 많이 변경됩니다.
덱 빌더 및 셔플러
카드를 플레이하고 카드 관련 스크립트를 처리하려면 덱 빌더와 통합된 셔플 도구를 사용해야 합니다. 먼저 표준 카드 덱을 만들어 보겠습니다. 두 개의 어레이를 구성해야 합니다. 하나는 동일한 모양의 카드 그룹을 보관하기 위한 것이고, 다른 하나는 카드 앞면을 보관하기 위한 것입니다. 이는 나중에 새로운 덱이나 카드 유형을 추가해야 할 경우 뛰어난 유연성을 제공합니다.
목록 7. 표준 카드 덱 빌드
<ol class="dp-c"> <li class="alt"><span><span class="vars">$suits</span><span> = </span><span class="keyword">array</span><span> ( </span></span></li> <li> <span class="string">"Spades"</span><span>, </span><span class="string">"Hearts"</span><span>, </span><span class="string">"Clubs"</span><span>, </span><span class="string">"Diamonds"</span><span> </span> </li> <li class="alt"><span>); </span></li> <li> <span class="vars">$faces</span><span> = </span><span class="keyword">array</span><span> ( </span> </li> <li class="alt"> <span class="string">"Two"</span><span>, </span><span class="string">"Three"</span><span>, </span><span class="string">"Four"</span><span>, </span><span class="string">"Five"</span><span>, </span><span class="string">"Six"</span><span>, </span><span class="string">"Seven"</span><span>, </span><span class="string">"Eight"</span><span>, </span> </li> <li> <span class="string">"Nine"</span><span>, </span><span class="string">"Ten"</span><span>, </span><span class="string">"Jack"</span><span>, </span><span class="string">"Queen"</span><span>, </span><span class="string">"King"</span><span>, </span><span class="string">"Ace"</span><span> </span> </li> <li class="alt"><span>); </span></li> </ol>
그런 다음 모든 카드 값을 보유하는 데크 배열을 빌드합니다. 이는 한 쌍의 foreach 루프를 사용하여 간단하게 수행할 수 있습니다.
목록 8. 카드 배열 구성
<ol class="dp-c"> <li class="alt"><span><span class="vars">$deck</span><span> = </span><span class="keyword">array</span><span>(); </span></span></li> <li> <span class="keyword">foreach</span><span> (</span><span class="vars">$suits</span><span> </span><span class="keyword">as</span><span> </span><span class="vars">$suit</span><span>) { </span> </li> <li class="alt"> <span class="keyword">foreach</span><span> (</span><span class="vars">$faces</span><span> </span><span class="keyword">as</span><span> </span><span class="vars">$face</span><span>) { </span> </li> <li> <span class="vars">$deck</span><span>[] = </span><span class="keyword">array</span><span> (</span><span class="string">"face"</span><span>=></span><span class="vars">$face</span><span>, </span><span class="string">"suit"</span><span>=></span><span class="vars">$suit</span><span>); </span> </li> <li class="alt"><span>} </span></li> <li><span>} </span></li> </ol>
카드 배열을 구성한 후 쉽게 덱을 섞고 카드를 무작위로 뽑을 수 있습니다.
목록 9. 덱을 섞고 무작위로 카드 뽑기
<ol class="dp-c"> <li class="alt"><span><span>shuffle(</span><span class="vars">$deck</span><span>); </span></span></li> <li> <span class="vars">$card</span><span> = </span><span class="func">array_shift</span><span>(</span><span class="vars">$deck</span><span>); </span> </li> <li class="alt"> <span class="func">echo</span><span> </span><span class="vars">$card</span><span>[</span><span class="string">'face'</span><span>] . </span><span class="string">' of '</span><span> . </span><span class="vars">$card</span><span>[</span><span class="string">'suit'</span><span>]; </span> </li> </ol>
이제 여러 덱의 카드를 뽑거나 멀티 덱 슈를 만드는 단축키가 생겼습니다.
확률 계산기: 딜링
덱을 구성할 때 각 카드의 앞면과 모양이 개별적으로 추적되므로 프로그래밍 방식으로 덱을 활용하여 얻을 확률을 계산할 수 있습니다. 특정 카드. 먼저 각 손에서 5장의 카드를 뽑습니다.
清单 10. 每只手抽出五张牌
<ol class="dp-c"> <li class="alt"><span><span class="vars">$hands</span><span> = </span><span class="keyword">array</span><span>(1 => </span><span class="keyword">array</span><span>(), 2=></span><span class="keyword">array</span><span>()); </span></span></li> <li> <span class="keyword">for</span><span> (</span><span class="vars">$i</span><span> = 0; </span><span class="vars">$i</span><span> <span class="vars">$i</span><span>++) { </span></span> </li> <li class="alt"> <span class="vars">$hands</span><span>[1][] = implode(</span><span class="string">" of "</span><span>, </span><span class="func">array_shift</span><span>(</span><span class="vars">$deck</span><span>)); </span> </li> <li> <span class="vars">$hands</span><span>[2][] = implode(</span><span class="string">" of "</span><span>, </span><span class="func">array_shift</span><span>(</span><span class="vars">$deck</span><span>)); </span> </li> <li class="alt"><span>} </span></li> </ol>
然后可以查看这副牌,看看剩余多少张牌以及抽到特定牌的机率是多少。查看剩余的牌数十分简单。只需要计算 $deck 数组中包含的元素数。要获得抽到特定牌的机率,我们需要一个函数来遍历整副牌并估算其余牌以查看是否匹配。
清单 11. 计算抽到特定牌的几率
<ol class="dp-c"> <li class="alt"><span><span class="keyword">function</span><span> calculate_odds(</span><span class="vars">$draw</span><span>, </span><span class="vars">$deck</span><span>) { </span></span></li> <li> <span class="vars">$remaining</span><span> = </span><span class="func">count</span><span>(</span><span class="vars">$deck</span><span>); </span> </li> <li class="alt"> <span class="vars">$odds</span><span> = 0; </span> </li> <li> <span class="keyword">foreach</span><span> (</span><span class="vars">$deck</span><span> </span><span class="keyword">as</span><span> </span><span class="vars">$card</span><span>) { </span> </li> <li class="alt"> <span class="keyword">if</span><span> ( (</span><span class="vars">$draw</span><span>[</span><span class="string">'face'</span><span>] == </span><span class="vars">$card</span><span>[</span><span class="string">'face'</span><span>] && </span><span class="vars">$draw</span><span>[</span><span class="string">'suit'</span><span>] == </span> </li> <li> <span class="vars">$card</span><span>[</span><span class="string">'suit'</span><span>] ) || </span> </li> <li class="alt"> <span>(</span><span class="vars">$draw</span><span>[</span><span class="string">'face'</span><span>] == </span><span class="string">''</span><span> && </span><span class="vars">$draw</span><span>[</span><span class="string">'suit'</span><span>] == </span><span class="vars">$card</span><span>[</span><span class="string">'suit'</span><span>] ) || </span> </li> <li> <span>(</span><span class="vars">$draw</span><span>[</span><span class="string">'face'</span><span>] == </span><span class="vars">$card</span><span>[</span><span class="string">'face'</span><span>] && </span><span class="vars">$draw</span><span>[</span><span class="string">'suit'</span><span>] == </span><span class="string">''</span><span> ) ) { </span> </li> <li class="alt"> <span class="vars">$odds</span><span>++; </span> </li> <li><span>} </span></li> <li class="alt"><span>} </span></li> <li> <span class="keyword">return</span><span> </span><span class="vars">$odds</span><span> . </span><span class="string">' in '</span><span> </span><span class="vars">$remaining</span><span>; </span> </li> <li class="alt"><span>} </span></li> </ol>
现在可以选出尝试抽出的牌。为了简单起见,传入看上去类似某张牌的数组。我们可以查找特定的一张牌。
清单 12. 查找指定的一张牌
<ol class="dp-c"> <li class="alt"><span><span class="vars">$draw</span><span> = </span><span class="keyword">array</span><span>(</span><span class="string">'face'</span><span> => </span><span class="string">'Ace'</span><span>, </span><span class="string">'suit'</span><span> => </span><span class="string">'Spades'</span><span>); </span></span></li> <li> <span class="func">echo</span><span> implode(</span><span class="string">" of "</span><span>, </span><span class="vars">$draw</span><span>) . </span><span class="string">' : '</span><span> . calculate_odds(</span><span class="vars">$draw</span><span>, </span><span class="vars">$deck</span><span>); </span> </li> </ol>
或者可以查找指定牌面或花色的牌。
清单 13. 查找指定牌面或花色的牌
<ol class="dp-c"> <li class="alt"><span><span class="vars">$draw</span><span> = </span><span class="keyword">array</span><span>(</span><span class="string">'face'</span><span> => </span><span class="string">''</span><span>, </span><span class="string">'suit'</span><span> => </span><span class="string">'Spades'</span><span>); </span></span></li> <li> <span class="vars">$draw</span><span> = </span><span class="keyword">array</span><span>(</span><span class="string">'face'</span><span> => </span><span class="string">'Ace'</span><span>, </span><span class="string">'suit'</span><span> => </span><span class="string">''</span><span>); </span> </li> </ol>
1

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

숙련된 PHP 개발자라면 이미 그런 일을 해왔다는 느낌을 받을 것입니다. 귀하는 상당한 수의 애플리케이션을 개발하고, 수백만 줄의 코드를 디버깅하고, 여러 스크립트를 수정하여 작업을 수행했습니다.

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

Python은 배우기 쉽고 강력한 기능을 통해 초보자에게 이상적인 프로그래밍 입문 언어입니다. 기본 사항은 다음과 같습니다. 변수: 데이터(숫자, 문자열, 목록 등)를 저장하는 데 사용됩니다. 데이터 유형: 변수의 데이터 유형(정수, 부동 소수점 등)을 정의합니다. 연산자: 수학 연산 및 비교에 사용됩니다. 제어 흐름: 코드 실행(조건문, 루프) 흐름을 제어합니다.

Python은 초보자에게 문제 해결 능력을 부여합니다. 사용자 친화적인 구문, 광범위한 라이브러리 및 변수, 조건문 및 루프 사용 효율적인 코드 개발과 같은 기능을 제공합니다. 데이터 관리에서 프로그램 흐름 제어 및 반복 작업 수행에 이르기까지 Python은 제공합니다.
