WOO logo

على هذه الصفحة

برمجة كود فيديو بوكر

مقدمة

برمجة كود فيديو بوكر

إليكم الفيديو الخاص بي حول برمجة لعبة فيديو البوكر.

فيما يلي الكود الذي تم تطويره في الفيديو.

#تضمين <iostream>
#تضمين <time.h>

بطاقة هيكلية
{
int r؛
int s;
};

إعداد باطل(باطل)؛
صفقة باطلة(باطلة)؛
رسم باطل (int c1، int c2، int c3، int c4، int c5)؛
int score(بطاقة الصفقة[]);

int score_array[2598960];
مجموعة البطاقات[52]؛
int draw_combinations_array[] = { 1533939, 178365, 178365, 16215, 178365, 16215, 16215, 1081, 178365, 16215, 16215, 1081, 16215, 1081, 1081, 47, 178365, 16215, 16215, 1081, 16215, 1081, 1081, 47, 16215, 1081, 1081, 47, 1081, 47, 1};
int weighting_array[] = { 5، 43، 43، 473، 43، 473، 473، 7095، 43، 473، 473، 7095، 473، 7095، 7095، 163185، 43، 473، 473، 7095، 473، 7095، 7095، 163185، 473، 7095، 7095، 163185، 473، 7095، 7095، 163185، 7095، 163185، 163185، 7669695 }؛
__int64 tot_combinations[52]؛

ثابت char* اسم اليد_المصفوفة[] = {
"خسارة"، "جاك أو أفضل"، "زوجان"، "ثلاثة من نفس النوع"، "ستريت"، "فلاش"، "فول هاوس"، "أربعة من نفس النوع"، "ستريت فلش"، "رويال فلش"، "المجموع"
int win_array[] = { 0,1,2,3,4,6,9,25,50,800 };


int main()
{
time_t وقت البداية ووقت النهاية؛
وقت البدء = الوقت (NULL)؛
يثبت()؛
اتفاق()؛
وقت النهاية = الوقت (NULL)؛
printf("إجمالي الثواني =\t%i\n", (int)endtime - (int)begtime);
}

إعداد باطل (باطل)
{
int i، c1، c2، c3، c4، c5، count، score_deal_array[52]، sc؛
توزيع البطاقات[5]؛
لـ (i = 0؛ i <= 51؛ i++)
{
مجموعة الأوراق[i].r = (int)(i / 4)؛
سطح السفينة[i].س = i % 4؛
score_deal_array[i] = 0؛
tot_combinations[i] = 0؛
}
العد = 0؛
لـ (c1 = 0؛ c1 <= 47؛ c1++)
{
الصفقة[0] = المجموعة[c1]؛
لـ (c2 = c1 + 1؛ c2 <= 48؛ c2++)
{
الصفقة[1] = المجموعة[c2]؛
لـ (c3 = c2 + 1؛ c3 <= 49؛ c3++)
{
الصفقة[2] = المجموعة[c3]؛
لـ (c4 = c3 + 1؛ c4 <= 50؛ c4++)
{
الصفقة[3] = المجموعة[c4]؛
لـ (c5 = c4 + 1؛ c5 <= 51؛ c5++)
{
الصفقة[4] = المجموعة[c5]؛
sc = النتيجة(الصفقة)؛
النتيجة_المصفوفة[العدد] = sc؛
مجموعة نتائج الصفقة[sc]++;
العد++؛
}
}
}
}
}
std::cerr << "count =\t" << count << "\n";
لـ (i = 0؛ i <= 9؛ i++)
std::cerr << اسم_اليد_المصفوفة[i] << "\t" << النتيجة_الصفقة_[i] << "\n";
}


صفقة باطلة
{
int i، c1، c2، c3، c4، c5؛
int count = 0؛
لـ (c1 = 0؛ c1 <= 47؛ c1++)
{
لـ (c2 = c1 + 1؛ c2 <= 48؛ c2++)
{
لـ (c3 = c2 + 1؛ c3 <= 49؛ c3++)
{
لـ (c4 = c3 + 1؛ c4 <= 50؛ c4++)
{
لـ (c5 = c4 + 1؛ c5 <= 51؛ c5++)
{
ارسم(c1،c2،c3،c4،c5)؛
العد++؛
إذا ((العدد % 1000)==0)
std::cerr << count << "\n";
}
}
}
}
}
لـ (i=9؛ i>=0؛ i--)
printf("%s\t%i\t%I64i\n", اسم_اليد_المصفوفة[i]، مصفوفة_الفوز[i]، مجموع_التركيبات[i]);
}

رسم باطل (int c1، int c2، int c3، int c4، int c5)
{
int i,j, d1, d2, d3, d4, d5, index, sc, draw_score_array[32][10];
int count = 0؛
لـ (i = 0؛ i <= 31؛ i++)
{
لـ (j = 0؛ j <= 9؛ j++)
draw_score_array[i][j] = 0؛
}
لـ (d1 = 0؛ d1 <= 47؛ d1++)
{
لـ (d2 = d1 + 1؛ d2 <= 48؛ d2++)
{
لـ (d3 = d2 + 1؛ d3 <= 49؛ d3++)
{
لـ (d4 = d3 + 1؛ d4 <= 50؛ d4++)
{
لـ (d5 = d4 + 1؛ d5 <= 51؛ d5++)
{
sc = score_array[العدد]؛
المؤشر = 0؛
إذا ((d1 == c1) || (d2 == c1) || (d3 == c1) || (d4 == c1) || (d5 == c1))
المؤشر += 16؛
إذا ((d1 == c2) || (d2 == c2) || (d3 == c2) || (d4 == c2) || (d5 == c2))
المؤشر += 8؛
إذا ((d1 == c3) || (d2 == c3) || (d3 == c3) || (d4 == c3) || (d5 == c3))
المؤشر += 4؛
إذا ((d1 == c4) || (d2 == c4) || (d3 == c4) || (d4 == c4) || (d5 == c4))
المؤشر += 2؛
إذا ((d1 == c5) || (d2 == c5) || (d3 == c5) || (d4 == c5) || (d5 == c5))
الفهرس += 1؛
رسم_مصفوفة_النقاط[الفهرس][sc]++;
العد++؛
}
}
}
}
}
ضعف الطاقة؛
ضعف الحد الأقصى للتغير = 0؛
int best_play = 0؛
لـ (i = 0؛ i <= 31؛ i++)
{
القيمة = 0.0؛
لـ (j = 0؛ j <= 9؛ j++)
ev += draw_score_array[i][j] * win_array[j]؛
ev /= draw_combinations_array[i];
إذا (ev > max_ev)
{
الحد الأقصى للقيمة = القيمة؛
أفضل_لعب = i؛
}
}
لـ (j = 0؛ j <= 9؛ j++)
{
tot_combinations[j] += draw_score_array[best_play][j]* weighting_array[best_play];
}
}

int score(بطاقة الصفقة[])
{
مستقيم، مسطح؛
إذا ((deal[0].s == deal[1].s) && (deal[0].s == deal[2].s) && (deal[0].s == deal[3].s) && (deal[0].s == deal[4].s))
تدفق = 1؛
آخر
تدفق = 0؛
إذا ((deal[0].r != deal[1].r) && (deal[1].r != deal[2].r) && (deal[2].r != deal[3].r) && (deal[3].r != deal[4].r))
{
إذا ((deal[0].r + 4) == deal[4].r)
مستقيم = 1؛
وإلا إذا ((deal[4].r == 12) && (deal[3].r == 3)) // عجلة
مستقيم = 1؛
آخر
مستقيم = 0؛
}
آخر
مستقيم = 0؛
إذا ((مستقيم == 1) و(مسح == 1))
{
إذا (deal[0].r == 8)
العودة 9؛
آخر
العودة 8؛
}
وإلا إذا (المسح == 1)
العودة 5؛
وإلا إذا (مستقيم == 1)
العودة 4؛
وإلا إذا ((deal[0].r == deal[3].r) || (deal[1].r == deal[4].r))
العودة 7؛
وإلا إذا ((deal[0].r == deal[2].r) && (deal[3].r == deal[4].r))
العودة 6؛
وإلا إذا ((deal[0].r == deal[1].r) && (deal[2].r == deal[4].r))
العودة 6؛
وإلا إذا ((deal[0].r == deal[2].r) || (deal[1].r == deal[3].r) || (deal[2].r == deal[4].r))
العودة 3؛
وإلا إذا ((deal[0].r == deal[1].r) && (deal[2].r == deal[3].r))
العودة 2؛
وإلا إذا ((deal[0].r == deal[1].r) && (deal[3].r == deal[4].r))
العودة 2؛
وإلا إذا ((deal[1].r == deal[2].r) && (deal[3].r == deal[4].r))
العودة 2؛
وإلا إذا ((deal[0].r == deal[1].r) && (deal[0].r >= 9))
العودة 1؛
وإلا إذا ((deal[1].r == deal[2].r) && (deal[1].r >= 9))
العودة 1؛
وإلا إذا ((deal[2].r == deal[3].r) && (deal[2].r >= 9))
العودة 1؛
وإلا إذا ((deal[3].r == deal[4].r) && (deal[3].r >= 9))
العودة 1؛
آخر
العودة 0؛
}

الروابط

منهجيتي لتحليل لعبة الفيديو بوكر .