Автор работы: Пользователь скрыл имя, 08 Июля 2013 в 13:53, курсовая работа
Данная курсовая работа представляет собой результат разработки игры «Косынка» с использованием объектно-ориентированного языка программирования Java. Суть работы заключалась в правильном создании модели игры и дальнейшего ее проектирования с использованием ООП. Необходимо было научиться создавать объекты и создавать связи (взаимодействия между ними).
ВВЕДЕНИЕ….. ……………………………………………………………….5
1 ОПИСАНИЕ И АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ…………..……..6
1.1 Постановка задачи………………………………………………...6
1.2 Анализ предметной области……………………………………...6
1.3 Формирование требований……………………………………….7
2 ДИАГРАММЫ КЛАССОВ И ОБЪЕКТОВ….………………………….....9
2.1 Диаграмма классов……………………………………………......9
2.2 Диаграмма объектов…………………………………...……….....11
3 ОПИСАНИЕ КЛАССОВ И МЕТОДОВ………………………..……….....12
3.1 Класс Card………………………………….………………….…..12
3.2 Класс Koloda ………………….…………………………………..12
3.6 Класс Stopka ………………………………………………………12
3.6 Класс Dom ………………………………………………………...13
3.6 Класс Sdacha ……………………………………………………...13
3.6 Класс StructFind…………………………………………………..13
3.6 Класс Stol ………….……………………………………………...13
4 ПРИМЕР РЕАЛИЗАЦИИ МЕТОДА………….………….……………….15
ВЫВОД……………………………………………………………………….17
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ…………………..……..18
При добавлении карты из «раздачи» в стопку, карта из «раздачи» удаляется (Рисунки 3-4).
Рисунок 3 –Перемещение карты 5b из «раздачи» в стопку
Рисунок 4 –Перемещение карты 5b из «раздачи» в стопку
ВЫВОД
В результате выполнения курсовой работы я разработала игру «Косынка». Я расширила свои знания в языке Java, узнала широту его возможностей. Я научилась создавать объекты и устанавливать взаимодействия между ними.
Кроме того, я научилась анализировать проект и визуально отображать его содержимое (диаграммы классов, объектов). Я также научилась формулировать требования к проекту и реализовывать их программно.
Приобретенные знания я смогу использовать в дальнейшем.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Герберт Шилдт Руководство для начинающих. Java 2. Издание 4. – М.: Издательский дом “Вильямс”,2001.
2. Хорстман Кей С., Коренелл Г. Библиотека профессионала. Java 2. Том 1. Основы. - М.: Издательский дом “Вильямс”, 2004.
3. http://wikipedia.org - свободная энциклопедия.
4. http://www.game.ru/kosinka – теория игры «Косынка»
5. http://berkut.homelinux.com – материалы сайта Евгения Беркунского
ПРИЛОЖЕНИЕ А
Фрагменты кода игры
public class Card {
private int mast;
private int starshinstvo;
private int sostoyanie;//перевернута или нет
public static int numMast=4;//количество мастей
public static int numStarsh=13;//количество значений карт
Card() {
this.mast = 2;
this.starshinstvo = 6;
this.sostoyanie = 1;
}
public boolean isBlack(){
if(getMast()<2)
return true;
return false;
}
public boolean isRed(){
return !isBlack();
}
public void setMast(int mast) {
this.mast = mast;
}
public void setStarshinstvo(int starshinstvo) {
this.starshinstvo = starshinstvo;
}
public void setSostoyanie(int sostoyanie) {
this.sostoyanie = sostoyanie;
}
public int getMast() {
return mast;
}
public int getStarshinstvo() {
return starshinstvo;
}
public int getSostoyanie() {
return sostoyanie;
}
public Card(int mast, int starshinstvo, int sostoyanie) {
this.mast = mast;
this.starshinstvo = starshinstvo;
this.sostoyanie = sostoyanie;
}
public void output(){
if(getSostoyanie()==0)
{
System.out.printf("[]");
return;
}
System.out.print(name());
}
public String name(){
String m = null;//mast
String s=null;//starshinstvo
switch(getStarshinstvo()){
case 12: s="K";break;
case 11: s="Q";break;
case 10: s="J";break;
case 9: s="T";break;
default: s=Integer.toString(
}
switch(getMast()){
case 0: m="p";break;
case 1: m="t";break;
case 2: m="b";break;
case 3: m="c";break;
default: System.out.printf("Fault");
}
return s+m;
}
public class Koloda {
int N=52;
private Card [] koloda= new Card[N];
public Koloda() {
fillKoloda();
}
public int getN() {
return N;
}
public Card[] getKoloda() {
return koloda;
}
public void fillKoloda(){
int c=0;
for(int i=0;i<Card.numMast;++i){
for(int j=0;j<Card.numStarsh;++j){
Card a=new Card(i,j,0);
koloda[c++]=a;
}
}
}
public void peretosovat(){
int a,b;//промежуточные переменные,содержащие случайные числа
Card c=null;
for(int i=0;i<100;++i){
a=(int) (Math.random()*1000)%52;
b=(int) (Math.random()*1000)%52;
c=koloda[a];
koloda[a]=koloda[b];
koloda[b]=c;
}
}
public void output(){
for(int i=0;i<N;++i){
System.out.printf(" %d ",i);
koloda[i].output();
}
}
}
public class Stopka {
List <Card> stopka=new ArrayList<>();
public static int numStopok=7;//количество стопок
public void output(){
int size = stopka.size();
for(int i=0;i<size;++i){
stopka.get(i).output();
System.out.printf(" ");
}
System.out.println();
}
public void openLastCard(){
if(stopka.isEmpty()) return;
stopka.get(stopka.size()-1).
}
public Card getLastCard(){
if(stopka.isEmpty()) return null;
return stopka.get(stopka.size()-1);
}
public Card getFirstCard(){
if(stopka.isEmpty()) return null;
return stopka.get(0);
}
public void closeCards(){
int size=stopka.size();
for(int i=0;i<size;++i)
stopka.get(i).setSostoyanie(0)
}
}
public class Stol {
int N=7;
Koloda k=new Koloda();
Dom dom=new Dom();
Sdacha sd=new Sdacha();
List <Stopka> stopki=new ArrayList<>();
Stopka selected=new Stopka();//перетаскиваемые карты
public Stol() {
k.peretosovat();
int kolN=0;//
for (int i=0; i<N ;++i){
Stopka s=new Stopka();
stopki.add(s);
for(int j=0;j<=i;++j)
{
stopki.get(i).stopka.add(k.
}
stopki.get(i).openLastCard();
}
sd.opened.stopka.add(k.
sd.opened.openLastCard();
while(kolN<k.getN()){
sd.closed.stopka.add(k.
}
}
public void output(){
int sdClosedSize = sd.closed.stopka.size();
int sdOpenedSize = sd.opened.stopka.size();
System.out.printf("Стол");
System.out.println();
sd.output();
int size = stopki.size();
System.out.printf("Стол.
for (int i=0;i<size;i++){
System.out.printf("Стопка %d ",i);
stopki.get(i).output();
}
dom.output();
}
public void moveStopkaDom(int s){
Stopka stDom = null;
Card cd=stopki.get(s).getLastCard()
if(cd==null) return;
else{
switch(cd.getMast()){
case 0: stDom=dom.A; break;
case 1: stDom=dom.B; break;
case 2: stDom=dom.C; break;
case 3: stDom=dom.D; break;
}
Card a=stDom.getLastCard();
if( (a==null && cd.getStarshinstvo()==0) ||
(cd.getStarshinstvo()-a.
stopki.get(s).stopka.remove(
stDom.stopka.add(cd);
stopki.get(s).openLastCard();
}
}
}
/*
* Перемещение масти mast из дома в стопку s.
*/
public void moveDomStopka(int mast, int s ){
Card cd=null;
Stopka a=null;
switch(mast){
case 0:a=dom.A;break;
case 1:a=dom.B;break;
case 2:a=dom.C;break;
case 3:a=dom.D;break;
}
if(a!=null)
{
cd=a.getLastCard();
if(cd!=null)
a.stopka.remove(cd);
stopki.get(s).stopka.add(cd);
}
}
/*
* Перемещение из количества карт num из стопки sFrom в стопку sTo.
*/
public void moveStopkaStopka(int sFrom, int sTo, int num ){
Card cd=stopki.get(sFrom).stopka.
if(cd==null || cd.getSostoyanie()==0)
return;
Card a=stopki.get(sTo).getLastCard(
if((a==null && cd.getStarshinstvo()==12)
|| (a!=null && a.isBlack()!=cd.isBlack() &&
a.getStarshinstvo()-cd.
{
int iFrom=stopki.get(sFrom).
int iTo=stopki.get(sFrom).stopka.
List<Card> subList = stopki.get(sFrom).stopka.
stopki.get(sTo).stopka.addAll(
stopki.get(sFrom).stopka.
stopki.get(sFrom).
}
}
public void moveRazdachaStopka(int sTo){
Card cd=sd.opened.getLastCard();//
if(cd==null) return;
Card a=stopki.get(sTo).getLastCard(
if((a==null && cd.getStarshinstvo()==12)
||(a!=null && a.isBlack()!=cd.isBlack() && a.getStarshinstvo()-cd.
{
sd.opened.stopka.remove(cd);
stopki.get(sTo).stopka.add(cd)
}
}
public void moveRazdachaDom(){
Stopka stDom = null;
Card cd=sd.opened.getLastCard();
if(cd==null) return;
else{
switch(cd.getMast()){
case 0: stDom=dom.A; break;
case 1: stDom=dom.B; break;
case 2: stDom=dom.C; break;
case 3: stDom=dom.D; break;
}
Card a=stDom.getLastCard();
if( (a==null && cd.getStarshinstvo()==0) ||
(cd.getStarshinstvo()-a.
sd.opened.stopka.remove(cd);
stDom.stopka.add(cd);
}
}
}
/*
* Перемещение одной карты из закрытой части раздачи в открытую часть раздачи.
*/
public void openNext(){
Card cd=sd.closed.getFirstCard();
if(cd == null)
{
sd.closed.stopka.addAll(sd.
sd.opened.stopka.clear();
sd.closed.closeCards();
}
else
{
sd.closed.stopka.remove(cd);
sd.opened.stopka.add(cd);
cd.setSostoyanie(1);
}
}
public StructFind findByName(String name){
StructFind f=new StructFind();
if(name.equals("0") || name.equals("1") || name.equals("2") ||
name.equals("3") || name.equals("4") || name.equals("5") || name.equals("6") ||
name.equals("7") || name.equals("8") || name.equals("9") || name.equals("10"))
{
f.indOfStopka=Integer.
f.indOfCard=0;
f.numCards=0;
return f;
}
Card a=null;
int ind=0;
for(int i=0;i<k.getN();++i){
if(k.getKoloda()[i].name().
{
a=k.getKoloda()[i];
break;
}
}
for(int i=0;i<stopki.size();++i){
ind=stopki.get(i).stopka.
if(ind!=-1 && a.getSostoyanie()!=0)
{
f.indOfStopka=i;
f.indOfCard=ind;
f.numCards=stopki.get(i).
return f;
}
}
if(sd.opened.getLastCard()!=
f.indOfStopka=11;
f.indOfCard=sd.opened.stopka.
f.numCards=1;
return f;
}
if(dom.A.getLastCard()!=null
&& dom.A.getLastCard().name().
f.indOfStopka=7;
f.indOfCard=dom.A.stopka.size(
f.numCards=1;
return f;
}
if(dom.B.getLastCard()!=null
&& dom.B.getLastCard().name().
f.indOfStopka=8;
f.indOfCard=dom.B.stopka.size(
f.numCards=1;
return f;
}
if(dom.C.getLastCard()!=null && dom.C.getLastCard().name().
f.indOfStopka=9;
f.indOfCard=dom.C.stopka.size(
f.numCards=1;
return f;
}
if(dom.D.getLastCard()!=null
&& dom.D.getLastCard().name().
f.indOfStopka=10;
f.indOfCard=dom.D.stopka.size(
f.numCards=1;
return f;
}
return null;
}
public void loop1(){
StructFind sFrom=null;
StructFind sTo=null;
boolean exit=true;
Scanner scan= new Scanner(System.in);
while(exit){
output();
System.out.println("Menu:\
System.out.println("n - Next Card;");
System.out.println("From To: 7b 8t");
String from = null;
String to = null;
String a=scan.nextLine();
String[] split = a.split(" ");
System.out.println(a);
if(split.length==1){
from=split[0];
sFrom=findByName(from);
}
else if(split.length==2){
from=split[0];
to=split[1];
sFrom=findByName(from);
sTo=findByName(to);
}
if(from.equals("exit"))
exit=false;
else if(to!=null && to.equals("0")&& sFrom!=null && (sFrom.indOfStopka>=0 && sFrom.indOfStopka<7))
moveStopkaStopka(sFrom.
else if(to!=null && to.equals("1")&& sFrom!=null && (sFrom.indOfStopka>=0 && sFrom.indOfStopka<7))
moveStopkaStopka(sFrom.
else if(to!=null && to.equals("2")&& sFrom!=null && (sFrom.indOfStopka>=0 && sFrom.indOfStopka<7))
moveStopkaStopka(sFrom.
else if(to!=null && to.equals("3")&& sFrom!=null && (sFrom.indOfStopka>=0 && sFrom.indOfStopka<7))
moveStopkaStopka(sFrom.indOfSt
else if(to!=null && to.equals("4")&& sFrom!=null && (sFrom.indOfStopka>=0 && sFrom.indOfStopka<7))
moveStopkaStopka(sFrom.
else if(to!=null && to.equals("5")&& sFrom!=null && (sFrom.indOfStopka>=0 && sFrom.indOfStopka<7))
moveStopkaStopka(sFrom.
else if(to!=null && to.equals("6")&& sFrom!=null && (sFrom.indOfStopka>=0 && sFrom.indOfStopka<7))
moveStopkaStopka(sFrom.
else if(from.equals("n"))
openNext();
else if(sTo!=null && sFrom!=null && (sTo.indOfStopka>=0 && sTo.indOfStopka<7) && sFrom.indOfStopka==11){
Информация о работе Разработка программного обеспечения для игры "Косынка"