2013-08-11 2 views
0

Надеюсь, я смогу выполнить эту работу без загрузки моего кода. У меня есть консольное приложение Draw Poker в VS 2012 с примерно 5 классами, объектно-ориентированными. Да, это домашняя работа, но я - опытный разработчик, изучающий C#.Как вызвать метод без первого вызова его конструктора в C#

Моя цель состоит в том, чтобы пополнить колоду после каждой руки, чтобы игрок мог рисовать из 52 карт и, возможно, потерял 100 очков в 1 балл за ничью. Это невозможно, если колода истощается после нескольких ничьих, что происходит.

Проблема: мне сказали вызвать метод CreateDeck, но я не вижу, как это сделать, не вызывая конструктор. Но если я это делаю, новый объект Deck создается, но не ссылается; оригинальная колода ссылается и быстро истощается через каждую ничью.

Связанная проблема заключается в том, что на каждую ничью выполняется несколько DealHands, тем самым умножая темп, по которому колода истощается.

Поскольку эта система содержит сотни строк кода, разбросанных по пяти классам, я не вижу, как включить мой код. Хотя я мог, очевидно, включать вызовы метода, мне сказали, что конструктор не будет работать сам по себе. Не знаете, что имел в виду инструктор.

Я могу отправить почтовую систему на молнию заинтересованной стороне.

Спасибо.

+4

Отправка почтового сообщения заинтересованным сторонам не является полезным механизмом, потому что любой, кто читает этот вопрос и какие-либо ответы, не имеет возможности его увидеть. Можете ли вы перевести свою проблему на простой пример и опубликовать этот код? – hatchet

+0

Опубликовать код конструктора и 'CreateMethod()'? –

+3

Мое предположение, основанное на явно неполной информации, заключается в том, что было предложено сделать метод CreateDeck() 'static. Статические методы привязаны к типу, а не к какому-либо конкретному экземпляру типа. Это означает, что вы можете вызывать 'Deck.CreateDeck()' из любого места, не создавая экземпляр. Здесь не достаточно информации, чтобы определить, действительно ли это то, что вы ищете. –

ответ

2

Создать новую колоду каждый раз, когда вы начинаете новую игру:

Deck deck = new Deck(); 
... 
Card card = deck.NextCard(); 

В конструкторе палубы, есть код, который устанавливает новую 52 карт перемешиваются палубой.

public class Deck 
{ 
    public Deck() 
    { 
     // Create List/Array of shuffled cards here 
    } 
} 

или

Если вы действительно хотите, чтобы это как статический метод добавить метод в случайном порядке() в колоде

public static void Shuffle() 
{ 
    // Shuffle cards here 
} 

Позвони

Deck.Shuffle() 

Обратите внимание, что вы звоните Shuffle на класс не экземпляр колоды, как в первом ex обильна. В этом случае ваш список/массив карт также должен быть статическим.

+2

Я уверен, что OP ищет ответ, включающий 'static', поскольку в вопросе говорится о вызове метода без его первого вызова его конструктора; не говоря, что ваш ответ неверен, но что он действительно не затрагивает предполагаемый вопрос OP. –

+0

Вы правы - спасибо! Обновил мой ответ. – Ryan

Смежные вопросы