Создание простого приложения викторины в Windows Phone 7 - PullRequest
3 голосов
/ 12 декабря 2011

Мне нужна помощь, чтобы начать работу с простым приложением для викторин на Windows Phone 7. Пользователи должны будут догадаться, как называется то или иное место в моем городе, показанное на рисунке.На экране будет изображение, а под ним будет 4 ответа. Если пользователь нажмет на правильный ответ, ему сообщат о правильном ответе, а затем он сможет перейти к другому вопросу, так же как и в неправильном сценарии ответа.Мне нужно отслеживать правильные ответы.Поэтому мне нужна помощь или указания, как настроить игру с такими вопросами / ответами.Мне нужно, чтобы все вопросы были сгенерированы случайным образом (4 случайных ответа на вопрос) и, скажем, у меня будет 10 вопросов на игру.

Я планирую иметь список, в котором будут храниться места моего города

  cityList = new List<string>();

        cityList.Add("answer1");
        cityList.Add("answer2");
        cityList.Add("asnwer3");
        cityList.Add("answer4");

и я застрял, все, кто делал подобное раньше, пожалуйста, помогите, спасибо

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Как то так.Я набрал это в поле для ответа, оно, вероятно, не будет компилироваться как есть, но, безусловно, поможет вам начать.

class Question

{
    string ImageURI { get; set; }
    string Text { get; set; }
    ObservableCollection<Answer> Answers { get; set; }
    Answer CorrectAnswer { get; set; }

    bool MakeGuess(Answer a) { UserGuess = a; if (a.Equals(CorrectAnswer)) {  return true; } return false; }

    bool AnsweredSuccessfully { get { return UserGuess != null && UserGuess.Equals(CorrectAnswer); } }
    Answer UserGuess { get; set; }

}

class Answer 
{
   string text { get; set; }
}
class Game
{
    public Game()
    {
         Questions = new ObservableCollection<Question>();
         for (int i = 0; i < 10; i++) { Questions.Add(GenerateQuestion()); }
    }
    public Question GenerateQuestion()
    {
       Question q = new Question();
       q.ImageURI = your link to image//;
       q.Text = your image text//;
       q.Answers = new ObservableCollection<Answer>();
       q.CorrectAnswer = the correct answer//;
       q.Answers.Add(CorrectAnswer);

       for (int i = 0; i < 5; i++) { q.Answers.Add(GenerateAnswer(q.CorrectAnswer)); }

       return q;
    }
   public Answer GenerateAnswer(Answer ignore) 
{
     List<Answer> answers = DataStore.Answers;//go to your main list of answers.

     Random rand = new Random();

     Answer a = answers[Random.Next(0,answers.Size())];
     while (a == null || a.Equals(ignore) {  a = answers[Random.Next(0,answers.Size())];}
     return a;
}
    public ObservableCollection<Question> Questions { get; set; }    
}
1 голос
/ 13 декабря 2011

Я бы создал свой собственный класс Puzzle, который бы выглядел так:

public class Puzzle 
{
     List<string> answers = new List<string>(4);

     public Puzzle(string question, List<string> answers, int correctAnswer)
     {
           Question = question;
           Answers = answers;
           CorrectAnswer = correctAnswer;
     }
     public string Question {get; private set;}
     public int CorrectAnswer {get; private set;} //or you can make CorrectAnswer a string
     public List<string> Answers { get { return answers;} }

}

Этот класс будет нуждаться в логике для DataBiding, если вы используете один, может быть, какой-то интерфейс.

Ваш список будет выглядеть так:

cityPlaces = new List<string>(); //guess that's a better name
var answersOne = new List<string>() { "bla1", "bla2", "bla3", "bla4"};
cityPlaces .Add("What is the blabla blabla?",answersOne,2);

У меня есть сомнения по поводу того, что «мне нужно, чтобы вопросы задавались случайным образом». Я думаю, что это не лучшая идея для такой игры. Лучше сделать вопрос и ответы показанными в случайном порядке. Используйте Fisher – Yates shuffle , чтобы показать их в случайном порядке ( здесь приведен пример на C # , первый, второй неверный, GUID уникален, а не случайен, и алгоритм сортировки может делать что угодно с таким компаратором вроде краха).

Это должно вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...