 |
Морской бой |
 |
01.08.2006, 06:56
|
#1
|
Младенец
Join Date: 08 2006
Location: Odessa ukraine
Posts: 7
Rep Power: 0
|
Морской бой
  Помогите с нахождением исходника для игры "Морской бой" на языке visual C++(только в консоле). Спасибо заранее . Может у кого-то был опыт в написании и сможет поделиться, буду премного благодарна!!
|
|
|
 |
Re: Морской бой |
 |
01.08.2006, 07:03
|
#2
|
Easy rider
Join Date: 11 2005
Location: tristeza
Age: 40
Posts: 1,082
Rep Power: 0
|
Re: Морской бой
U menya isxodnikov net (uveren chto na internete ix budet kucha), no yesli budut konkretnye voprosy po povodu implementacii, postni zdes'.
|
|
|
 |
Re: Морской бой |
 |
01.08.2006, 07:06
|
#3
|
Ego coder
Join Date: 07 2004
Location: Yerevan, Armenia
Age: 44
Posts: 3,738
Rep Power: 5
|
Re: Морской бой
kak chestno uchitsya molodej po spec. CS
__________________
Каждый сам кузнец своего счастья, и несчастья тоже.
|
|
|
 |
Re: Морской бой |
 |
01.08.2006, 09:20
|
#4
|
★★★★★★★★★★★★★
Join Date: 08 2004
Location: London, UK
Age: 46
Posts: 16,531
Rep Power: 8
|
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);
}
************************
__________________
Мадмазель, Медам, Месье! "Глория" меняет курс и направляется в Кейптаун! Кому это не нравится будет расстрелян на месте. (с)
http://texneg.livejournal.com
|
|
|
 |
 |
Re: Морской бой |
 |
01.08.2006, 09:49
|
#5
|
Ego coder
Join Date: 07 2004
Location: Yerevan, Armenia
Age: 44
Posts: 3,738
Rep Power: 5
|
Re: Морской бой
Вместо указателя на инт мона через вектор векторов держать безо всяких нью/делит. Плюс проверка на Нуль во время удаления не нужна - удаление Нуль указателя вполне в рамках правил.
__________________
Каждый сам кузнец своего счастья, и несчастья тоже.
|
|
|
 |
Re: Морской бой |
 |
01.08.2006, 13:18
|
#6
|
★★★★★★★★★★★★★
Join Date: 08 2004
Location: London, UK
Age: 46
Posts: 16,531
Rep Power: 8
|
Re: Морской бой
Quote:
Originally Posted by AvDav
Вместо указателя на инт мона через вектор векторов держать безо всяких нью/делит. Плюс проверка на Нуль во время удаления не нужна - удаление Нуль указателя вполне в рамках правил.
|
да знаю дорогой
просто когдла я е писал
я не знал про вектора нифига
это из моих прошлогодних домашних
заданий для вводного курса в С
__________________
Мадмазель, Медам, Месье! "Глория" меняет курс и направляется в Кейптаун! Кому это не нравится будет расстрелян на месте. (с)
http://texneg.livejournal.com
|
|
|
 |
Re: Морской бой |
 |
02.08.2006, 08:00
|
#7
|
Младенец
Join Date: 08 2006
Location: Odessa ukraine
Posts: 7
Rep Power: 0
|
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 05:27.
|
|
|
 |
All times are GMT. The time now is 10:41. |
|
|