Разработка компьютерной игры «Косынка»

Автор: Пользователь скрыл имя, 09 Мая 2012 в 18:16, курсовая работа

Краткое описание

Развитие компьютерных технологий в течение последних нескольких десятилетий происходило удивительно быстрыми темпами. Современные ноутбуки и стационарные компьютеры могут производить вычисления гораздо быстрее и хранить намного больше информации, чем, например, компьютеры второй половины прошлого столетия. Также в ногу со временем развивались языки программирования.

Оглавление

Введение………………………………………………………………………………………..4
1. Постановка задачи…………………………………………………………………….5
2. Объектно-ориентированный анализ предметной области……..6
3. Результаты проектирования……………………………………………………..9
4. Результаты комплексного тестирования………………………………….11
Выводы………………………………………………………………………………………….16
Использованная литература………………………………………………………...17
Приложение А. Руководство пользователя…………………………………18
Приложение Б. Листинг программы……………………………………………19

Файлы: 1 файл

курсовая програмирование Косынка.docx

— 276.40 Кб (Скачать)

                        inserted = true;

                    }

else

                    {

//Deck.addCardToPile(new Card(i));

//inserted = true;

                    }

                }

            }

        } 

//определительвхождениякарты

publicCard defineCard(int X, int Y, refint numberOfPile)

        {

Card resultCard = null;

for (int i = 0; i <= countOfPiles; i++)

            {

Card[] cardsInPile = Piles[i].getPile();

for (int j = 0; j<cardsInPile.Count(); j++)

                {

Card card = cardsInPile[j];

if (X >= card.X && X <= card.X + widthCard &&

                        Y >= card.Y && Y <= card.Y + heightCard)

                    {

if ((card.IsOpen && i < countOfPiles) || (i == countOfPiles))

                        {

                            numberOfPile = i;

                            resultCard = card;

break;

}

                    }

                }

            }

return resultCard;

        } 

//определение  пересечения контуров двух карт

publicbool intersect(Card card1, Card card2)

        {

if (((card2.X <= card1.X && card1.X <= card2.X + Game.widthCard) || (card1.X <= card2.X && card2.X <= card1.X + Game.widthCard)) &&

               ((card2.Y <= card1.Y && card1.Y <= card2.Y + Game.heightCard) || (card1.Y <= card2.Y && card2.Y <= card1.Y + Game.heightCard)))

returntrue;

else

returnfalse;

} 

//определение  пересечения контура карты с  произвольным прямоугольником

publicbool intersect(Card card1, int X, int Y)

        {

if (((X <= card1.X && card1.X <= X + Game.widthCard) || (card1.X <= X && X <= card1.X + Game.widthCard)) &&

               ((Y <= card1.Y && card1.Y <= Y + Game.heightCard) || (card1.Y <= Y && Y <= card1.Y + Game.heightCard)))

returntrue;

else

returnfalse;

} 

//определение  пересечения контура карты либо  с контуром колоды (если она  пуста), либо с контуром карты  в колоде (если непуста)

publicbool intersect(Card card1, Pile pile)

        {

if (pile.countCardsInPile() == 0)

return intersect(card1, pile.X, pile.Y);

else

return intersect(card1, pile.peekCard());

        } 

//методувеличениясчета

publicvoid increaseScore(int incValue)

        {

            score += incValue;

        } 

//методуменьшениясчета

publicvoid decreaseScore(int decValue)

        {

            score -= decValue;

if (score < 0)

                score = 0;

        } 

//текущийсчет

publicint Score

        {

get

            {

return score;

            }

        } 
 

    }

} 

     Form1.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms; 

namespace WindowsFormsApplication1

{

publicpartialclassForm1 : Form

    {

privateGame game;

privateCard transportCard;

privateGraphics graphics;

//private Bitmap transportBitmap;

privateBitmap rubashka;

privateint startX = 0;

privateint startY = 0;

privateint numberOfTransPile; 
 

//флагперемещения

privatebool drag = false;

//флаг  размещения на новом месте

privatebool drop = false; 

//смещение  для крайней левой стопки по X

privateconstint offsetX = 25;

//растояниемеждустопками

privateconstint pileDistance = 32;

//смещение  для всех стопок по Y

privateconstint offsetY = 230;

//кромка  карт в закрытом состоянии

privateconstint edgeClose = 4;

//кромка  карт в открытом состоянии

privateconstint edgeOpen = 25;

//кромкакартдляколоды

privateconstint edgeDeck = 2;

//сдвигпооси Ox припереносекарты

privateint transportX = 0;

//сдвиг  по оси Oy при переносе карты

privateint transportY = 0; 

//конструкторформы

public Form1()

        {

            InitializeComponent();

            rubashka = (Bitmap)WindowsFormsApplication1.Properties.Resources.ResourceManager.GetObject("_55");

DoubleBuffered = true;

        } 

//перед  выполнением определяем координаты  верхних карт в каждой стопке

privatevoid initFirstCard()

        {

int countCardsInPile = 0;

Card[] cards;

int i = 0, j;

for (i = 0; i <Game.countOfPiles; i++)

            {

                cards = game.Piles[i].getPile();

                countCardsInPile = game.Piles[i].countCardsInPile();

                game.Piles[i].X = offsetX + i * Game.widthCard + pileDistance * i;

                game.Piles[i].Y = offsetY;

for (j = countCardsInPile - 1; j > 0; j--)

                {

                    cards[j].X = offsetX + i * Game.widthCard + pileDistance * i;

                    cards[j].Y = offsetY + (cards.Count() - 1 - j) * edgeClose;

                }

Card card = game.Piles[i].peekCard();

                card.X = offsetX + i * Game.widthCard + pileDistance * i;

                card.Y = (countCardsInPile - 1) * edgeClose + offsetY;

                card.IsOpen = true;

            }

            countCardsInPile = game.Piles[Game.countOfPiles].countCardsInPile();

            cards = game.Piles[Game.countOfPiles].getPile();

            i = countCardsInPile / 3;

for (j = countCardsInPile - 1; j >= 0; j--)

{

if (j % 3 == 0)

                    i--;

//задаем  координаты для карт в стопке

cards[j].X = offsetX + i * edgeDeck;

                cards[j].Y = offsetY / 4 + (countCardsInPile - 1 - i) * edgeDeck;

            }

//задаемкоординатыдлябаз

for (j = 0; j <Game.countOfBases; j++)

            {

                game.Bases[j].X = Width - (offsetX + (j + 1) * Game.widthCard + pileDistance * j) - 10;

                game.Bases[j].Y = offsetY / 4 + 2 * menuStrip1.Height;

}

Информация о работе Разработка компьютерной игры «Косынка»