Logo

רד-בורד: ארכיון

ראשי > תיכנות > חלוקת קלפים בין 2 שחקנים

31/08/2005 17:13:50 prgrmr
אני רוצה לתכנת ב C++ תוכנה שתדמה חלוקת קלפים(ארבעה מספרים כל אחד בין 1ל13) ל2 מערכים שהם יהיו 2 השחקנים, ניסיתי לעשות הדליה(BUCKET SORT) אבל בסופו של דבר נשארים מספר קטן של קלפים שהמחשב לא מגיע אליהם באקראי.

אני מודה מראש לכל מי שיעזור לי...
01/09/2005 18:30:11 cyberPunk
תוכל להביא קוד?
01/09/2005 19:17:11 prgrmr
קוד:#include <iostream.h>



#include <stdlib.h>


void sort(int,int);

















int main()



{
randomize();
int p1[26],p2[26];

sort(m,p1,p2);
return 0;
}
















void sort(int p1[],int p2[])



{
int arr[13]={0},i=0,,j=0,x,y,sum=0;


while(sum!=52)
{
x=random(13)+1;
y=random(13)+1;

if(arr[x]==4 || arr[y]==4)
continue;

arr[x]++;
arr[y]++;
p1[i++]=x;
p2[j++]=y;


sum+=2;
}
}[ההודעה נערכה על-ידי prgrmr ב-05/09/2005 16:15:56]
01/09/2005 19:17:58 prgrmr
בבקשה אחי רק תהיה רגוע...
סליחה על השורות אני רגיל ככה!!!
02/09/2005 10:56:57 cyberPunk
טוב אז ככה..
כל המשתנים שיש שם.
הם לא מוגדרים מראש!!
אז איך זה בדיוק עובד לך?!
מוזר
05/09/2005 16:17:11 prgrmr
למה הם כן מוגדרים .
וזה לא עובד בגלל שבסופו של דבר המחשב מגיע למצב שבו לדוגמא נשאר 4 קלפים לחלק אז הוא לעולם לא יגיע אליהם...
12/09/2005 08:04:09 type_o
your code is a mess, please write in details what exactly the program suppose to do.

13/09/2005 19:26:38 prgrmr
מה הקוונה
14/09/2005 00:18:42 C4$p3r
תעשה משהו כזה:
קוד:
for(j=0; j<=3; j++)
{
x=random(13)+1;
y=random(13)+1;

p1[j]=x;
p2[j]=y;
}


תקבל 2 מערכים (p1,p2) כל אחד בעלי 4 תאים (0-3) שבכל תא מספר בין 1-13[ההודעה נערכה על-ידי C4$p3r ב-14/09/2005 00:21:11]
25/09/2005 19:02:39 prgrmr
אבל זה לא יצור חפיסת קלפים אלא סתם מספרים אקראיים...
07/10/2005 21:56:36 CoDeR
אתה יכול לעשות את זה עם מערך ורנדום עד אורך משתנה. זה מ0-12 אבל לא קשה לשנות.
קוד:
arraylen = 13;
cardstotakeout = 8;
currentplayer = 0;

while (cardstotakeout != 0) {
card = random(arraylen);
position = findavaliblecardnumber(card);
givecardtoplayer(currentplayer,position);
removecardfromarray(position);
currentplayer = 1 - current player;
cardstotakeout--;
arraylen--;
}


הסבר בקצרה, המספר הרנדומלי זה המספר הסידורי של הקלף בחבילה.
כל פעם שמוציאים קלף מהחבילה, אז המספר הרנדומלי נהיה קטן יותר.
וכאשר בוחרים את הקלף מהחבילה סופרים את כמות הקלפים במערך לפי המספר הרנדומלי כאשר מדלגים על קלפים שכבר הוצאנו.
אם לא ברור, תשאל...
16/10/2005 21:33:53 prgrmr
תודה אבל כבר מצאתי פתרון, פשוט בונים מערך עם כל הקלפים ומחליפים מקומות באקראי, מה שיוצר בעצם מין ערבוב ואז מחלקים חצי חצי.
עמודים: 1