0

私はいつもFIFAの(ゲーム)ロジックについて疑問に思っていました.

彼らは、ゲームのルールやその他の規則的な事柄について、多くの if ステートメントに依存していますか?

お気に入り:

if( ball.x > areaLeft.x || ball.y > areaTop.y ) {
     out();
}

if( playersCollision > 100 ) {
    giveFoul(firstPlayer, secondPlayer);
}

など..すべてが本当に「もし」そのようなものですか、それともこれに代わるものはありますか?

4

2 に答える 2

1

方程式には常にifがあります。問題は、提案されたアルゴリズムよりも単純ではないということです。これは主に、コンピューターではなく 1 人または複数の人間によって決定されるためです... [esp. ビデオに基づく仲裁を実施したくないため、FIFA に連絡]

とにかくそれはもっと似ているでしょう

 // x in [0,99], the higher x is, the more probable the event is
 function fate(x) {
    return (random () % 100) <= x)
 }

 // if ball out, 75% chance there is an out event
 if( (ball.x > areaLeft.x || ball.y > areaTop.y) && fate(75) ) {
   out();
 }

 // if there is a collision, 50% chance the referee gives a foul 
 if( playersCollision > 100 && fate(50)) {
   giveFoul(firstPlayer,secondPlayer);
 }

etc....
于 2013-01-24T11:01:11.400 に答える
1

それは間違いなく「if」ではありません。それは混乱でしょう。 エキスパート システムは、複雑なルールの対象となる知識ベースを維持したい、このようなケースに対処するために作られました。アイデアは、ロジックベースの言語を使用して一連のルールを作成することです。例えば

giveFoul(Context) :- 
    closePlayers(Context, A, B),
    attackingPlayer(context, A, B),
    defendingSkills(A, ASkill),
    ASkill < 80
    ...

closePlayers(Context, A, B) :-
    position(Context, A, CoordXA, CoordYA),
    position(Context, B, CoordXB, CoordYB),
    ...

このアプローチを使用すると、これらのルールを再定義することでシステムの動作を変更し、残りは推論システムに任せることができます。

于 2013-01-24T10:52:14.443 に答える