Click here to Skip to main content
15,892,298 members
Articles / Programming Languages / C++

A Fast Version of Conway's Game of Life with Thread and DirectX Draw

Rate me:
Please Sign up or sign in to vote.
4.42/5 (14 votes)
14 Apr 2009CPOL4 min read 57.1K   904   30  
A fast version of Conway's Game of Life with thread and DirectX draw
// SortAndLifeDoc.h : interface of the CSortAndLifeDoc class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_SORTANDLIFEDOC_H__C07E037C_FEA6_47DF_B8BD_EA868E24B765__INCLUDED_)
#define AFX_SORTANDLIFEDOC_H__C07E037C_FEA6_47DF_B8BD_EA868E24B765__INCLUDED_

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


class CSortAndLifeDoc : public CDocument
{
protected: // create from serialization only
	CSortAndLifeDoc();
	DECLARE_DYNCREATE(CSortAndLifeDoc)
// Attributes
public:
	BOOL	 m_bGrid;
	int		 m_nSleep;
	COLORREF m_barColor;
	COLORREF m_cellColor;
	int		 m_nNumberArray[CONST_INT_BARNUMBER];
	char	 m_cCellArray[CONST_INT_GRIDNUMBER][CONST_INT_GRIDNUMBER];
	char	 m_cShadowCellArray[CONST_INT_GRIDNUMBER][CONST_INT_GRIDNUMBER];
	static   int m_bDocNumber;
	CRITICAL_SECTION	 m_cr;
// Operations
public:
	inline  void LockData(){EnterCriticalSection(&m_cr);}
	inline  void UnLockData(){LeaveCriticalSection(&m_cr);};
	void	StepGeneration();
	int		Neighbors(int y,int x);
	void	CreateCell(int x, int y);
	void	SetNewRandom();
	void	GetRandomNumberArray(void *m_nNumberArray,int nSize);
	void    initializeCellLife();
	void	Clear();
	void	CopyArray(char *doubleArray);

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CSortAndLifeDoc)
	public:
	virtual BOOL OnNewDocument();
	virtual void Serialize(CArchive& ar);
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CSortAndLifeDoc();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generated message map functions
protected:
	//{{AFX_MSG(CSortAndLifeDoc)
		// NOTE - the ClassWizard will add and remove member functions here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_SORTANDLIFEDOC_H__C07E037C_FEA6_47DF_B8BD_EA868E24B765__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
Founder SmartTick Software Inc.
Canada Canada
Jerry Jiang(BOLIANG JIANG)

A passionate software developer since 1992

Education:Master of Computer Science.

jerry@smarttick.com

Comments and Discussions