コード例 #1
0
ファイル: VocabularyGame.cs プロジェクト: dziuba91/MyProjects
        public void Draw(GameTime gameTime, MouseState d, Vector2 position)
        {
            if (!pauseGame)
            {
                string test1 = composition[CorectKanji].reading;
                string test2 = composition[CorectKanji].signs;

                spriteBatch.Begin();

                string score = wins + " / " + round;
                if (replay)
                {
                    score += " [powtórka]";
                }
                spriteBatch.DrawString(text4, score, new Vector2(10, 5), Color.Black);

                //
                // solution
                if (round > 0)
                {
                    Rectangle solutionBox = new Rectangle(GraphicsDevice.Viewport.Width - 520, 5, 500, 37);
                    spriteBatch.Draw(blank, solutionBox, Color.Black);

                    string goodKanji = composition[goodAnswer].reading;

                    if (correctAnswer)
                    {
                        if ((position.X >= solutionBox.X && position.X <= solutionBox.X + solutionBox.Width) &&
                            (position.Y >= solutionBox.Y && position.Y <= solutionBox.Y + solutionBox.Height))
                        {
                            if (d.LeftButton == ButtonState.Pressed)
                            {
                                spriteBatch.Draw(blank, solutionBox, Color.Green);
                                spriteBatch.DrawString(text5, goodKanji, new Vector2((int)(solutionBox.X + solutionBox.Width / 2 - text5.MeasureString(goodKanji).X / 2), (int)(solutionBox.Y + solutionBox.Height / 2 - text5.MeasureString(goodKanji).Y / 2)), Color.Black);
                                pressed = true;
                            }
                            else if (pressed)
                            {
                                pressed              = false;
                                pauseGame            = true;
                                vocabularyList.Index = goodKanjiAnswer;
                            }
                            else
                            {
                                spriteBatch.Draw(blank, solutionBox, Color.DarkGreen);
                                spriteBatch.DrawString(text5, goodKanji, new Vector2((int)(solutionBox.X + solutionBox.Width / 2 - text5.MeasureString(goodKanji).X / 2), (int)(solutionBox.Y + solutionBox.Height / 2 - text5.MeasureString(goodKanji).Y / 2)), Color.White);
                            }
                        }
                        else
                        {
                            spriteBatch.Draw(blank, solutionBox, Color.Green);
                            spriteBatch.DrawString(text5, goodKanji, new Vector2((int)(solutionBox.X + solutionBox.Width / 2 - text5.MeasureString(goodKanji).X / 2), (int)(solutionBox.Y + solutionBox.Height / 2 - text5.MeasureString(goodKanji).Y / 2)), Color.Black);
                        }
                    }
                    else
                    {
                        string wrongKanji = composition[wrongAnswer].reading;

                        Rectangle solutionBox1 = new Rectangle((int)solutionBox.X,
                                                               (int)solutionBox.Y,
                                                               (int)solutionBox.Width / 2,
                                                               (int)solutionBox.Height);

                        Rectangle solutionBox2 = new Rectangle((int)(solutionBox.X + solutionBox.Width / 2),
                                                               (int)solutionBox.Y,
                                                               (int)solutionBox.Width / 2,
                                                               (int)solutionBox.Height);

                        if ((position.X >= solutionBox1.X && position.X <= solutionBox1.X + solutionBox1.Width) &&
                            (position.Y >= solutionBox1.Y && position.Y <= solutionBox1.Y + solutionBox1.Height))
                        {
                            if (d.LeftButton == ButtonState.Pressed)
                            {
                                spriteBatch.Draw(blank, solutionBox1, Color.Red);
                                spriteBatch.DrawString(text5, wrongKanji, new Vector2((int)(solutionBox1.X + solutionBox1.Width / 2 - text5.MeasureString(wrongKanji).X / 2), (int)(solutionBox1.Y + solutionBox1.Height / 2 - text5.MeasureString(wrongKanji).Y / 2)), Color.Black);
                                pressed = true;
                            }
                            else if (pressed)
                            {
                                pressed              = false;
                                pauseGame            = true;
                                vocabularyList.Index = wrongKanjiAnswer;
                            }
                            else
                            {
                                spriteBatch.Draw(blank, solutionBox1, Color.DarkRed);
                                spriteBatch.DrawString(text5, wrongKanji, new Vector2((int)(solutionBox1.X + solutionBox1.Width / 2 - text5.MeasureString(wrongKanji).X / 2), (int)(solutionBox1.Y + solutionBox1.Height / 2 - text5.MeasureString(wrongKanji).Y / 2)), Color.White);
                            }
                        }
                        else
                        {
                            spriteBatch.Draw(blank, solutionBox1, Color.Red);
                            spriteBatch.DrawString(text5, wrongKanji, new Vector2((int)(solutionBox1.X + solutionBox1.Width / 2 - text5.MeasureString(wrongKanji).X / 2), (int)(solutionBox1.Y + solutionBox1.Height / 2 - text5.MeasureString(wrongKanji).Y / 2)), Color.Black);
                        }


                        if ((position.X >= solutionBox2.X && position.X <= solutionBox2.X + solutionBox2.Width) &&
                            (position.Y >= solutionBox2.Y && position.Y <= solutionBox2.Y + solutionBox2.Height))
                        {
                            if (d.LeftButton == ButtonState.Pressed)
                            {
                                spriteBatch.Draw(blank, solutionBox2, Color.Green);
                                spriteBatch.DrawString(text5, goodKanji, new Vector2((int)(solutionBox2.X + solutionBox2.Width / 2 - text5.MeasureString(goodKanji).X / 2), (int)(solutionBox2.Y + solutionBox2.Height / 2 - text5.MeasureString(goodKanji).Y / 2)), Color.Black);
                                pressed = true;
                            }
                            else if (pressed)
                            {
                                pressed              = false;
                                pauseGame            = true;
                                vocabularyList.Index = goodKanjiAnswer;
                            }
                            else
                            {
                                spriteBatch.Draw(blank, solutionBox2, Color.DarkGreen);
                                spriteBatch.DrawString(text5, goodKanji, new Vector2((int)(solutionBox2.X + solutionBox2.Width / 2 - text5.MeasureString(goodKanji).X / 2), (int)(solutionBox2.Y + solutionBox2.Height / 2 - text5.MeasureString(goodKanji).Y / 2)), Color.White);
                            }
                        }
                        else
                        {
                            spriteBatch.Draw(blank, solutionBox2, Color.Green);
                            spriteBatch.DrawString(text5, goodKanji, new Vector2((int)(solutionBox2.X + solutionBox2.Width / 2 - text5.MeasureString(goodKanji).X / 2), (int)(solutionBox2.Y + solutionBox2.Height / 2 - text5.MeasureString(goodKanji).Y / 2)), Color.Black);
                        }
                    }
                }

                //
                // must "constructVirtualMenu()" -> realized

                spriteBatch.Draw(blank, mainText, Color.White);

                int lineSpacing = 15;

                int textSpacing = lineSpacing + mainText.Y;

                Vector2 meaningPosition = new Vector2((int)((mainText.X + mainText.Width / 2) - text3.MeasureString(test1).X / 2), textSpacing);

                spriteBatch.DrawString(text3, test1, meaningPosition, Color.Black);


                textSpacing += (int)(text3.MeasureString(test1).Y + lineSpacing);

                for (int i = 0; i < test2.Length; i++)
                {
                    if (test2[i] == '[')
                    {
                        test2 = test2.Remove(i - 1);
                        break;
                    }
                }

                test2 = "(" + test2 + ")";

                Vector2 readingPosition = new Vector2((int)((mainText.X + mainText.Width / 2) - text5.MeasureString(test2).X / 2), textSpacing);

                spriteBatch.DrawString(text5, test2, readingPosition, Color.Black);

                //
                // must "constructVirtualMenu()" -> realized

                for (int i = 0; i < 6; i++)
                {
                    if ((position.X >= choose[i].X && position.X <= choose[i].X + choose[i].Width &&
                         (position.Y >= choose[i].Y && position.Y <= choose[i].Y + choose[i].Height)))
                    {
                        if (d.LeftButton == ButtonState.Pressed)
                        {
                            spriteBatch.Draw(blank, choose[i], Color.White);
                            spriteBatch.DrawString(text6, composition[kanjiIndex[i]].meaning, new Vector2(choose[i].X + (choose[i].Width / 2) - (text6.MeasureString(composition[kanjiIndex[i]].meaning).X / 2), choose[i].Y + (choose[i].Height / 2) - (text6.MeasureString(composition[kanjiIndex[i]].meaning).Y / 2)), Color.Black);
                            pressed = true;
                        }
                        else if (pressed)
                        {
                            pressed = false;

                            round++;

                            if (i == CorectKanjiIndex)
                            {
                                wins++;
                                correctAnswer   = true;
                                goodAnswer      = kanjiIndex[i];
                                goodKanjiAnswer = compositionIndex[goodAnswer];

                                if (replay)
                                {
                                    rep.Remove(goodAnswer);
                                }
                            }
                            else
                            {
                                correctAnswer    = false;
                                goodAnswer       = kanjiIndex[CorectKanjiIndex];
                                goodKanjiAnswer  = compositionIndex[goodAnswer];
                                wrongAnswer      = kanjiIndex[i];
                                wrongKanjiAnswer = compositionIndex[wrongAnswer];

                                if (!replay)
                                {
                                    rep.Add(goodAnswer);
                                }
                            }

                            if (!replay)
                            {
                                l_rep++;

                                if (l_rep == max_rep && rep.Count != 0)
                                {
                                    replay = true;
                                }
                                else if (l_rep == max_rep && rep.Count == 0)
                                {
                                    l_rep = 0;
                                }
                            }
                            else
                            {
                                if (rep.Count == 0)
                                {
                                    replay = false;
                                    l_rep  = 0;
                                }
                            }

                            SetKanjiGameRound();
                        }
                        else
                        {
                            spriteBatch.Draw(blank, choose[i], Color.Black);
                            spriteBatch.DrawString(text6, composition[kanjiIndex[i]].meaning, new Vector2(choose[i].X + (choose[i].Width / 2) - (text6.MeasureString(composition[kanjiIndex[i]].meaning).X / 2), choose[i].Y + (choose[i].Height / 2) - (text6.MeasureString(composition[kanjiIndex[i]].meaning).Y / 2)), Color.White);
                        }
                    }
                    else
                    {
                        spriteBatch.Draw(blank, choose[i], Color.White);
                        spriteBatch.DrawString(text6, composition[kanjiIndex[i]].meaning, new Vector2(choose[i].X + (choose[i].Width / 2) - (text6.MeasureString(composition[kanjiIndex[i]].meaning).X / 2), choose[i].Y + (choose[i].Height / 2) - (text6.MeasureString(composition[kanjiIndex[i]].meaning).Y / 2)), Color.Black);
                    }
                }

                spriteBatch.End();
            }
            else
            {
                vocabularyList.Draw(gameTime, d, position);
                returnButton(d, position);
            }

            base.Draw(gameTime);
        }