C#| שימוש בתכונות של עצמים - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

C#| שימוש בתכונות של עצמים


carman6

Recommended Posts

בנסיום לבנות בלק ג'ק פשוט, רציתי לבנות מחלקה לקלף, ככה שתכיל את התכונות סוג ומספר.

ומהתוכנה הראשית רציתי ליצור מערך מסוג הקלף שיצרתי לו מחלקה בהתחלה. עכשיו אני מנסה להכניס את כל הקלפים למערך ע"י הכתיבה הזאת-



cards[0]=new card(2,heart);


אם אני עושה את heart בלי מרכאות זה אומר לי שזה לא מוכר בקונטקסט הזה.

אם אני עושה עם הוא אומר ש-CARD (העצם שיצרתי) לא מקבל שני ארגומנטים.

על מנת לעזור בפיתורן, זה הפעולה ליצירת עצמים שעשיתי-




class card
{

private char num;
private string shape;

public void card (char num, string shape)
{

this.num = num;
this.shape = shape;

}

קישור לתוכן
שתף באתרים אחרים

2 הוא מספר, לא char. אם אתה רוצה אותו בתור char, אתה צריך לעשות '2'.

חוץ מזה, למה שהוא יכיר את heart אם נתת אותו בלי מרכאות? ככה הוא מחפש משתנה שנקרא heart.

(ובלי להעליב, אם יש לך טעויות כאלה, מומלץ שתחזור על חומר למתחילים לפני שאתה עובד עם מחלקות)

קישור לתוכן
שתף באתרים אחרים




class card
{

private char num;
private string shape;

public card (int num, string shape)
{

this.num = num;
this.shape = shape;

}

מלבד הטעויות ששניצל ציין.

בגדול, הקומפיילר שלך צודק, הוא מנסה ליצור אובייקט חדש עם ה-Default Constructor (שלא מקבל ארגומנטים כידוע) ולא מצליח כי העברת לו שני ארגומנטים.

למה הוא לא משתמש בזה שהגדרת? כי זה לא Constructor, תעיף את ה-VOID והכל יסתדר :)

קישור לתוכן
שתף באתרים אחרים

תודה על התגובות!

.ה- char היה בשביל להגדיר גם מלך ומלכה- 'Q', 'K'.. זה ששכחתי לשים את הגרשיים האלה זאת טעות שלי.

למה אני אמור להוריד את ה-VOID.. לא הבנתי את זה.

בכל מקרה תודה, זה הצליח.

שאלה נוספץ- מה אני צריך לרשום בהצגה של פעולה (יענו עם ההתחלה של PUBLIC) שמחזירה מחסנית מסוג CARD שיצרתי ומקבלת מערך של CARD?

קישור לתוכן
שתף באתרים אחרים

אם אתה רוצה טיפוס שיוכל להחזיק אך ורק ערכים כאלה, אז תצטרך להגדיר Enum. כמובן, הערכים שלו חייבים להיות מזהים תקניים, כלומר הוא לא יוכל להכיל את הערך 2, אבל כן יוכל להכיל, לדוגמה, את הערך Two.

הדבר הנכון הוא פשוט לעבוד עם מזהה מספרי (1 עד 13) או char.

קישור לתוכן
שתף באתרים אחרים

אחלה.

שאלה אחרונה ומצטער על ההטרדה.

אני רוצה לפנות לתכונה מוסימת של עצם, אם להיות ספציפי עשיתי את המחלקה CARD ויש שם את התכונה NUM. אני רוצה להגיע אל המספר הזה מתוכנית ה-MAIN.

אני יודע שאי אפשר לגשת לתכונות, אלא דרך פעולות. אז עשיתי פעולה בתוך מחלקת ה-CARD


public int number()
{
return num;
}

אלא, שזה לא עזר וכשניסיתי לפנות למספר הזה דרך כתיבת- Console.WriteLine(temp.number);

קיבלתי שגיאה שאי אפשר להשוות את זה ל-INT, אבל זה אמו רלהיות INT.

איפה הטעות שלי?

קישור לתוכן
שתף באתרים אחרים

תיקנתי הכל לפי מה שאמרתם ועכשיו אין יותר ארורים. אך כשאני מריץ את התוכנה היא נעצרת אחרי הדפסת השורה הראשונה.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace black_jack
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Welcome to Black JAck game!!");
card[] cards = new card[52];
cards = hachnasa(cards);
Stack<card> hafisa = new Stack<card>();

hafisa = create(cards, hafisa);
Console.WriteLine("yor first card is:");
int count = 0;
char stop = 'n';

card temp;

while (count <= 21 || stop == 'n')
{
temp = hafisa.Pop();
Console.WriteLine(temp.number() + " " + temp.shape1());
Console.WriteLine("enter Y if you would like to stpo or N if you would like to continue");
stop = char.Parse(Console.ReadLine());


}

if (count > 21)
Console.WriteLine("you lost!");
else
if (count == 21)
{
Console.WriteLine("you won!!");
}
else
Console.WriteLine("you can do better than that!");




}



public static Stack<card> create(card[] cards, Stack<card> hafisa)
{

Random rnd = new Random();
int num1 = rnd.Next(0, 52);
for (int i = 0; i < 52; i++)
{
while (cards[num1].number() != 0)
{
num1 = rnd.Next(0, 52);

}
hafisa.Push(cards[i]);
cards[num1].idcon(cards[num1]);
num1 = rnd.Next(0, 52);

}
return hafisa;

}

public static card[] hachnasa(card[] cards)
{

cards[0] = new card(2, "heart");
cards[1] = new card(2, "diamond");
cards[2] = new card(2, "spade");
cards[3] = new card(2, "clover");
cards[4] = new card(2, "heart");
cards[5] = new card(3, "diamond");
cards[6] = new card(3, "spade");
cards[7] = new card(3, "clover");
cards[8] = new card(4, "heart");
cards[9] = new card(4, "diamond");
cards[10] = new card(4, "spade");
cards[11] = new card(4, "clover");
cards[12] = new card(5, "heart");
cards[13] = new card(5, "diamond");
cards[14] = new card(5, "spade");
cards[15] = new card(5, "clover");
cards[16] = new card(6, "heart");
cards[17] = new card(6, "diamond");
cards[18] = new card(6, "spade");
cards[19] = new card(6, "clover");
cards[20] = new card(7, "heart");
cards[21] = new card(7, "diamond");
cards[22] = new card(7, "spade");
cards[23] = new card(7, "clover");
cards[24] = new card(8, "heart");
cards[25] = new card(8, "diamond");
cards[26] = new card(8, "spade");
cards[27] = new card(8, "clover");
cards[28] = new card(9, "heart");
cards[29] = new card(9, "diamond");
cards[30] = new card(9, "spade");
cards[31] = new card(9, "clover");
cards[32] = new card(10, "heart");
cards[33] = new card(10, "diamond");
cards[34] = new card(10, "spade");
cards[35] = new card(10, "clover");
cards[36] = new card(11, "heart");
cards[37] = new card(11, "diamond");
cards[38] = new card(11, "spade");
cards[39] = new card(11, "clover");
cards[40] = new card(12, "heart");
cards[41] = new card(12, "diamond");
cards[42] = new card(12, "spade");
cards[43] = new card(12, "clover");
cards[44] = new card(13, "heart");
cards[45] = new card(13, "diamond");
cards[46] = new card(13, "spade");
cards[47] = new card(13, "clover");
cards[48] = new card(14, "heart");
cards[49] = new card(14, "diamond");
cards[50] = new card(14, "spade");
cards[51] = new card(14, "clover");



return cards;
}


}






class card
{

int num;
string shape;

public card(int num, string shape)
{

this.num = num;
this.shape = shape;

}

public int number()
{
return num;
}

public string shape1()
{
return shape;
}



public void idcon(card yosi)
{
this.num = 0;
}

}
}


אשמח אם תוכלו להעיף מבט מבלי להתייחס יותר מידי לאיך שבניתי תמשחק עצמו..

קישור לתוכן
שתף באתרים אחרים

אחלה, סידרתי את הבעיה הזו. כשאמרתי נעצרת התכוונתי שהיא מראה לי תשורה הראשונה- ברוכים הבאים... ולא ממשיכה, כלומר הסמן מהבהב על הרקע השחור- עדיין פועלת אבל לא ממשיכה. סליחה על החוסר פירוט ממקודם.

עכשיו כשהתוכנית רצה יש בעיה שתמיד הקלף שנשלף הערך שלו הוא 0, כאילו הוא נלקח מהמערך שאיפסתי את כולו, אבל למעשה העברתי את כל הקלפים למחסנית ומשם שלפתי.

תודה מראש

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...