AKB Forums

Go Back   AKB Forums > Technical sections > Algorithms
Home Register Blogs FAQ Members List Calendar Downloads Arcade Mark Forums Read

Algorithms The source of algorithms for your project

Troubles when posting message? Click here! :: Проблемы с отправлением сообщения? Нажмите сюда!

Reply
 
LinkBack Thread Tools Display Modes
Old Aug 1, 2006, 06:56   #1
Младенец
 
Join Date: Aug 2006
Location: Odessa ukraine
Posts: 7
Rep Power: 0
Reputation: 10
Морской бой

Помогите с нахождением исходника для игры "Морской бой" на языке visual C++(только в консоле). Спасибо заранее . Может у кого-то был опыт в написании и сможет поделиться, буду премного благодарна!!
Betty5 is offline   Reply With Quote Quote selected
Old Aug 1, 2006, 07:03   #2
Easy rider
 
Silver's Avatar
 
Join Date: Nov 2005
Location: tristeza
Posts: 1,087
Rep Power: 3
Reputation: 10
Send a message via ICQ to Silver
Re: Морской бой

U menya isxodnikov net (uveren chto na internete ix budet kucha), no yesli budut konkretnye voprosy po povodu implementacii, postni zdes'.
__________________




You must spread before giving to Silver again.
Silver is offline   Reply With Quote Quote selected
Old Aug 1, 2006, 07:06   #3
Дикообраз-безобраз
 
AvDav's Avatar
 
Join Date: Jul 2004
Location: У самого синего моря
Posts: 2,508
Rep Power: 4
Reputation: 44
Send a message via ICQ to AvDav
Re: Морской бой

kak chestno uchitsya molodej po spec. CS
__________________
Forza Alb-Violeţii.
AvDav is offline   Reply With Quote Quote selected
Old Aug 1, 2006, 09:20   #4
джаз-оркестр
 
Hrach_Techie's Avatar
 
Join Date: Aug 2004
Location: америка
Posts: 16,224
Rep Power: 7
Reputation: 296
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);
}
************************
__________________

Hrach_Techie is offline   Reply With Quote Quote selected
Old Aug 1, 2006, 09:49   #5
Дикообраз-безобраз
 
AvDav's Avatar
 
Join Date: Jul 2004
Location: У самого синего моря
Posts: 2,508
Rep Power: 4
Reputation: 44
Send a message via ICQ to AvDav
Re: Морской бой

Вместо указателя на инт мона через вектор векторов держать безо всяких нью/делит. Плюс проверка на Нуль во время удаления не нужна - удаление Нуль указателя вполне в рамках правил.
__________________
Forza Alb-Violeţii.
AvDav is offline   Reply With Quote Quote selected
Old Aug 1, 2006, 13:18   #6
джаз-оркестр
 
Hrach_Techie's Avatar
 
Join Date: Aug 2004
Location: америка
Posts: 16,224
Rep Power: 7
Reputation: 296
Re: Морской бой

Quote:
Originally Posted by AvDav
Вместо указателя на инт мона через вектор векторов держать безо всяких нью/делит. Плюс проверка на Нуль во время удаления не нужна - удаление Нуль указателя вполне в рамках правил.
да знаю дорогой
просто когдла я е писал
я не знал про вектора нифига
это из моих прошлогодних домашних
заданий для вводного курса в С
__________________

Hrach_Techie is offline   Reply With Quote Quote selected
Old Aug 2, 2006, 08:00   #7
Младенец
 
Join Date: Aug 2006
Location: Odessa ukraine
Posts: 7
Rep Power: 0
Reputation: 10
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 : Aug 3, 2006 at 05:27.
Betty5 is offline   Reply With Quote Quote selected
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Интересные факты 2 PartiZankA General 2 Apr 2, 2006 08:13
ЗАПИСКИ БОЕВОГО ДЕЛЬФИНА DaNYer Fun 0 Mar 22, 2005 04:17
А ПРАВДА ЛИ, ЧТО СПЕРМАТАЗОИДЫ ВЫБИРАЮТСЯ ИЗ ПРЕЗЕРВАТИВА? Gates Fun 1 Nov 29, 2004 17:13
Наступление на Багдад началось Mono News 25 Oct 21, 2004 18:54
"...девочка лет пяти в красивом оранжевом платье" groul History and Politics 3 Apr 2, 2003 23:14


All times are GMT. The time now is 12:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
This board was founded on September 29, 2001
Powered by Viper Internet

Affordable Web Hosting | ParevNet

Buy text link