Click here to Skip to main content
15,886,813 members
Articles / Programming Languages / C++

The Object-Oriented Text Star Trek Game in C++

Rate me:
Please Sign up or sign in to vote.
4.74/5 (10 votes)
6 Aug 2008CPOL6 min read 42.4K   816   34  
The Classic Super Star Trek Game rewritten in modern Object-oriented C++
/* ---------------------------------------------------------
Super Star Trek
C++ Port Copyright 2008, James M. Curran    <jamescurran@mvps.org>
based upon the C Port, Copyright 1996, Chris Nystrom
based upon the PC Basic port, Copyright 1978, Workman Publishing
based upon the HP Basic original, PD circa 1971, Mike Mayfield

C++ code licensed using the Code Project Open License v1.02
http://www.codeproject.com/info/cpol10.aspx
 -------------------------------------------------------------- */
// ShipSystem.h: interface for the ShipSystem class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SHIPSYSTEM_H__77A88B29_0B3D_11D1_9963_00AA0020E483__INCLUDED_)
#define AFX_SHIPSYSTEM_H__77A88B29_0B3D_11D1_9963_00AA0020E483__INCLUDED_


#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#include "output.h"

#include <string>
using	std::string;

class	Ship;

class ShipSystem  
{
public:
	bool Use();
	bool DoCommand();
	ShipSystem(Ship& s);

	virtual string	name() const = 0;
	virtual string	keyword() const = 0;
	virtual string	description() const {return(keyword() + " - " + name());}

	// Does the actual work of the ship system.  
	// returns true if game should continue.
	virtual bool	activate() { cout << "not implemented yet." << endl; return(true);}


	bool	isFunctional()	const {return ( nDamageLevel >= 0.0);}
	virtual bool	isDamaged()		const {return ( nDamageLevel <  0.0);}
	void isDamaged(double damage) { RepairDamage(-damage); }

	void RepairDamage(double d);
	double AcceptCourse(string officer);
	static void ReportDamage(ShipSystem& system);
	static double TimeToFix(ShipSystem& system);
	static void FixDamage(ShipSystem& system);

private:
	double	nDamageLevel;

protected:
	Ship&	ship;

};



#endif // !defined(AFX_SHIPSYSTEM_H__77A88B29_0B3D_11D1_9963_00AA0020E483__INCLUDED_)

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) NovelTheory LLC
United States United States
20+ years as a developer : Assembly, C, C++ and C# (in that order) with sidelines in ASP/VBScript, ASP.Net, JavaScript, Perl, QuickBasic, VisualBasic, plus a few others which I'm not going to mention because if I did someone might ask me to use them again (shudder)

Microsoft MVP in VC++ (1994-2004)

I also run www.NJTheater.com as a hobby.

Full resume & stuff at NovelTheory.com

Underused blog at HonestIllusion.com

Comments and Discussions