Автор: Пользователь скрыл имя, 09 Мая 2012 в 18:16, курсовая работа
Развитие компьютерных технологий в течение последних нескольких десятилетий происходило удивительно быстрыми темпами. Современные ноутбуки и стационарные компьютеры могут производить вычисления гораздо быстрее и хранить намного больше информации, чем, например, компьютеры второй половины прошлого столетия. Также в ногу со временем развивались языки программирования.
Введение………………………………………………………………………………………..4
1. Постановка задачи…………………………………………………………………….5
2. Объектно-ориентированный анализ предметной области……..6
3. Результаты проектирования……………………………………………………..9
4. Результаты комплексного тестирования………………………………….11
Выводы………………………………………………………………………………………….16
Использованная литература………………………………………………………...17
Приложение А. Руководство пользователя…………………………………18
Приложение Б. Листинг программы……………………………………………19
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)
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].
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].
cards = game.Piles[Game.countOfPiles].
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;
}