Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters > Algorithms
Register

Reply
 
LinkBack Thread Tools
Old 01.08.2006, 07:56   #1
Младенец
 
Join Date: 08 2006
Location: Odessa ukraine
Posts: 7
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default Морской бой

Помогите с нахождением исходника для игры "Морской бой" на языке visual C++(только в консоле). Спасибо заранее . Может у кого-то был опыт в написании и сможет поделиться, буду премного благодарна!!
Reply With Quote
Old 01.08.2006, 08:03   #2
Easy rider
 
Silver's Avatar
 
Join Date: 11 2005
Location: tristeza
Age: 32
Posts: 1,082
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default Re: Морской бой

U menya isxodnikov net (uveren chto na internete ix budet kucha), no yesli budut konkretnye voprosy po povodu implementacii, postni zdes'.
Reply With Quote
Old 01.08.2006, 08:06   #3
The splendid
 
AvDav's Avatar
 
Join Date: 07 2004
Location: Universe
Age: 36
Posts: 3,413
Downloads: 22
Uploads: 0
Reputation: 222 | 3
Default Re: Морской бой

kak chestno uchitsya molodej po spec. CS
Reply With Quote
Old 01.08.2006, 10:20   #4
★★★★★★★★★★★★★
 
Hrach_Techie's Avatar
 
Join Date: 08 2004
Location: London, UK
Age: 38
Posts: 16,531
Downloads: 8
Uploads: 0
Reputation: 482 | 6
Default Re: Морской бой

Quote:
Originally Posted by Betty5
Помогите с нахождением исходника для игры "Морской бой" на языке visual C++(только в консоле). Спасибо заранее . Может у кого-то был опыт в написании и сможет поделиться, буду премного благодарна!!
Code:
class Board  
{
public:
    Board(int x, int y);
    Board(int size);
    ~Board();

    int len() { return length;}
    int wid() { return width;}

    bool isEmpty(int x, int y);
    int get(int x, int y);
    void set(int piece, int x, int y);
    void remove(int x, int y);

private:
    int length, width, *cells;
    void reset();
};
-------------------------
// Board.cpp: implementation of the Board class.
//
//////////////////////////////////////////////////////////////////////

#include "Board.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Board::Board(int x, int y): length(x), width(y), cells(NULL)
{
    reset();
}

Board::Board(int size) : length(size), width(size), cells(NULL)
{
    reset();
}
 
void Board::reset()
{
    if (cells != NULL) delete [] cells;
    cells = new int[length * width];
    for(int i = 0; i < length * width; i++)
        cells[i] = 0;
}

Board::~Board()
{
    delete [] cells;
}

bool Board::isEmpty(int x, int y)
{
   return !get(x, y);
}

int Board::get(int x, int y)
{
   return cells[length * y + x];
}

void Board::set(int piece, int x, int y)
{
    if (isEmpty(x, y)) cells[length * y + x] = piece;
}

void Board::remove(int x, int y)
{
   cells[length * y + x] = 0;
}

----------------------------------
#include "Board.h"
#include <string>
#include <iostream>
#include <ctime>
using namespace std;

class BattleShip  
{
public:
    BattleShip(int gameSize) : sea(gameSize), score(0), ships(gameSize) { play(); };

    void start();
    void play();
    void display(char x, int y);
    int getScore() { return score; };
    string strike(char x, int y);

private:
    Board sea;
    int score, ships;
};
---------------------------
// BattleShip.cpp: implementation of the BattleShip class.
//
//////////////////////////////////////////////////////////////////////

#include "BattleShip.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

string BattleShip::strike(char x, int y)
{
    int col = x - 'a', row = y - 1;
    
    score++;
    if (sea.get(col, row) > 0) 
        return "Stupid Strike :)";
    if (sea.get(col, row) < 0) {
        sea.remove(col, row);
        sea.set(10, col, row);
        ships--;
        return "One is Killed :(";
    }
    sea.set(1, col, row);
    return "Try Again :/";
}

void BattleShip::start()
{
    int col, row;
    srand(time(0));
    for (int ship = 1; ship <= sea.len(); ship++) {
        do {
            col = rand() % sea.len();
            row = rand() % sea.wid();
        } while (sea.get(col, row) < 0);
        sea.set(-1, col, row);
    }
}

void BattleShip::display(char x, int y)
{
    string show = strike(x, y) + "\n\n";
    for (int row = 0; row < sea.len(); row++) {
        for (int col = 0; col < sea.wid(); col++) {
            if (sea.get(col, row) < 0 || sea.isEmpty(col, row)) show += ". ";
            else if (sea.get(col, row) > 1) show += "X ";
            else show += "O ";
        }
        show += "\n";
    }
    cout << show << endl;
}    

void BattleShip:: display()
{
    char x;
    int y;
    
    start();
    do {
        cin >> x >> y;
        display(x, y);
    } while (ships > 0);
    cout << "Your score is: " << getScore() << endl;
}
------------------------
#include "BattleShip.h"

void main()
{
    BattleShip game(4);
}
************************
Reply With Quote
Old 01.08.2006, 10:49   #5
The splendid
 
AvDav's Avatar
 
Join Date: 07 2004
Location: Universe
Age: 36
Posts: 3,413
Downloads: 22
Uploads: 0
Reputation: 222 | 3
Default Re: Морской бой

Вместо указателя на инт мона через вектор векторов держать безо всяких нью/делит. Плюс проверка на Нуль во время удаления не нужна - удаление Нуль указателя вполне в рамках правил.
Reply With Quote
Old 01.08.2006, 14:18   #6
★★★★★★★★★★★★★
 
Hrach_Techie's Avatar
 
Join Date: 08 2004
Location: London, UK
Age: 38
Posts: 16,531
Downloads: 8
Uploads: 0
Reputation: 482 | 6
Default Re: Морской бой

Quote:
Originally Posted by AvDav
Вместо указателя на инт мона через вектор векторов держать безо всяких нью/делит. Плюс проверка на Нуль во время удаления не нужна - удаление Нуль указателя вполне в рамках правил.
да знаю дорогой
просто когдла я е писал
я не знал про вектора нифига
это из моих прошлогодних домашних
заданий для вводного курса в С
Reply With Quote
Old 02.08.2006, 09:00   #7
Младенец
 
Join Date: 08 2006
Location: Odessa ukraine
Posts: 7
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default Re: Морской бой

Да, еще раз спасибо за код игры, но вот есть один и более недочетов, а именно в header файле BattleShip.h описаны функции void play();
int getScore(); функция play() вызывается в конструкторе класса BattleShip, да все хорошо, но реализации этих функций нет, как нет. Кроме того, в классе том же BattleShip описана одна функция
void display(char x, int x)жа в файле BattleShip.cpp вызывается кроме функции void display с этими параметрами, еще и функция void dislay()- без параметров. А как понимаете, это ambiguos, и ошибочка, так как есть описание функции без объявления. В общем, это так на первый взгляд, что я могла найти, в прочем еще так глубоко не просматривала, но все же верю, что мне Вы переслали, за что Вам все равно большое спасибо, недоконченный , неполный код, надеюсь, что все же смогу получить остальную часть, спасибо за помощь, очень помагаете!!! Буду ждать ответа, еще раз пасибки!!!Betty5

Last edited by Betty5; 03.08.2006 at 06:27.
Reply With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 14:03.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.