├── src ├── utils.h ├── CChaine.h ├── Csprite.h ├── utils.cpp ├── Canimation.h ├── Csprite.cpp ├── asciianim.h ├── bconio.cpp ├── wconio.cpp ├── Canimation.cpp ├── asciianim.cpp ├── SaverWindow.cpp ├── asciiquarium.cpp ├── asciiquarium.suo ├── res │ ├── cursor1.cur │ ├── cursor2.cur │ ├── asciiquarium.ico │ └── asciiquarium.rc2 ├── asciiquariumDlg.cpp ├── stdafx.cpp ├── wconio.h ├── ChronoPrecis.h ├── prog.manifest.xml ├── asciiquarium.h ├── asciiquarium.sln ├── viewport.h ├── resource.h ├── targetver.h ├── bconio.h ├── asciiquariumDlg.h ├── ChronoPrecis.cpp ├── SaverWindow.h ├── stdafx.h ├── CChaine.cpp ├── viewport.cpp ├── ReadMe.txt ├── asciiquarium.rc └── asciiquarium.vcproj └── README.md /src/utils.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/utils.h -------------------------------------------------------------------------------- /src/CChaine.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/CChaine.h -------------------------------------------------------------------------------- /src/Csprite.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/Csprite.h -------------------------------------------------------------------------------- /src/utils.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/utils.cpp -------------------------------------------------------------------------------- /src/Canimation.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/Canimation.h -------------------------------------------------------------------------------- /src/Csprite.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/Csprite.cpp -------------------------------------------------------------------------------- /src/asciianim.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/asciianim.h -------------------------------------------------------------------------------- /src/bconio.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/bconio.cpp -------------------------------------------------------------------------------- /src/wconio.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/wconio.cpp -------------------------------------------------------------------------------- /src/Canimation.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/Canimation.cpp -------------------------------------------------------------------------------- /src/asciianim.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/asciianim.cpp -------------------------------------------------------------------------------- /src/SaverWindow.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/SaverWindow.cpp -------------------------------------------------------------------------------- /src/asciiquarium.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/asciiquarium.cpp -------------------------------------------------------------------------------- /src/asciiquarium.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/asciiquarium.suo -------------------------------------------------------------------------------- /src/res/cursor1.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/res/cursor1.cur -------------------------------------------------------------------------------- /src/res/cursor2.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/res/cursor2.cur -------------------------------------------------------------------------------- /src/asciiquariumDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/asciiquariumDlg.cpp -------------------------------------------------------------------------------- /src/res/asciiquarium.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rgoring/asciiquarium/HEAD/src/res/asciiquarium.ico -------------------------------------------------------------------------------- /src/stdafx.cpp: -------------------------------------------------------------------------------- 1 | 2 | // stdafx.cpp : source file that includes just the standard includes 3 | // asciiquarium.pch will be the pre-compiled header 4 | // stdafx.obj will contain the pre-compiled type information 5 | 6 | #include "stdafx.h" 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/res/asciiquarium.rc2: -------------------------------------------------------------------------------- 1 | // 2 | // asciiquarium.RC2 - resources Microsoft Visual C++ does not edit directly 3 | // 4 | 5 | #ifdef APSTUDIO_INVOKED 6 | #error this file is not editable by Microsoft Visual C++ 7 | #endif //APSTUDIO_INVOKED 8 | 9 | 10 | ///////////////////////////////////////////////////////////////////////////// 11 | // Add manually edited resources here... 12 | 13 | ///////////////////////////////////////////////////////////////////////////// 14 | -------------------------------------------------------------------------------- /src/wconio.h: -------------------------------------------------------------------------------- 1 | 2 | #if !defined(WCONIO_H_INCLUDED) 3 | #define WCONIO_H_INCLUDED 4 | 5 | 6 | 7 | bool initWindow(HWND hwnd, BOOL parentBackgroud /*if possible*/); 8 | void closeWindow(void); 9 | 10 | void setWindowcursor(int x, int y); 11 | void setWindowTxtcolor(int color_fond); 12 | void outputWindowTxt(char car); 13 | 14 | void clrWindow(void); 15 | 16 | void DisplayWindow(int n); 17 | 18 | void setCurrentWindow(int n); 19 | void gettaille_Window( int *xSize, int *ySize); 20 | 21 | #endif // defined(WCONIO_H_INCLUDED) 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # asciiquarium 2 | Asciiquarium screensaver for Windows 3 | 4 | Created by Jean Sommer, contributions by Russell Goring 5 | 6 | Kirk Baucom originally wrote the ASCIIQuarium animation in Perl. His website, and the original ASCIIQuarium, 7 | with links to other ports can be found here: https://robobunny.com/projects/asciiquarium/html/. There’s also a 8 | freshmeat page for the Perl version of the program here: http://freshmeat.sourceforge.net/projects/asciiquarium 9 | 10 | J. Sommer took this idea and created a Windows screensaver out of it. This is the source for the Windows version. 11 | -------------------------------------------------------------------------------- /src/ChronoPrecis.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #ifndef INC_CHRONO_H 4 | #define INC_CHRONO_H 5 | 6 | 7 | class Chrono 8 | { 9 | public: 10 | Chrono(); 11 | ~Chrono(); 12 | 13 | void Start(void); 14 | ULONG Stop(void); // renvoi le tps en ms 15 | 16 | ULONG GetTemps_ms(void); 17 | ULONG GetTemps_micros(void); 18 | 19 | BOOL EstDisponible(void); 20 | 21 | 22 | ULONG Chrono::GetElapsed_micros(); 23 | ULONG Chrono::GetElapsed_ms(); 24 | 25 | private: 26 | BOOL dispo; 27 | __int64 Frequence; 28 | LARGE_INTEGER count1, count2; 29 | __int64 t0; 30 | __int64 t1; 31 | 32 | }; 33 | 34 | 35 | 36 | 37 | #endif // INC_CHRONO_H ////////////////////////// 38 | -------------------------------------------------------------------------------- /src/prog.manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 10 | messagerie instantanee 11 | 12 | 13 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/asciiquarium.h: -------------------------------------------------------------------------------- 1 | 2 | // asciiquarium.h : main header file for the PROJECT_NAME application 3 | // 4 | 5 | #pragma once 6 | 7 | #ifndef __AFXWIN_H__ 8 | #error "include 'stdafx.h' before including this file for PCH" 9 | #endif 10 | 11 | #include "resource.h" // main symbols 12 | #include "SaverWindow.h" 13 | 14 | 15 | // CasciiquariumApp: 16 | // See asciiquarium.cpp for the implementation of this class 17 | // 18 | 19 | class CasciiquariumApp : public CWinAppEx 20 | { 21 | public: 22 | CasciiquariumApp(); 23 | 24 | // Overrides 25 | public: 26 | virtual BOOL InitInstance(); 27 | virtual int ExitInstance( ); 28 | 29 | // Implementation 30 | 31 | DECLARE_MESSAGE_MAP() 32 | 33 | private: 34 | CSaverWindow* m_pSaverWindow; 35 | }; 36 | 37 | extern CasciiquariumApp theApp; -------------------------------------------------------------------------------- /src/asciiquarium.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 10.00 3 | # Visual Studio 2008 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asciiquarium", "asciiquarium.vcproj", "{71CA1CC9-8EBF-4EE8-A21E-42E32BD08B95}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {71CA1CC9-8EBF-4EE8-A21E-42E32BD08B95}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {71CA1CC9-8EBF-4EE8-A21E-42E32BD08B95}.Debug|Win32.Build.0 = Debug|Win32 14 | {71CA1CC9-8EBF-4EE8-A21E-42E32BD08B95}.Release|Win32.ActiveCfg = Release|Win32 15 | {71CA1CC9-8EBF-4EE8-A21E-42E32BD08B95}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /src/viewport.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #if !defined(VIEWPORT_H_INCLUDED) 4 | #define VIEWPORT_H_INCLUDED 5 | 6 | 7 | enum COLORS 8 | { 9 | BLACK, /* dark colors */ 10 | BLUE, 11 | GREEN, 12 | CYAN, 13 | RED, 14 | MAGENTA, 15 | BROWN, 16 | LIGHTGRAY, 17 | DARKGRAY, /* light colors */ 18 | LIGHTBLUE, 19 | LIGHTGREEN, 20 | LIGHTCYAN, 21 | LIGHTRED, 22 | LIGHTMAGENTA, 23 | YELLOW, 24 | WHITE 25 | }; 26 | 27 | 28 | bool initViewPort(HWND hwnd, BOOL parentBackgroud /*if possible*/); 29 | void closeViewPort(void); 30 | 31 | void SetCurrentViewportBuffer(int n); 32 | void DisplayViewportBuffer(int n); 33 | 34 | 35 | void CreateViewportBuffer(int n); 36 | 37 | void SetViewportBufferProps(void); 38 | void SetViewportInputProps(void); 39 | 40 | 41 | void getviewport_size( int *xSize, int *ySize); 42 | void clearviewport(void); 43 | int getviewportnbevenement(void); 44 | 45 | void setviewportcursor(int x, int y); 46 | void setviewportcursorcolor(int color_txt); 47 | void outputviewport(char car); 48 | 49 | 50 | #endif // defined(VIEWPORT_H_INCLUDED) -------------------------------------------------------------------------------- /src/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by asciiquarium.rc 4 | // 5 | #define IDM_ABOUTBOX 0x0010 6 | #define IDD_ABOUTBOX 100 7 | #define IDS_ABOUTBOX 101 8 | #define IDD_ASCIIQUARIUM_DIALOG 102 9 | #define IDR_MAINFRAME 128 10 | #define IDC_CURSOR1 129 11 | #define IDC_CURSOR2 130 12 | #define ID_NBPOISSON 1002 13 | #define IDC_RECT 1003 14 | #define IDC_EDABOUT 1004 15 | #define IDC_CREDIT 1004 16 | #define IDC_CHECK1 1005 17 | #define IDC_CHECKWATER 1005 18 | #define IDC_CHECKWATER2 1006 19 | #define IDC_CHECKQUITESC 1006 20 | #define IDC_EDIT1 1007 21 | #define IDC_KEYSEQ 1007 22 | 23 | // Next default values for new objects 24 | // 25 | #ifdef APSTUDIO_INVOKED 26 | #ifndef APSTUDIO_READONLY_SYMBOLS 27 | #define _APS_NEXT_RESOURCE_VALUE 131 28 | #define _APS_NEXT_COMMAND_VALUE 32771 29 | #define _APS_NEXT_CONTROL_VALUE 1008 30 | #define _APS_NEXT_SYMED_VALUE 101 31 | #endif 32 | #endif 33 | -------------------------------------------------------------------------------- /src/targetver.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | // The following macros define the minimum required platform. The minimum required platform 5 | // is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run 6 | // your application. The macros work by enabling all features available on platform versions up to and 7 | // including the version specified. 8 | 9 | // Modify the following defines if you have to target a platform prior to the ones specified below. 10 | // Refer to MSDN for the latest info on corresponding values for different platforms. 11 | #ifndef WINVER // Specifies that the minimum required platform is Windows Vista. 12 | #define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows. 13 | #endif 14 | 15 | #ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. 16 | #define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. 17 | #endif 18 | 19 | #ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98. 20 | #define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. 21 | #endif 22 | 23 | #ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0. 24 | #define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE. 25 | #endif 26 | 27 | -------------------------------------------------------------------------------- /src/bconio.h: -------------------------------------------------------------------------------- 1 | 2 | #if !defined(BCONIO_H_INCLUDED) 3 | #define BCONIO_H_INCLUDED 4 | 5 | #ifndef _BCONIO_C_ 6 | extern int _wscroll; 7 | extern int directvideo; 8 | #endif 9 | 10 | bool initconsole(void); 11 | void closeconsole(void); 12 | 13 | void setCurrentBuffer(int n); 14 | void displayBuffer(int n); 15 | 16 | void CreateBuffer(int n); 17 | void SetBufferProps(void); 18 | void SetInputProps(void); 19 | 20 | 21 | 22 | void putcar(char car); 23 | 24 | 25 | int nbevenement(void); 26 | 27 | 28 | 29 | void gotoxy(int x, int y); 30 | int wherex(void); 31 | int wherey(void); 32 | 33 | #define _NOCURSOR 0 34 | #define _NORMALCURSOR 1 35 | 36 | typedef unsigned short WORD; 37 | 38 | void _setcursortype(int type); 39 | 40 | void clrscr(void); 41 | 42 | enum bCOLORS 43 | { 44 | bBLACK, /* dark colors */ 45 | bBLUE, 46 | bGREEN, 47 | bCYAN, 48 | bRED, 49 | bMAGENTA, 50 | bBROWN, 51 | bLIGHTGRAY, 52 | bDARKGRAY, /* light colors */ 53 | bLIGHTBLUE, 54 | bLIGHTGREEN, 55 | bLIGHTCYAN, 56 | bLIGHTRED, 57 | bLIGHTMAGENTA, 58 | bYELLOW, 59 | bWHITE 60 | }; 61 | 62 | void textbackground(int color_fond); 63 | void textcolor(int color_fond); 64 | char *copy_screen( void ); 65 | WORD *copy_screenAttrib(void); 66 | 67 | 68 | void gettaille_ecran( int *xSize, int *ySize); 69 | 70 | void taille_ecran( int xSize, int ySize); 71 | 72 | //void window( int left, int top, int right, int bottom); 73 | 74 | #endif // defined(BCONIO_H_INCLUDED) 75 | -------------------------------------------------------------------------------- /src/asciiquariumDlg.h: -------------------------------------------------------------------------------- 1 | 2 | // asciiquariumDlg.h : header file 3 | // 4 | 5 | #pragma once 6 | 7 | #include "asciianim.h" 8 | #include "afxwin.h" 9 | 10 | // CasciiquariumDlg dialog 11 | class CasciiquariumDlg : public CDialog 12 | { 13 | // Construction 14 | public: 15 | CasciiquariumDlg(CWnd* pParent = NULL); // standard constructor 16 | 17 | // Dialog Data 18 | enum { IDD = IDD_ASCIIQUARIUM_DIALOG }; 19 | 20 | protected: 21 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 22 | 23 | 24 | // Implementation 25 | protected: 26 | HICON m_hIcon; 27 | 28 | // Generated message map functions 29 | virtual BOOL OnInitDialog(); 30 | afx_msg void OnClose( ); 31 | 32 | virtual void OnOK(); 33 | virtual void OnCancel(); 34 | virtual BOOL PreTranslateMessage(MSG* pMsg); 35 | 36 | afx_msg void OnSysCommand(UINT nID, LPARAM lParam); 37 | afx_msg void OnPaint(); 38 | afx_msg HCURSOR OnQueryDragIcon(); 39 | DECLARE_MESSAGE_MAP() 40 | 41 | 42 | Caquarium aqua; 43 | int espX,espY; 44 | int initialCX,initialCY; 45 | 46 | public: 47 | int m_nbpoisson; 48 | BOOL m_SansEau; 49 | BOOL m_ExitOnlyOnESC; 50 | afx_msg void OnTimer(UINT_PTR nIDEvent); 51 | afx_msg void OnSize(UINT nType, int cx, int cy); 52 | afx_msg void OnSizing(UINT fwSide, LPRECT pRect); 53 | 54 | CString m_Credit; 55 | afx_msg void OnBnClickedCheckwater(); 56 | CString m_keySeq; 57 | private: 58 | time_t m_saisie_lasttimekbd; 59 | #define MAXSAISIE 20 60 | int m_saisie_car[MAXSAISIE]; 61 | int m_saisie_nbcar; 62 | bool keyseq_hasFocus; 63 | public: 64 | CEdit m_edtKeySeq; 65 | afx_msg void OnEnUpdateKeyseq(); 66 | }; 67 | -------------------------------------------------------------------------------- /src/ChronoPrecis.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "stdafx.h" 3 | //#include 4 | 5 | #include "ChronoPrecis.h" 6 | 7 | 8 | 9 | 10 | Chrono::Chrono() 11 | { 12 | LARGE_INTEGER Frequency; 13 | 14 | dispo = QueryPerformanceFrequency(&Frequency)!=0; 15 | Frequence = Frequency.QuadPart; 16 | 17 | Start(); 18 | } 19 | 20 | Chrono::~Chrono() 21 | { 22 | } 23 | 24 | BOOL Chrono::EstDisponible(void) 25 | { 26 | return(dispo); 27 | } 28 | 29 | void Chrono::Start(void) 30 | { 31 | QueryPerformanceCounter( &count1 ); 32 | count2 = count1; 33 | t0=count1.QuadPart; 34 | t1=count2.QuadPart; 35 | } 36 | 37 | ULONG Chrono::Stop(void) 38 | { 39 | QueryPerformanceCounter( &count2 ); 40 | t1=count2.QuadPart; 41 | return( GetTemps_ms() ); 42 | } 43 | 44 | 45 | ULONG Chrono::GetTemps_ms(void) 46 | { 47 | if (!dispo) return(0); 48 | 49 | 50 | ULONG duree = (ULONG)( (t1-t0)*1000/Frequence ); // en ms 51 | 52 | return(duree); 53 | } 54 | 55 | ULONG Chrono::GetTemps_micros(void) 56 | { 57 | if (!dispo) return(0); 58 | 59 | ULONG duree = (ULONG)( (t1-t0)*1000000/Frequence ); // en micro-s 60 | 61 | return(duree); 62 | } 63 | 64 | ULONG Chrono::GetElapsed_micros(void) 65 | { 66 | if (!dispo) return(0); 67 | 68 | QueryPerformanceCounter( &count2 ); 69 | t1=count2.QuadPart; 70 | ULONG duree = (ULONG)( (t1-t0)*1000000/Frequence ); // en micro-s 71 | 72 | return(duree); 73 | } 74 | 75 | ULONG Chrono::GetElapsed_ms(void) 76 | { 77 | if (!dispo) return(0); 78 | 79 | QueryPerformanceCounter( &count2 ); 80 | t1=count2.QuadPart; 81 | ULONG duree = (ULONG)( (t1-t0)*1000/Frequence ); // en ms 82 | 83 | return(duree); 84 | } 85 | 86 | -------------------------------------------------------------------------------- /src/SaverWindow.h: -------------------------------------------------------------------------------- 1 | #if !defined(AFX_SAVERWINDOW_H__EED950BA_AC86_4212_9420_C029DFEDC13E__INCLUDED_) 2 | #define AFX_SAVERWINDOW_H__EED950BA_AC86_4212_9420_C029DFEDC13E__INCLUDED_ 3 | 4 | #if _MSC_VER > 1000 5 | #pragma once 6 | #endif // _MSC_VER > 1000 7 | // SaverWindow.h : header file 8 | // 9 | #include 10 | 11 | #include "asciianim.h" 12 | 13 | 14 | ///////////////////////////////////////////////////////////////////////////// 15 | // CSaverWindow window 16 | 17 | class CSaverWindow : public CWnd 18 | { 19 | // Construction 20 | public: 21 | CSaverWindow(); 22 | HBRUSH m_hBackgroundBrush; 23 | CRect rect; 24 | // Attributes 25 | public: 26 | BOOL m_bPreview; 27 | CRect m_rect; 28 | 29 | int Height() { return m_rect.Height(); } 30 | int Width() { return m_rect.Width(); } 31 | // Operations 32 | public: 33 | afx_msg int Create( HWND hwndParent ); 34 | afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 35 | afx_msg void OnClose( ); 36 | afx_msg void OnShowWindow( BOOL bShow, UINT nStatus ); 37 | 38 | // Overrides 39 | // ClassWizard generated virtual function overrides 40 | //{{AFX_VIRTUAL(CSaverWindow) 41 | protected: 42 | virtual LRESULT WindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam); 43 | 44 | //}}AFX_VIRTUAL 45 | 46 | // Implementation 47 | public: 48 | virtual ~CSaverWindow(); 49 | 50 | // CAlphaBlend m_transparent; 51 | POINT positionSouris; 52 | HCURSOR hblank_curseur, h2; 53 | 54 | int m_nbpoissondesire; 55 | int m_sansEau; 56 | int m_exitOnEsc; 57 | 58 | Caquarium aqua; 59 | // Generated message map functions 60 | protected: 61 | //{{AFX_MSG(CSaverWindow) 62 | afx_msg void OnPaint(); 63 | //}}AFX_MSG 64 | DECLARE_MESSAGE_MAP() 65 | private: 66 | time_t m_saisie_lasttimekbd; 67 | #define MAXSAISIE 20 68 | int m_saisie_car[MAXSAISIE]; 69 | int m_saisie_nbcar; 70 | }; 71 | 72 | ///////////////////////////////////////////////////////////////////////////// 73 | 74 | //{{AFX_INSERT_LOCATION}} 75 | // Microsoft Visual C++ will insert additional declarations immediately before the previous line. 76 | 77 | #endif // !defined(AFX_SAVERWINDOW_H__EED950BA_AC86_4212_9420_C029DFEDC13E__INCLUDED_) 78 | -------------------------------------------------------------------------------- /src/stdafx.h: -------------------------------------------------------------------------------- 1 | 2 | // stdafx.h : include file for standard system include files, 3 | // or project specific include files that are used frequently, 4 | // but are changed infrequently 5 | 6 | #pragma once 7 | 8 | #ifndef _SECURE_ATL 9 | #define _SECURE_ATL 1 10 | #endif 11 | 12 | #ifndef VC_EXTRALEAN 13 | #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers 14 | #endif 15 | 16 | #include "targetver.h" 17 | 18 | #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit 19 | 20 | // turns off MFC's hiding of some common and often safely ignored warning messages 21 | #define _AFX_ALL_WARNINGS 22 | 23 | #include // MFC core and standard components 24 | #include // MFC extensions 25 | 26 | 27 | #include // MFC Automation classes 28 | 29 | 30 | 31 | #ifndef _AFX_NO_OLE_SUPPORT 32 | #include // MFC support for Internet Explorer 4 Common Controls 33 | #endif 34 | #ifndef _AFX_NO_AFXCMN_SUPPORT 35 | #include // MFC support for Windows Common Controls 36 | #endif // _AFX_NO_AFXCMN_SUPPORT 37 | 38 | #include // MFC support for ribbons and control bars 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | #ifdef _UNICODE 49 | #if defined _M_IX86 50 | #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") 51 | #elif defined _M_IA64 52 | #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") 53 | #elif defined _M_X64 54 | #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") 55 | #else 56 | #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") 57 | #endif 58 | #endif 59 | 60 | 61 | -------------------------------------------------------------------------------- /src/CChaine.cpp: -------------------------------------------------------------------------------- 1 | 2 | #define _CRT_SECURE_NO_WARNINGS 3 | 4 | #include 5 | 6 | #include "CChaine.h" 7 | ////////////////////////////////////////// 8 | char *allouecharbuffer(int len) // alloue len+1 octets 9 | { 10 | char *ret; 11 | 12 | ret = (char*)malloc( len+1 ); 13 | return(ret); 14 | } 15 | 16 | char *dupliqueChaine(const char *source) 17 | { 18 | char *ret; 19 | 20 | if (source==NULL) 21 | return(NULL); 22 | 23 | ret = allouecharbuffer( strlen(source) ); 24 | if (ret==NULL) 25 | return(NULL); 26 | 27 | strcpy(ret, source); 28 | return(ret); 29 | } 30 | 31 | char *dupliqueConcatChaine(const char *source1, const char *source2) 32 | { 33 | char *ret; 34 | 35 | if (source1==NULL && source2==NULL) 36 | return(NULL); 37 | 38 | if (source1==NULL) 39 | return( dupliqueChaine(source2) ); 40 | if (source2==NULL) 41 | return( dupliqueChaine(source1) ); 42 | 43 | ret = allouecharbuffer( strlen(source1)+strlen(source2) ); 44 | if (ret==NULL) 45 | return(NULL); 46 | 47 | strcpy(ret, source1); 48 | strcat(ret, source2); 49 | return(ret); 50 | } 51 | 52 | 53 | void libereDuplicationChaine(char **str) 54 | { 55 | if (*str) 56 | { 57 | free(*str); 58 | (*str)=NULL; 59 | } 60 | } 61 | 62 | char *dupliqueAddChaine(char **source, const char *source2) // renvoi source 63 | { 64 | char *newsource; 65 | newsource = dupliqueConcatChaine( *source, source2); 66 | libereDuplicationChaine(source); 67 | *source= newsource; 68 | return(newsource); 69 | } 70 | 71 | ///////////////////////////////////////////////////////////// 72 | 73 | 74 | CChaine::CChaine() 75 | { 76 | m_str=NULL; 77 | acquirecount=0; 78 | }; 79 | CChaine::CChaine(const char*source) 80 | { 81 | m_str=dupliqueChaine(source); 82 | acquirecount=0; 83 | }; 84 | CChaine::~CChaine() 85 | { 86 | libereDuplicationChaine(&m_str); 87 | } 88 | CChaine& CChaine::operator = ( const char *source ) 89 | { 90 | libereDuplicationChaine(&m_str); 91 | m_str=dupliqueChaine(source); 92 | return(*this); 93 | } 94 | CChaine& CChaine::operator = ( const CChaine &source ) 95 | { 96 | //const char* s=source.getstr(); 97 | *this = source.m_str; 98 | return(*this); 99 | } 100 | int CChaine::lenght(void) 101 | { 102 | if (!m_str) return(0); 103 | return(strlen(m_str)); 104 | } 105 | 106 | void CChaine::AddChaine(const char *source) 107 | { 108 | char *newsource; 109 | newsource = dupliqueConcatChaine( m_str, source); 110 | libereDuplicationChaine(&m_str); 111 | m_str= newsource; 112 | } 113 | -------------------------------------------------------------------------------- /src/viewport.cpp: -------------------------------------------------------------------------------- 1 | 2 | 3 | #include 4 | 5 | 6 | //#include "utils.h" 7 | #include "bconio.h" 8 | #include "wconio.h" 9 | 10 | #include "viewport.h" 11 | 12 | //#define USE_CONSOLE 13 | #define USE_WINDOW 14 | 15 | bool initViewPort(HWND hwnd, BOOL parentBackgroud /*if possible*/) 16 | { 17 | #ifdef USE_CONSOLE 18 | initconsole(); 19 | #endif 20 | #ifdef USE_WINDOW 21 | initWindow(hwnd, parentBackgroud); 22 | #endif 23 | 24 | return(true); 25 | } 26 | 27 | 28 | void closeViewPort(void) 29 | { 30 | #ifdef USE_CONSOLE 31 | closeconsole(); 32 | #endif 33 | #ifdef USE_WINDOW 34 | closeWindow(); 35 | #endif 36 | } 37 | 38 | 39 | 40 | void SetCurrentViewportBuffer(int n) 41 | { 42 | #ifdef USE_CONSOLE 43 | setCurrentBuffer(n); 44 | #endif 45 | #ifdef USE_WINDOW 46 | setCurrentWindow(n); 47 | #endif 48 | } 49 | 50 | void DisplayViewportBuffer(int n) 51 | { 52 | #ifdef USE_CONSOLE 53 | displayBuffer(n); 54 | #endif 55 | #ifdef USE_WINDOW 56 | DisplayWindow(n); 57 | #endif 58 | } 59 | 60 | 61 | void CreateViewportBuffer(int n) 62 | { 63 | #ifdef USE_CONSOLE 64 | CreateBuffer(n); 65 | #endif 66 | #ifdef USE_WINDOW 67 | #endif 68 | } 69 | 70 | void SetViewportBufferProps(void) 71 | { 72 | #ifdef USE_CONSOLE 73 | SetBufferProps(); 74 | #endif 75 | #ifdef USE_WINDOW 76 | #endif 77 | } 78 | void SetViewportInputProps(void) 79 | { 80 | #ifdef USE_CONSOLE 81 | SetInputProps(); 82 | #endif 83 | #ifdef USE_WINDOW 84 | #endif 85 | } 86 | 87 | 88 | 89 | void getviewport_size( int *xSize, int *ySize) 90 | { 91 | #ifdef USE_CONSOLE 92 | gettaille_ecran( xSize, ySize); 93 | #endif 94 | #ifdef USE_WINDOW 95 | gettaille_Window( xSize, ySize); 96 | #endif 97 | } 98 | 99 | void clearviewport(void) 100 | { 101 | #ifdef USE_CONSOLE 102 | clrscr(); 103 | #endif 104 | #ifdef USE_WINDOW 105 | clrWindow(); 106 | #endif 107 | } 108 | 109 | int getviewportnbevenement(void) 110 | { 111 | #ifdef USE_CONSOLE 112 | return(nbevenement()); 113 | #endif 114 | #ifdef USE_WINDOW 115 | return(0); 116 | #endif 117 | } 118 | 119 | void setviewportcursor(int x, int y) 120 | { 121 | #ifdef USE_CONSOLE 122 | gotoxy(x, y); 123 | #endif 124 | #ifdef USE_WINDOW 125 | setWindowcursor(x, y); 126 | #endif 127 | } 128 | void setviewportcursorcolor(int color_txt) 129 | { 130 | #ifdef USE_CONSOLE 131 | textcolor(color_txt); 132 | #endif 133 | #ifdef USE_WINDOW 134 | setWindowTxtcolor(color_txt); 135 | #endif 136 | } 137 | 138 | void outputviewport(char car) 139 | { 140 | #ifdef USE_CONSOLE 141 | putcar(car); 142 | #endif 143 | #ifdef USE_WINDOW 144 | outputWindowTxt(car); 145 | #endif 146 | } 147 | -------------------------------------------------------------------------------- /src/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ================================================================================ 2 | MICROSOFT FOUNDATION CLASS LIBRARY : asciiquarium Project Overview 3 | =============================================================================== 4 | 5 | The application wizard has created this asciiquarium application for 6 | you. This application not only demonstrates the basics of using the Microsoft 7 | Foundation Classes but is also a starting point for writing your application. 8 | 9 | This file contains a summary of what you will find in each of the files that 10 | make up your asciiquarium application. 11 | 12 | asciiquarium.vcproj 13 | This is the main project file for VC++ projects generated using an application wizard. 14 | It contains information about the version of Visual C++ that generated the file, and 15 | information about the platforms, configurations, and project features selected with the 16 | application wizard. 17 | 18 | asciiquarium.h 19 | This is the main header file for the application. It includes other 20 | project specific headers (including Resource.h) and declares the 21 | CasciiquariumApp application class. 22 | 23 | asciiquarium.cpp 24 | This is the main application source file that contains the application 25 | class CasciiquariumApp. 26 | 27 | asciiquarium.rc 28 | This is a listing of all of the Microsoft Windows resources that the 29 | program uses. It includes the icons, bitmaps, and cursors that are stored 30 | in the RES subdirectory. This file can be directly edited in Microsoft 31 | Visual C++. Your project resources are in 1033. 32 | 33 | res\asciiquarium.ico 34 | This is an icon file, which is used as the application's icon. This 35 | icon is included by the main resource file asciiquarium.rc. 36 | 37 | res\asciiquarium.rc2 38 | This file contains resources that are not edited by Microsoft 39 | Visual C++. You should place all resources not editable by 40 | the resource editor in this file. 41 | 42 | 43 | ///////////////////////////////////////////////////////////////////////////// 44 | 45 | The application wizard creates one dialog class: 46 | 47 | asciiquariumDlg.h, asciiquariumDlg.cpp - the dialog 48 | These files contain your CasciiquariumDlg class. This class defines 49 | the behavior of your application's main dialog. The dialog's template is 50 | in asciiquarium.rc, which can be edited in Microsoft Visual C++. 51 | 52 | 53 | ///////////////////////////////////////////////////////////////////////////// 54 | 55 | Other Features: 56 | 57 | ActiveX Controls 58 | The application includes support to use ActiveX controls. 59 | 60 | ///////////////////////////////////////////////////////////////////////////// 61 | 62 | Other standard files: 63 | 64 | StdAfx.h, StdAfx.cpp 65 | These files are used to build a precompiled header (PCH) file 66 | named asciiquarium.pch and a precompiled types file named StdAfx.obj. 67 | 68 | Resource.h 69 | This is the standard header file, which defines new resource IDs. 70 | Microsoft Visual C++ reads and updates this file. 71 | 72 | asciiquarium.manifest 73 | Application manifest files are used by Windows XP to describe an applications 74 | dependency on specific versions of Side-by-Side assemblies. The loader uses this 75 | information to load the appropriate assembly from the assembly cache or private 76 | from the application. The Application manifest maybe included for redistribution 77 | as an external .manifest file that is installed in the same folder as the application 78 | executable or it may be included in the executable in the form of a resource. 79 | ///////////////////////////////////////////////////////////////////////////// 80 | 81 | Other notes: 82 | 83 | The application wizard uses "TODO:" to indicate parts of the source code you 84 | should add to or customize. 85 | 86 | If your application uses MFC in a shared DLL, you will need 87 | to redistribute the MFC DLLs. If your application is in a language 88 | other than the operating system's locale, you will also have to 89 | redistribute the corresponding localized resources MFC90XXX.DLL. 90 | For more information on both of these topics, please see the section on 91 | redistributing Visual C++ applications in MSDN documentation. 92 | 93 | ///////////////////////////////////////////////////////////////////////////// 94 | -------------------------------------------------------------------------------- /src/asciiquarium.rc: -------------------------------------------------------------------------------- 1 | // Microsoft Visual C++ generated resource script. 2 | // 3 | #include "resource.h" 4 | 5 | #define APSTUDIO_READONLY_SYMBOLS 6 | ///////////////////////////////////////////////////////////////////////////// 7 | // 8 | // Generated from the TEXTINCLUDE 2 resource. 9 | // 10 | #ifndef APSTUDIO_INVOKED 11 | #include "targetver.h" 12 | #endif 13 | #include "afxres.h" 14 | 15 | ///////////////////////////////////////////////////////////////////////////// 16 | #undef APSTUDIO_READONLY_SYMBOLS 17 | 18 | ///////////////////////////////////////////////////////////////////////////// 19 | // English (U.S.) resources 20 | 21 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 22 | #ifdef _WIN32 23 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 24 | #pragma code_page(1252) 25 | #endif //_WIN32 26 | 27 | ///////////////////////////////////////////////////////////////////////////// 28 | // 29 | // Dialog 30 | // 31 | 32 | IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62 33 | STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU 34 | CAPTION "About asciiquarium" 35 | FONT 8, "MS Shell Dlg", 0, 0, 0x1 36 | BEGIN 37 | ICON IDR_MAINFRAME,IDC_STATIC,14,14,20,20 38 | LTEXT "asciiquarium, Version 1.4",IDC_STATIC,42,14,114,8,SS_NOPREFIX 39 | LTEXT "Copyright (C) 2013",IDC_STATIC,42,26,114,8 40 | DEFPUSHBUTTON "OK",IDOK,113,41,50,14,WS_GROUP 41 | END 42 | 43 | IDD_ASCIIQUARIUM_DIALOG DIALOGEX 0, 0, 315, 141 44 | STYLE DS_SETFONT | DS_FIXEDSYS | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME 45 | EXSTYLE WS_EX_CONTROLPARENT | WS_EX_APPWINDOW 46 | CAPTION "asciiquarium" 47 | FONT 8, "MS Shell Dlg", 0, 0, 0x1 48 | BEGIN 49 | EDITTEXT ID_NBPOISSON,7,23,47,14,ES_AUTOHSCROLL | ES_NUMBER 50 | CONTROL "Hide the\nwater",IDC_CHECKWATER,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,41,46,21 51 | CONTROL "Exit only\non Esc",IDC_CHECKQUITESC,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,60,46,21 52 | EDITTEXT IDC_KEYSEQ,7,84,48,14,ES_AUTOHSCROLL 53 | DEFPUSHBUTTON "OK",IDOK,7,103,50,14 54 | PUSHBUTTON "Cancel",IDCANCEL,7,120,50,14 55 | LTEXT "Number of fish",IDC_STATIC,7,12,48,8 56 | CONTROL "",IDC_RECT,"Static",SS_OWNERDRAW,23,3,36,8 57 | EDITTEXT IDC_CREDIT,62,3,246,131,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER 58 | END 59 | 60 | 61 | ///////////////////////////////////////////////////////////////////////////// 62 | // 63 | // Version 64 | // 65 | 66 | VS_VERSION_INFO VERSIONINFO 67 | FILEVERSION 1,3,1,1 68 | PRODUCTVERSION 1,3,1,1 69 | FILEFLAGSMASK 0x3fL 70 | #ifdef _DEBUG 71 | FILEFLAGS 0x1L 72 | #else 73 | FILEFLAGS 0x0L 74 | #endif 75 | FILEOS 0x4L 76 | FILETYPE 0x1L 77 | FILESUBTYPE 0x0L 78 | BEGIN 79 | BLOCK "StringFileInfo" 80 | BEGIN 81 | BLOCK "040904e4" 82 | BEGIN 83 | VALUE "CompanyName", "J Sommer" 84 | VALUE "FileDescription", "Asciiquarium screen saver" 85 | VALUE "FileVersion", "1.3.1.1" 86 | VALUE "InternalName", "asciiquarium.scr" 87 | VALUE "LegalCopyright", "J Sommer" 88 | VALUE "OriginalFilename", "asciiquarium.scr" 89 | VALUE "ProductName", "Asciiquarium" 90 | VALUE "ProductVersion", "1.3.0.1" 91 | END 92 | END 93 | BLOCK "VarFileInfo" 94 | BEGIN 95 | VALUE "Translation", 0x409, 1252 96 | END 97 | END 98 | 99 | 100 | ///////////////////////////////////////////////////////////////////////////// 101 | // 102 | // DESIGNINFO 103 | // 104 | 105 | #ifdef APSTUDIO_INVOKED 106 | GUIDELINES DESIGNINFO 107 | BEGIN 108 | IDD_ABOUTBOX, DIALOG 109 | BEGIN 110 | LEFTMARGIN, 7 111 | RIGHTMARGIN, 163 112 | TOPMARGIN, 7 113 | BOTTOMMARGIN, 55 114 | END 115 | 116 | IDD_ASCIIQUARIUM_DIALOG, DIALOG 117 | BEGIN 118 | LEFTMARGIN, 7 119 | RIGHTMARGIN, 308 120 | TOPMARGIN, 3 121 | BOTTOMMARGIN, 134 122 | END 123 | END 124 | #endif // APSTUDIO_INVOKED 125 | 126 | 127 | ///////////////////////////////////////////////////////////////////////////// 128 | // 129 | // String Table 130 | // 131 | 132 | STRINGTABLE 133 | BEGIN 134 | IDS_ABOUTBOX "&About asciiquarium..." 135 | END 136 | 137 | STRINGTABLE 138 | BEGIN 139 | AFX_IDS_APP_TITLE "Asciiquarium" 140 | END 141 | 142 | #endif // English (U.S.) resources 143 | ///////////////////////////////////////////////////////////////////////////// 144 | 145 | 146 | ///////////////////////////////////////////////////////////////////////////// 147 | // French (France) resources 148 | 149 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) 150 | #ifdef _WIN32 151 | LANGUAGE LANG_FRENCH, SUBLANG_FRENCH 152 | #pragma code_page(1252) 153 | #endif //_WIN32 154 | 155 | #ifdef APSTUDIO_INVOKED 156 | ///////////////////////////////////////////////////////////////////////////// 157 | // 158 | // TEXTINCLUDE 159 | // 160 | 161 | 1 TEXTINCLUDE 162 | BEGIN 163 | "resource.h\0" 164 | END 165 | 166 | 2 TEXTINCLUDE 167 | BEGIN 168 | "#ifndef APSTUDIO_INVOKED\r\n" 169 | "#include ""targetver.h""\r\n" 170 | "#endif\r\n" 171 | "#include ""afxres.h""\r\n" 172 | "\0" 173 | END 174 | 175 | 3 TEXTINCLUDE 176 | BEGIN 177 | "#define _AFX_NO_SPLITTER_RESOURCES\r\n" 178 | "#define _AFX_NO_OLE_RESOURCES\r\n" 179 | "#define _AFX_NO_TRACKER_RESOURCES\r\n" 180 | "#define _AFX_NO_PROPERTY_RESOURCES\r\n" 181 | "\r\n" 182 | "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" 183 | "LANGUAGE 9, 1\r\n" 184 | "#pragma code_page(1252)\r\n" 185 | "#include ""res\\asciiquarium.rc2"" // non-Microsoft Visual C++ edited resources\r\n" 186 | "#include ""afxres.rc"" // Standard components\r\n" 187 | "#endif\r\n" 188 | "\0" 189 | END 190 | 191 | #endif // APSTUDIO_INVOKED 192 | 193 | 194 | ///////////////////////////////////////////////////////////////////////////// 195 | // 196 | // Icon 197 | // 198 | 199 | // Icon with lowest ID value placed first to ensure application icon 200 | // remains consistent on all systems. 201 | IDR_MAINFRAME ICON "res\\asciiquarium.ico" 202 | 203 | ///////////////////////////////////////////////////////////////////////////// 204 | // 205 | // Cursor 206 | // 207 | 208 | IDC_CURSOR1 CURSOR "res\\cursor1.cur" 209 | IDC_CURSOR2 CURSOR "res\\cursor2.cur" 210 | #endif // French (France) resources 211 | ///////////////////////////////////////////////////////////////////////////// 212 | 213 | 214 | 215 | #ifndef APSTUDIO_INVOKED 216 | ///////////////////////////////////////////////////////////////////////////// 217 | // 218 | // Generated from the TEXTINCLUDE 3 resource. 219 | // 220 | #define _AFX_NO_SPLITTER_RESOURCES 221 | #define _AFX_NO_OLE_RESOURCES 222 | #define _AFX_NO_TRACKER_RESOURCES 223 | #define _AFX_NO_PROPERTY_RESOURCES 224 | 225 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 226 | LANGUAGE 9, 1 227 | #pragma code_page(1252) 228 | #include "res\asciiquarium.rc2" // non-Microsoft Visual C++ edited resources 229 | #include "afxres.rc" // Standard components 230 | #endif 231 | 232 | ///////////////////////////////////////////////////////////////////////////// 233 | #endif // not APSTUDIO_INVOKED 234 | 235 | -------------------------------------------------------------------------------- /src/asciiquarium.vcproj: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 27 | 30 | 33 | 36 | 39 | 45 | 56 | 59 | 65 | 68 | 76 | 79 | 82 | 85 | 88 | 91 | 94 | 97 | 98 | 107 | 110 | 113 | 116 | 119 | 125 | 137 | 140 | 146 | 149 | 159 | 162 | 166 | 169 | 172 | 175 | 178 | 181 | 182 | 183 | 184 | 185 | 186 | 191 | 194 | 195 | 198 | 199 | 202 | 203 | 206 | 207 | 210 | 211 | 214 | 215 | 218 | 219 | 222 | 223 | 226 | 227 | 230 | 233 | 237 | 238 | 241 | 245 | 246 | 247 | 250 | 251 | 254 | 255 | 258 | 259 | 260 | 265 | 268 | 269 | 272 | 273 | 276 | 277 | 280 | 281 | 284 | 285 | 288 | 289 | 292 | 293 | 296 | 297 | 300 | 301 | 304 | 305 | 308 | 309 | 312 | 313 | 316 | 317 | 320 | 321 | 324 | 325 | 326 | 331 | 334 | 335 | 338 | 339 | 342 | 343 | 346 | 347 | 350 | 351 | 352 | 355 | 356 | 357 | 358 | 362 | 363 | 364 | --------------------------------------------------------------------------------