From a760e8a749af60cd3598ebe113b7692bc6592f57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Konopacki?= Date: Wed, 8 Aug 2012 02:23:38 +0200 Subject: Cleanups --- src/CBot/tests/old TstCBot/BotConsoleDlg.cpp | 164 +++++++++ src/CBot/tests/old TstCBot/BotConsoleDlg.h | 65 ++++ src/CBot/tests/old TstCBot/BotErrorDlg.cpp | 56 +++ src/CBot/tests/old TstCBot/BotErrorDlg.h | 51 +++ src/CBot/tests/old TstCBot/CBotTest.txt | 36 ++ src/CBot/tests/old TstCBot/CMyThread.cpp | 107 ++++++ src/CBot/tests/old TstCBot/CMyThread.h | 44 +++ src/CBot/tests/old TstCBot/MainFrm.cpp | 91 +++++ src/CBot/tests/old TstCBot/MainFrm.h | 55 +++ src/CBot/tests/old TstCBot/ReadMe.txt | 93 +++++ src/CBot/tests/old TstCBot/Resource.h | 68 ++++ src/CBot/tests/old TstCBot/StdAfx.cpp | 6 + src/CBot/tests/old TstCBot/StdAfx.h | 26 ++ src/CBot/tests/old TstCBot/TstCBot.clw | 189 +++++++++++ src/CBot/tests/old TstCBot/TstCBot.cpp | 412 ++++++++++++++++++++++ src/CBot/tests/old TstCBot/TstCBot.dsp | 180 ++++++++++ src/CBot/tests/old TstCBot/TstCBot.h | 62 ++++ src/CBot/tests/old TstCBot/TstCBot.rc | 471 ++++++++++++++++++++++++++ src/CBot/tests/old TstCBot/TstCBotDoc.cpp | 83 +++++ src/CBot/tests/old TstCBot/TstCBotDoc.h | 55 +++ src/CBot/tests/old TstCBot/TstCBotView.cpp | 291 ++++++++++++++++ src/CBot/tests/old TstCBot/TstCBotView.h | 81 +++++ src/CBot/tests/old TstCBot/res/TstCBot.ico | Bin 0 -> 1078 bytes src/CBot/tests/old TstCBot/res/TstCBot.rc2 | 13 + src/CBot/tests/old TstCBot/res/TstCBotDoc.ico | Bin 0 -> 1078 bytes src/CBot/tests/old TstCBot/test complet 1.txt | 213 ++++++++++++ src/CBot/tests/old TstCBot/x.txt | 43 +++ 27 files changed, 2955 insertions(+) create mode 100644 src/CBot/tests/old TstCBot/BotConsoleDlg.cpp create mode 100644 src/CBot/tests/old TstCBot/BotConsoleDlg.h create mode 100644 src/CBot/tests/old TstCBot/BotErrorDlg.cpp create mode 100644 src/CBot/tests/old TstCBot/BotErrorDlg.h create mode 100644 src/CBot/tests/old TstCBot/CBotTest.txt create mode 100644 src/CBot/tests/old TstCBot/CMyThread.cpp create mode 100644 src/CBot/tests/old TstCBot/CMyThread.h create mode 100644 src/CBot/tests/old TstCBot/MainFrm.cpp create mode 100644 src/CBot/tests/old TstCBot/MainFrm.h create mode 100644 src/CBot/tests/old TstCBot/ReadMe.txt create mode 100644 src/CBot/tests/old TstCBot/Resource.h create mode 100644 src/CBot/tests/old TstCBot/StdAfx.cpp create mode 100644 src/CBot/tests/old TstCBot/StdAfx.h create mode 100644 src/CBot/tests/old TstCBot/TstCBot.clw create mode 100644 src/CBot/tests/old TstCBot/TstCBot.cpp create mode 100644 src/CBot/tests/old TstCBot/TstCBot.dsp create mode 100644 src/CBot/tests/old TstCBot/TstCBot.h create mode 100644 src/CBot/tests/old TstCBot/TstCBot.rc create mode 100644 src/CBot/tests/old TstCBot/TstCBotDoc.cpp create mode 100644 src/CBot/tests/old TstCBot/TstCBotDoc.h create mode 100644 src/CBot/tests/old TstCBot/TstCBotView.cpp create mode 100644 src/CBot/tests/old TstCBot/TstCBotView.h create mode 100644 src/CBot/tests/old TstCBot/res/TstCBot.ico create mode 100644 src/CBot/tests/old TstCBot/res/TstCBot.rc2 create mode 100644 src/CBot/tests/old TstCBot/res/TstCBotDoc.ico create mode 100644 src/CBot/tests/old TstCBot/test complet 1.txt create mode 100644 src/CBot/tests/old TstCBot/x.txt (limited to 'src/CBot/tests/old TstCBot') diff --git a/src/CBot/tests/old TstCBot/BotConsoleDlg.cpp b/src/CBot/tests/old TstCBot/BotConsoleDlg.cpp new file mode 100644 index 0000000..077f080 --- /dev/null +++ b/src/CBot/tests/old TstCBot/BotConsoleDlg.cpp @@ -0,0 +1,164 @@ +// BotConsoleDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "TstCBot.h" +#include "BotConsoleDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CBotConsoleDlg dialog + + +CBotConsoleDlg::CBotConsoleDlg(CWnd* pParent /*=NULL*/) + : CDialog(CBotConsoleDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CBotConsoleDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + m_pProg = NULL; + m_threadinfo.m_bRun = FALSE; +} + + +void CBotConsoleDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CBotConsoleDlg) + DDX_Control(pDX, IDOK, m_cOK); + DDX_Control(pDX, IDC_EDIT2, m_Edit2); + DDX_Control(pDX, IDC_EDIT1, m_Edit1); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CBotConsoleDlg, CDialog) + //{{AFX_MSG_MAP(CBotConsoleDlg) + ON_MESSAGE(WM_ENDPROG, EndProg) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CBotConsoleDlg message handlers + +UINT ThreadProc(ThreadInfo *info) +{ + CTime t0 = CTime::GetCurrentTime(); + int Cpt = 0; + + info->m_pProg->Start("LaCommande"); + while ( !info->m_bStop && !info->m_pProg->Run() ) + { + Cpt++; + if ( Cpt%20 == 0 ) info->m_pEdit1->ReplaceSel("."); + } + + if ( info->m_bStop ) + { + info->m_pEdit1->ReplaceSel("\r\nInterrompu\r\n"); + } + else if (info->m_pProg->GivError() == 0) + { + CTime t = CTime::GetCurrentTime(); + CTimeSpan ts = t - t0; + + char buffer[200]; + sprintf( buffer, "\r\nExécution terminée en %d secondes.\r\nInterrompue %d fois.\r\n", + ts.GetTotalSeconds(), Cpt); + + info->m_pEdit1->ReplaceSel(buffer); + } + + info->m_pWndMessage->SendMessage(WM_ENDPROG, 0, 0) ; + return 0 ; +} + +LONG CBotConsoleDlg::EndProg(UINT wparam, LONG lparam) +{ + m_threadinfo.m_bRun = FALSE; + + if (m_pProg->GetError(m_code, m_start, m_end)) + { + AfxMessageBox(m_code); + CDialog::OnCancel(); + return 1; + } + delete m_pProg; + m_pProg = NULL; + + m_Edit2.EnableWindow(TRUE); + m_cOK.EnableWindow(TRUE); + + m_Edit2.SetWindowText(""); + m_Edit2.SetFocus(); + return 0 ; +} + +void CBotConsoleDlg::OnOK() +{ + CTstCBotApp* pApp = (CTstCBotApp*)AfxGetApp(); + pApp->m_pConsole = &m_Edit1; + + CString Commande; + m_Edit2.GetWindowText(Commande); + + CString s = "void LaCommande() { " + Commande + " ;}"; + m_pProg = new CBotProgram(); + CBotStringArray liste; + m_pProg->Compile(s, liste); + int err, start, end; + if ( m_pProg->GetError(err, start, end) ) + { + AfxMessageBox(err); + m_Edit2.SetSel(start-20, end-20); + return; + } + + m_Edit1.ReplaceSel(Commande + " ->\r\n"); + + m_Edit2.SetWindowText(""); + m_Edit1.SetFocus(); + m_Edit2.EnableWindow(FALSE); + m_cOK.EnableWindow(FALSE); + + // lance un processus paralèle pour l'exécution + m_threadinfo.m_pWndMessage = this ; + + m_threadinfo.m_pEdit1 = &m_Edit1; + m_threadinfo.m_pProg = m_pProg; + m_threadinfo.m_bStop = FALSE; + m_threadinfo.m_bRun = TRUE; + + AfxBeginThread((AFX_THREADPROC)ThreadProc, &m_threadinfo) ; +} + +void CBotConsoleDlg::OnCancel() +{ + if (!m_threadinfo.m_bRun) CDialog::OnCancel(); + m_threadinfo.m_bStop = TRUE ; +} + + +BOOL CBotConsoleDlg::OnInitDialog() +{ + CTstCBotApp* pApp = (CTstCBotApp*)AfxGetApp(); + + CDialog::OnInitDialog(); + + m_Edit1.ReplaceSel("Les fonctions suivantes sont disponibles:\r\n"); + for ( int i = 0; i < pApp->m_Liste.RetSize(); i++ ) + { + CBotString x = CString(pApp->m_Liste[i]) + "\r\n"; + m_Edit1.ReplaceSel(x); + } + m_Edit1.ReplaceSel("Entrez une commande ci-dessous.\r\n\r\n"); + + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} diff --git a/src/CBot/tests/old TstCBot/BotConsoleDlg.h b/src/CBot/tests/old TstCBot/BotConsoleDlg.h new file mode 100644 index 0000000..9b54ff2 --- /dev/null +++ b/src/CBot/tests/old TstCBot/BotConsoleDlg.h @@ -0,0 +1,65 @@ +#if !defined(AFX_BOTCONSOLEDLG_H__A11450A2_8E09_11D4_A439_00D059085115__INCLUDED_) +#define AFX_BOTCONSOLEDLG_H__A11450A2_8E09_11D4_A439_00D059085115__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 +// BotConsoleDlg.h : header file +// + +struct ThreadInfo +{ + CEdit* m_pEdit1 ; + CBotProgram* m_pProg; + CWnd* m_pWndMessage; + BOOL m_bStop; + BOOL m_bRun; +}; + + +///////////////////////////////////////////////////////////////////////////// +// CBotConsoleDlg dialog + +class CBotConsoleDlg : public CDialog +{ +// Construction +public: + CBotConsoleDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CBotConsoleDlg) + enum { IDD = IDD_CONSOLE }; + CButton m_cOK; + CEdit m_Edit2; + CEdit m_Edit1; + //}}AFX_DATA + + CBotProgram* m_pProg; + ThreadInfo m_threadinfo; + + int m_code, m_start, m_end; + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CBotConsoleDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CBotConsoleDlg) + virtual void OnOK(); + virtual void OnCancel(); + virtual BOOL OnInitDialog(); + afx_msg LONG EndProg(UINT wparam, LONG lparam) ; + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_BOTCONSOLEDLG_H__A11450A2_8E09_11D4_A439_00D059085115__INCLUDED_) diff --git a/src/CBot/tests/old TstCBot/BotErrorDlg.cpp b/src/CBot/tests/old TstCBot/BotErrorDlg.cpp new file mode 100644 index 0000000..87d56f0 --- /dev/null +++ b/src/CBot/tests/old TstCBot/BotErrorDlg.cpp @@ -0,0 +1,56 @@ +// BotErrorDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "TstCBot.h" +#include "BotErrorDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CBotErrorDlg dialog + + +CBotErrorDlg::CBotErrorDlg(CWnd* pParent /*=NULL*/) + : CDialog(CBotErrorDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CBotErrorDlg) + m_TextProgram = _T(""); + //}}AFX_DATA_INIT +} + + +void CBotErrorDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CBotErrorDlg) + DDX_Control(pDX, IDC_EDIT1, m_eProgram); + DDX_Control(pDX, IDC_STATIC1, m_sMessage); + DDX_Text(pDX, IDC_EDIT1, m_TextProgram); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CBotErrorDlg, CDialog) + //{{AFX_MSG_MAP(CBotErrorDlg) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CBotErrorDlg message handlers + +BOOL CBotErrorDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + + m_sMessage.SetWindowText(m_TextError); + m_eProgram.SetFocus(); + m_eProgram.SetSel(m_start, m_end); + + return FALSE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} diff --git a/src/CBot/tests/old TstCBot/BotErrorDlg.h b/src/CBot/tests/old TstCBot/BotErrorDlg.h new file mode 100644 index 0000000..522afad --- /dev/null +++ b/src/CBot/tests/old TstCBot/BotErrorDlg.h @@ -0,0 +1,51 @@ +#if !defined(AFX_BOTERRORDLG_H__80E73D20_7454_11D4_A439_00D059085115__INCLUDED_) +#define AFX_BOTERRORDLG_H__80E73D20_7454_11D4_A439_00D059085115__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 +// BotErrorDlg.h : header file +// + +///////////////////////////////////////////////////////////////////////////// +// CBotErrorDlg dialog + +class CBotErrorDlg : public CDialog +{ +// Construction +public: + CBotErrorDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CBotErrorDlg) + enum { IDD = IDD_DIALOG1 }; + CEdit m_eProgram; + CStatic m_sMessage; + CString m_TextProgram; + //}}AFX_DATA + + + CString m_TextError; + int m_start, m_end; + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CBotErrorDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CBotErrorDlg) + virtual BOOL OnInitDialog(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_BOTERRORDLG_H__80E73D20_7454_11D4_A439_00D059085115__INCLUDED_) diff --git a/src/CBot/tests/old TstCBot/CBotTest.txt b/src/CBot/tests/old TstCBot/CBotTest.txt new file mode 100644 index 0000000..ce20e26 --- /dev/null +++ b/src/CBot/tests/old TstCBot/CBotTest.txt @@ -0,0 +1,36 @@ + +extern void TheTest() +{ + for (int x = 130; x>0; x--) print (x); +} + +extern void Test() +{ + int var = 10000 ; + while (var > 0) var = var -1; +} +// exécuté en 30 secondes + +extern void Autre() +{ + int var = 10000 ; + while (var > 0) if ( var > 0 ) var = var -1; +} +// exécuté en 45 secondes + +int Y ( int n ) +{ + if ( n < 2 ) return n; + int a = Y(n-1) + Y(n-2); + return a; +} + +extern int X ( int n ) +{ + if ( n < 2 ) { print(n); return n; } + int a = X(n-1) + Y(n-2); + print (a); + return a; +} + + diff --git a/src/CBot/tests/old TstCBot/CMyThread.cpp b/src/CBot/tests/old TstCBot/CMyThread.cpp new file mode 100644 index 0000000..ca92c77 --- /dev/null +++ b/src/CBot/tests/old TstCBot/CMyThread.cpp @@ -0,0 +1,107 @@ +// CMyThread.cpp : pour créer un processus pour la console +// + +#include "stdafx.h" +#include "TstCBot.h" +#include "CMyThread.h" +#include "BotConsoleDlg.h" + + +//IMPLEMENT_DYNAMIC (CMyThread, CWinThread) +IMPLEMENT_DYNCREATE (CMyThread, CWinThread) + +///////////////////////////////////////////////////////////////////////////// +// CMyThread + +BEGIN_MESSAGE_MAP(CMyThread, CWinThread) + //{{AFX_MSG_MAP(CMyThread) + //}}AFX_MSG_MAP + // Standard file based document commands +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CMyThread construction + +CMyThread::CMyThread() +{ + // TODO: add construction code here, + // Place all significant initialization in InitInstance +} + + +///////////////////////////////////////////////////////////////////////////// +// CMyThread initialization +/* +BOOL CMyThread::InitInstance() +{ + AfxEnableControlContainer(); + + CTstCBotApp* pApp = (CTstCBotApp*)AfxGetApp(); + + // ouvre une fenêtre pour afficher les sorties + CRect rect; + AfxGetMainWnd()->GetClientRect( rect ); + rect += CPoint(30,30); + + CWnd* pWnd = new CWnd(); + pWnd->CreateEx( 0, + AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC_ARROW)), + "CBot console", WS_POPUPWINDOW|WS_CAPTION|WS_VISIBLE, + rect, + AfxGetMainWnd()->GetParent(), NULL, NULL); + m_pMainWnd = pWnd; + + pApp->m_pEdit2 = new CEdit(); + + m_pMainWnd->GetClientRect( rect ); + rect.bottom -= 40; + pApp->m_pEdit2->Create( WS_VISIBLE|WS_BORDER|WS_TABSTOP|ES_MULTILINE|ES_WANTRETURN| + ES_AUTOVSCROLL|ES_READONLY, + rect, m_pMainWnd, IDC_EDIT2 ); + + pApp->m_pEdit2->ReplaceSel("Les fonctions suivantes sont disponibles:\n\r"); + for ( int i = 0; i < pApp->m_Liste.RetSize(); i++ ) + { + pApp->m_pEdit2->ReplaceSel(pApp->m_Liste[i] + "\r\n"); + } + pApp->m_pEdit2->ReplaceSel("Entrez une commande ci-dessous.\r\r"); + + +// pApp->m_pEdit2->SetFocus(); + + pApp->m_pEdit3 = new CEdit(); + m_pMainWnd->GetClientRect( rect ); + rect.top = rect.bottom-40; + pApp->m_pEdit3->Create( WS_VISIBLE|WS_BORDER|WS_TABSTOP, + rect, m_pMainWnd, IDC_EDIT1 ); + pApp->m_pEdit3->SetFocus(); + + return TRUE; +}*/ + +BOOL CMyThread::InitInstance() +{ + CBotConsoleDlg dlg; + m_pMainWnd = &dlg; // cela ferme l'application avec la DBOX ! + + int nResponse = dlg.DoModal(); + + return TRUE; +} + + +int CMyThread::ExitInstance() +{ + return 0; +} + + +///////////////////////////////////////////////////////////////////////////// +// CMyThread message handlers + + +void CMyThread::OnReturn() +{ + // TODO: Add your command handler code here + __asm int 3; +} diff --git a/src/CBot/tests/old TstCBot/CMyThread.h b/src/CBot/tests/old TstCBot/CMyThread.h new file mode 100644 index 0000000..1134077 --- /dev/null +++ b/src/CBot/tests/old TstCBot/CMyThread.h @@ -0,0 +1,44 @@ +// CMyThread.h : pour créer un processus pour la console +// +///////////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_MAINFRM_H__20B3756C_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) +#define AFX_MAINFRM_H__20B3756C_5DFD_11D4_A15E_00E0189013DF__INCLUDED_ + + +#include "stdafx.h" +#include "TstCBot.h" + +class CMyThread : public CWinThread +{ +// DECLARE_DYNAMIC(CMyThread) + DECLARE_DYNCREATE(CMyThread) + +public: + + +// Constructor + CMyThread(); + virtual BOOL InitInstance(); + virtual int ExitInstance(); // return app exit code + +// Implementation + + //{{AFX_MSG(CTstCBotApp) + afx_msg void OnAppAbout(); + // NOTE - the ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG + +// Generated message map functions +protected: + //{{AFX_MSG(CMainFrame) + afx_msg void OnReturn(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_MAINFRM_H__20B3756C_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) diff --git a/src/CBot/tests/old TstCBot/MainFrm.cpp b/src/CBot/tests/old TstCBot/MainFrm.cpp new file mode 100644 index 0000000..6c0962c --- /dev/null +++ b/src/CBot/tests/old TstCBot/MainFrm.cpp @@ -0,0 +1,91 @@ +// MainFrm.cpp : implementation of the CMainFrame class +// + +#include "stdafx.h" +#include "TstCBot.h" + +#include "MainFrm.h" +#include "BotErrorDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CMainFrame + +IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) + +BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) + //{{AFX_MSG_MAP(CMainFrame) + ON_WM_CREATE() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +static UINT indicators[] = +{ + ID_SEPARATOR, // status line indicator + ID_INDICATOR_CAPS, + ID_INDICATOR_NUM, + ID_INDICATOR_SCRL, +}; + +///////////////////////////////////////////////////////////////////////////// +// CMainFrame construction/destruction + +CMainFrame::CMainFrame() +{ + // TODO: add member initialization code here + +} + +CMainFrame::~CMainFrame() +{ +} + +int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (CFrameWnd::OnCreate(lpCreateStruct) == -1) + return -1; + + if (!m_wndStatusBar.Create(this) || + !m_wndStatusBar.SetIndicators(indicators, + sizeof(indicators)/sizeof(UINT))) + { + TRACE0("Failed to create status bar\n"); + return -1; // fail to create + } + + return 0; +} + +BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) +{ + // TODO: Modify the Window class or styles here by modifying + // the CREATESTRUCT cs + + return CFrameWnd::PreCreateWindow(cs); +} + +///////////////////////////////////////////////////////////////////////////// +// CMainFrame diagnostics + +#ifdef _DEBUG +void CMainFrame::AssertValid() const +{ + CFrameWnd::AssertValid(); +} + +void CMainFrame::Dump(CDumpContext& dc) const +{ + CFrameWnd::Dump(dc); +} + +#endif //_DEBUG + +///////////////////////////////////////////////////////////////////////////// +// CMainFrame message handlers + + diff --git a/src/CBot/tests/old TstCBot/MainFrm.h b/src/CBot/tests/old TstCBot/MainFrm.h new file mode 100644 index 0000000..56b9c41 --- /dev/null +++ b/src/CBot/tests/old TstCBot/MainFrm.h @@ -0,0 +1,55 @@ +// MainFrm.h : interface of the CMainFrame class +// +///////////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_MAINFRM_H__70B3756C_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) +#define AFX_MAINFRM_H__70B3756C_5DFD_11D4_A15E_00E0189013DF__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +class CMainFrame : public CFrameWnd +{ +protected: // create from serialization only + CMainFrame(); + DECLARE_DYNCREATE(CMainFrame) + +// Attributes +public: + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CMainFrame) + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CMainFrame(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: // control bar embedded members + CStatusBar m_wndStatusBar; + +// Generated message map functions +protected: + //{{AFX_MSG(CMainFrame) + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnCp1(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_MAINFRM_H__70B3756C_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) diff --git a/src/CBot/tests/old TstCBot/ReadMe.txt b/src/CBot/tests/old TstCBot/ReadMe.txt new file mode 100644 index 0000000..67dc05b --- /dev/null +++ b/src/CBot/tests/old TstCBot/ReadMe.txt @@ -0,0 +1,93 @@ +======================================================================== + MICROSOFT FOUNDATION CLASS LIBRARY : TstCBot +======================================================================== + + +AppWizard has created this TstCBot application for you. This application +not only demonstrates the basics of using the Microsoft Foundation classes +but is also a starting point for writing your application. + +This file contains a summary of what you will find in each of the files that +make up your TstCBot application. + +TstCBot.h + This is the main header file for the application. It includes other + project specific headers (including Resource.h) and declares the + CTstCBotApp application class. + +TstCBot.cpp + This is the main application source file that contains the application + class CTstCBotApp. + +TstCBot.rc + This is a listing of all of the Microsoft Windows resources that the + program uses. It includes the icons, bitmaps, and cursors that are stored + in the RES subdirectory. This file can be directly edited in Microsoft + Developer Studio. + +res\TstCBot.ico + This is an icon file, which is used as the application's icon. This + icon is included by the main resource file TstCBot.rc. + +res\TstCBot.rc2 + This file contains resources that are not edited by Microsoft + Developer Studio. You should place all resources not + editable by the resource editor in this file. + +TstCBot.clw + This file contains information used by ClassWizard to edit existing + classes or add new classes. ClassWizard also uses this file to store + information needed to create and edit message maps and dialog data + maps and to create prototype member functions. + +///////////////////////////////////////////////////////////////////////////// + +For the main frame window: + +MainFrm.h, MainFrm.cpp + These files contain the frame class CMainFrame, which is derived from + CFrameWnd and controls all SDI frame features. + + +///////////////////////////////////////////////////////////////////////////// + +AppWizard creates one document type and one view: + +TstCBotDoc.h, TstCBotDoc.cpp - the document + These files contain your CTstCBotDoc class. Edit these files to + add your special document data and to implement file saving and loading + (via CTstCBotDoc::Serialize). + +TstCBotView.h, TstCBotView.cpp - the view of the document + These files contain your CTstCBotView class. + CTstCBotView objects are used to view CTstCBotDoc objects. + + + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named TstCBot.pch and a precompiled types file named StdAfx.obj. + +Resource.h + This is the standard header file, which defines new resource IDs. + Microsoft Developer Studio reads and updates this file. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" to indicate parts of the source code you +should add to or customize. + +If your application uses MFC in a shared DLL, and your application is +in a language other than the operating system's current language, you +will need to copy the corresponding localized resources MFC40XXX.DLL +from the Microsoft Visual C++ CD-ROM onto the system or system32 directory, +and rename it to be MFCLOC.DLL. ("XXX" stands for the language abbreviation. +For example, MFC40DEU.DLL contains resources translated to German.) If you +don't do this, some of the UI elements of your application will remain in the +language of the operating system. + +///////////////////////////////////////////////////////////////////////////// diff --git a/src/CBot/tests/old TstCBot/Resource.h b/src/CBot/tests/old TstCBot/Resource.h new file mode 100644 index 0000000..6863fd8 --- /dev/null +++ b/src/CBot/tests/old TstCBot/Resource.h @@ -0,0 +1,68 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by TstCBot.rc +// +#define IDD_ABOUTBOX 100 +#define IDR_MAINFRAME 128 +#define IDR_TSTCBOTYPE 129 +#define IDD_DIALOG1 130 +#define IDD_CONSOLE 131 +#define IDC_EDIT1 1000 +#define TX_TYPENAMES 1000 +#define IDC_STATIC1 1001 +#define IDC_EDIT2 1002 +#define TX_OPENPAR 5000 +#define TX_CLOSEPAR 5001 +#define TX_NOTBOOL 5002 +#define TX_UNDEFVAR 5003 +#define TX_BADLEFT 5004 +#define TX_ENDOF 5005 +#define TX_OUTCASE 5006 +#define TX_NOTERM 5007 +#define TX_CLOSEBLK 5008 +#define TX_ELSEWITHOUTIF 5009 +#define TX_OPENBLK 5010 +#define TX_BADTYPE 5011 +#define TX_REDEFVAR 5012 +#define TX_BAD2TYPE 5013 +#define TX_UNDEFCALL 5014 +#define TX_MISDOTS 5015 +#define TX_WHILE 5016 +#define TX_BREAK 5017 +#define TX_LABEL 5018 +#define TX_NOLABEL 5019 +#define TX_NOCASE 5020 +#define TX_BADNUM 5021 +#define TX_VOID 5022 +#define TX_NOTYP 5023 +#define TX_NOVAR 5024 +#define TX_NOFONC 5025 +#define TX_OVERPARAM 5026 +#define TX_REDEF 5027 +#define TX_LOWPARAM 5028 +#define TX_BADPARAM 5029 +#define TX_NUMPARAM 5030 +#define TX_NOITEM 5031 +#define TX_DOT 5032 +#define TX_NOCONST 5033 +#define TX_REDEFCLASS 5034 +#define TX_DIVZERO 6000 +#define TX_NOTINIT 6001 +#define TX_BADTHROW 6002 +#define TX_NORETVAL 6003 +#define TX_NORUN 6004 +#define TX_NOCALL 6005 +#define ID_CP1 32771 +#define ID_EXE 32772 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_3D_CONTROLS 1 +#define _APS_NEXT_RESOURCE_VALUE 132 +#define _APS_NEXT_COMMAND_VALUE 32775 +#define _APS_NEXT_CONTROL_VALUE 1002 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/src/CBot/tests/old TstCBot/StdAfx.cpp b/src/CBot/tests/old TstCBot/StdAfx.cpp new file mode 100644 index 0000000..ae0ec93 --- /dev/null +++ b/src/CBot/tests/old TstCBot/StdAfx.cpp @@ -0,0 +1,6 @@ +// stdafx.cpp : source file that includes just the standard includes +// TstCBot.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + diff --git a/src/CBot/tests/old TstCBot/StdAfx.h b/src/CBot/tests/old TstCBot/StdAfx.h new file mode 100644 index 0000000..7d46ace --- /dev/null +++ b/src/CBot/tests/old TstCBot/StdAfx.h @@ -0,0 +1,26 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__70B3756A_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) +#define AFX_STDAFX_H__70B3756A_5DFD_11D4_A15E_00E0189013DF__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#include // MFC core and standard components +#include // MFC extensions +#include // MFC OLE automation classes +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__70B3756A_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) diff --git a/src/CBot/tests/old TstCBot/TstCBot.clw b/src/CBot/tests/old TstCBot/TstCBot.clw new file mode 100644 index 0000000..4c54168 --- /dev/null +++ b/src/CBot/tests/old TstCBot/TstCBot.clw @@ -0,0 +1,189 @@ +; CLW file contains information for the MFC ClassWizard + +[General Info] +Version=1 +LastClass=CTstCBotView +LastTemplate=CDialog +NewFileInclude1=#include "stdafx.h" +NewFileInclude2=#include "TstCBot.h" +LastPage=0 + +ClassCount=7 +Class1=CTstCBotApp +Class2=CTstCBotDoc +Class3=CTstCBotView +Class4=CMainFrame + +ResourceCount=6 +Resource1=IDD_ABOUTBOX +Resource2=IDR_MAINFRAME +Class5=CAboutDlg +Resource3=IDD_ABOUTBOX (French (France)) +Resource4=IDD_CONSOLE +Class6=CBotErrorDlg +Resource5=IDD_DIALOG1 (French (Switzerland)) +Class7=CBotConsoleDlg +Resource6=IDR_MAINFRAME (French (France)) + +[CLS:CTstCBotApp] +Type=0 +HeaderFile=TstCBot.h +ImplementationFile=TstCBot.cpp +Filter=N + +[CLS:CTstCBotDoc] +Type=0 +HeaderFile=TstCBotDoc.h +ImplementationFile=TstCBotDoc.cpp +Filter=N +BaseClass=CDocument +VirtualFilter=DC +LastObject=CTstCBotDoc + +[CLS:CTstCBotView] +Type=0 +HeaderFile=TstCBotView.h +ImplementationFile=TstCBotView.cpp +Filter=C +BaseClass=CView +VirtualFilter=VWC +LastObject=CTstCBotView + +[CLS:CMainFrame] +Type=0 +HeaderFile=MainFrm.h +ImplementationFile=MainFrm.cpp +Filter=T +BaseClass=CFrameWnd +VirtualFilter=fWC +LastObject=CMainFrame + + + +[CLS:CAboutDlg] +Type=0 +HeaderFile=TstCBot.cpp +ImplementationFile=TstCBot.cpp +Filter=D + +[DLG:IDD_ABOUTBOX] +Type=1 +Class=CAboutDlg +ControlCount=4 +Control1=IDC_STATIC,static,1342177283 +Control2=IDC_STATIC,static,1342308480 +Control3=IDC_STATIC,static,1342308352 +Control4=IDOK,button,1342373889 + +[MNU:IDR_MAINFRAME] +Type=1 +Class=CMainFrame +Command1=ID_FILE_NEW +Command2=ID_FILE_OPEN +Command3=ID_FILE_SAVE +Command4=ID_FILE_SAVE_AS +Command5=ID_FILE_MRU_FILE1 +Command6=ID_APP_EXIT +Command7=ID_EDIT_UNDO +Command8=ID_EDIT_CUT +Command9=ID_EDIT_COPY +Command10=ID_EDIT_PASTE +Command11=ID_VIEW_STATUS_BAR +Command12=ID_CP1 +Command13=ID_EXE +Command14=ID_APP_ABOUT +CommandCount=14 + +[ACL:IDR_MAINFRAME] +Type=1 +Class=CMainFrame +Command1=ID_CP1 +Command2=ID_FILE_NEW +Command3=ID_FILE_OPEN +Command4=ID_FILE_SAVE +Command5=ID_EXE +Command6=ID_EDIT_UNDO +Command7=ID_EDIT_CUT +Command8=ID_EXE +Command9=ID_CP1 +Command10=ID_EXE +CommandCount=10 + +[MNU:IDR_MAINFRAME (French (France))] +Type=1 +Class=? +Command1=ID_FILE_NEW +Command2=ID_FILE_OPEN +Command3=ID_FILE_SAVE +Command4=ID_FILE_SAVE_AS +Command5=ID_FILE_MRU_FILE1 +Command6=ID_APP_EXIT +Command7=ID_EDIT_UNDO +Command8=ID_EDIT_CUT +Command9=ID_EDIT_COPY +Command10=ID_EDIT_PASTE +Command11=ID_VIEW_STATUS_BAR +Command12=ID_CP1 +Command13=ID_EXE +Command14=ID_APP_ABOUT +CommandCount=14 + +[ACL:IDR_MAINFRAME (French (France))] +Type=1 +Class=? +Command1=ID_CP1 +Command2=ID_FILE_NEW +Command3=ID_FILE_OPEN +Command4=ID_FILE_SAVE +Command5=ID_EXE +Command6=ID_EDIT_UNDO +Command7=ID_EDIT_CUT +Command8=ID_EXE +Command9=ID_CP1 +Command10=ID_EXE +CommandCount=10 + +[DLG:IDD_ABOUTBOX (French (France))] +Type=1 +Class=CAboutDlg +ControlCount=4 +Control1=IDC_STATIC,static,1342177283 +Control2=IDC_STATIC,static,1342308480 +Control3=IDC_STATIC,static,1342308352 +Control4=IDOK,button,1342373889 + +[CLS:CBotErrorDlg] +Type=0 +HeaderFile=BotErrorDlg.h +ImplementationFile=BotErrorDlg.cpp +BaseClass=CDialog +Filter=D +VirtualFilter=dWC +LastObject=CBotErrorDlg + +[DLG:IDD_DIALOG1 (French (Switzerland))] +Type=1 +ControlCount=4 +Control1=IDOK,button,1342242817 +Control2=IDC_EDIT1,edit,1352728708 +Control3=IDC_STATIC,static,1342308352 +Control4=IDC_STATIC1,static,1342308352 + +[DLG:IDD_CONSOLE] +Type=1 +Class=CBotConsoleDlg +ControlCount=4 +Control1=IDC_STATIC,static,1342308352 +Control2=IDC_EDIT2,edit,1350631552 +Control3=IDOK,button,1342242817 +Control4=IDC_EDIT1,edit,1352734724 + +[CLS:CBotConsoleDlg] +Type=0 +HeaderFile=BotConsoleDlg.h +ImplementationFile=BotConsoleDlg.cpp +BaseClass=CDialog +Filter=D +VirtualFilter=dWC +LastObject=IDOK + diff --git a/src/CBot/tests/old TstCBot/TstCBot.cpp b/src/CBot/tests/old TstCBot/TstCBot.cpp new file mode 100644 index 0000000..8ac4557 --- /dev/null +++ b/src/CBot/tests/old TstCBot/TstCBot.cpp @@ -0,0 +1,412 @@ +// TstCBot.cpp : Defines the class behaviors for the application. +// + +#include "stdafx.h" +#include "TstCBot.h" + +#include "MainFrm.h" +#include "TstCBotDoc.h" +#include "TstCBotView.h" +#include "CMyThread.h" + + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + + +//////////////////////////////////////////////////////////////////// +// routine show() +// utilisable depuis le programme écrit en CBot + +// exécution +BOOL rShow( CBotVar* pVar, CBotVar* pResult, int& Exception ) +{ + CString s; + + if ( pVar == NULL ) + { + Exception = 22; return FALSE; + } + + while ( pVar != NULL ) + { + CString ss; + ss.LoadString( TX_TYPENAMES + pVar->RetType() ); + s += ss + " "; + + ss = pVar->RetName(); + if (ss.IsEmpty()) ss = ""; + s += ss + " = "; + + s += pVar->RetValString(); + s += "\n"; + pVar = pVar->RetNext(); + } + + AfxMessageBox(s, MB_OK|MB_ICONINFORMATION); + +// if ( pResult && pResult->RetType() == CBotTypInt) pResult->SetValInt(123); + + return TRUE; // pas d'interruption +} + +int cShow( CBotVar* &pVar, CBotString& RetClass) +{ + if ( pVar == NULL ) return 22; + return CBotTypInt; // tous paramètres acceptés, un entier en retour +} + +int cErr( CBotVar* &pVar, CBotString& RetClass) +{ + pVar = pVar->RetNext(); // avance le pointeur sur l'erreur + return 6666; +} + +//////////////////////////////////////////////////////////////////// +// routine print() +// utilisable depuis le programme écrit en CBot + +// exécution +BOOL rPrintLn( CBotVar* pVar, CBotVar* pResult, int& Exception ) +{ + CString s; + + CTstCBotApp* pApp = (CTstCBotApp*)AfxGetApp(); + CEdit* pEdit = pApp->m_pConsole; + + if (pEdit == NULL) return TRUE; + pEdit->GetWindowText(s); + + while ( pVar != NULL ) + { + if ( !s.IsEmpty() ) s += "\r\n"; + s += pVar->RetValString(); + pVar = pVar->RetNext(); + } + + pEdit->SetWindowText(s); + pEdit->SetSel(s.GetLength(), s.GetLength()); + pEdit->SetFocus(); + return TRUE; // pas d'interruption +} + +BOOL rPrint( CBotVar* pVar, CBotVar* pResult, int& Exception ) +{ + CString s; + + CTstCBotApp* pApp = (CTstCBotApp*)AfxGetApp(); + CEdit* pEdit = pApp->m_pConsole; + + if (pEdit == NULL) return TRUE; + pEdit->GetWindowText(s); + + while ( pVar != NULL ) + { + if ( !s.IsEmpty() ) s += " "; + s += pVar->RetValString(); + pVar = pVar->RetNext(); + } + + pEdit->SetWindowText(s); + pEdit->SetSel(s.GetLength(), s.GetLength()); + pEdit->SetFocus(); + return TRUE; // pas d'interruption +} + +int cPrint( CBotVar* &pVar, CBotString& RetClass) +{ + return 0; // tous paramètres acceptés, un entier en retour +} + + +////////////////////////////////////////////////////////////////// +// class CPoint pour essayer + +// exécution +BOOL rCPoint( CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception ) +{ + CString s; + + if ( pVar == NULL )return TRUE; // constructeur sans paramètres est ok + + if ( pVar->RetType() > CBotTypDouble ) + { + Exception = 6023; return FALSE; + } + + CBotVar* pX = pThis->RetItem("x"); + if ( pX == NULL ) + { + Exception = 6024; return FALSE; + } + + pX->SetValFloat( pVar->RetValFloat() ); + pVar = pVar->RetNext(); + + if ( pVar == NULL ) + { + Exception = 6022; return FALSE; + } + + if ( pVar->RetType() > CBotTypDouble ) + { + Exception = 6023; return FALSE; + } + + CBotVar* pY = pThis->RetItem("y"); + if ( pY == NULL ) + { + Exception = 6024; return FALSE; + } + + pY->SetValFloat( pVar->RetValFloat() ); + pVar = pVar->RetNext(); + + if ( pVar != NULL ) + { + Exception = 6025; return FALSE; + } + + return TRUE; // pas d'interruption +} + +int cCPoint( CBotVar* pThis, CBotVar* &pVar, CBotString& RetClass) +{ + // l'objet doit être de la classe CPoint + if ( !pThis->IsElemOfClass("CPoint") ) return 6021; + + // ok si aucun paramètres ! + if ( pVar == NULL ) return 0; + + // paramètre de type numérique svp + if ( pVar->RetType() > CBotTypDouble ) return 6023; + pVar = pVar->RetNext(); + + // il doit y avoir un second paramètre + if ( pVar == NULL ) return 6022; + // également de type numérique + if ( pVar->RetType() > CBotTypDouble )return 6023; + pVar = pVar->RetNext(); + + // et pas plus de 2 paramètres svp + if ( pVar != NULL ) return 6025; + + return 0; // cette fonction retourne void +} + +// méthode déterminant l'opposé +BOOL rOppose( CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception ) +{ + CString s; + + if ( pVar != NULL ) // pas de paramètre + { + Exception = 6025; return FALSE; + } + + CBotVar* pvar = pThis->RetItemList(); // demande la chaîne des items + + // tous les paramètres sont des nombres + while (pvar != NULL) + { + pvar->SetValFloat( -pvar->RetValFloat() ); + pvar = pvar->RetNext(); + } + + pResult->Copy(pThis); + return TRUE; // pas d'interruption +} + +int cOppose( CBotVar* pThis, CBotVar* &pVar, CBotString& RetClass) +{ + // l'objet doit être de la classe CPoint + if ( !pThis->IsElemOfClass("CPoint") ) return 6021; + + RetClass = "CPoint"; // l'objet rendu est de cette class + + // ok si aucun paramètres ! + if ( pVar == NULL ) return CBotTypClass; // le paramètre retourné est une instance de la classe + + return TX_OVERPARAM; // ça va pas +} + + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotApp + +BEGIN_MESSAGE_MAP(CTstCBotApp, CWinApp) + //{{AFX_MSG_MAP(CTstCBotApp) + ON_COMMAND(ID_APP_ABOUT, OnAppAbout) + // NOTE - the ClassWizard will add and remove mapping macros here. + // DO NOT EDIT what you see in these blocks of generated code! + //}}AFX_MSG_MAP + // Standard file based document commands + ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) + ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotApp construction + +CTstCBotApp::CTstCBotApp() +{ + // TODO: add construction code here, + // Place all significant initialization in InitInstance +} + +///////////////////////////////////////////////////////////////////////////// +// The one and only CTstCBotApp object + +CTstCBotApp theApp; + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotApp initialization + +BOOL CTstCBotApp::InitInstance() +{ + AfxEnableControlContainer(); + + // Standard initialization + // If you are not using these features and wish to reduce the size + // of your final executable, you should remove from the following + // the specific initialization routines you do not need. + +#ifdef _AFXDLL + Enable3dControls(); // Call this when using MFC in a shared DLL +#else + Enable3dControlsStatic(); // Call this when linking to MFC statically +#endif + + // Change the registry key under which our settings are stored. + // You should modify this string to be something appropriate + // such as the name of your company or organization. + SetRegistryKey(_T("Local AppWizard-Generated Applications")); + + LoadStdProfileSettings(); // Load standard INI file options (including MRU) + + // Register the application's document templates. Document templates + // serve as the connection between documents, frame windows and views. + + CSingleDocTemplate* pDocTemplate; + pDocTemplate = new CSingleDocTemplate( + IDR_MAINFRAME, + RUNTIME_CLASS(CTstCBotDoc), + RUNTIME_CLASS(CMainFrame), // main SDI frame window + RUNTIME_CLASS(CTstCBotView)); + AddDocTemplate(pDocTemplate); + + // Parse command line for standard shell commands, DDE, file open + CCommandLineInfo cmdInfo; + ParseCommandLine(cmdInfo); + + // Dispatch commands specified on the command line + if (!ProcessShellCommand(cmdInfo)) + return FALSE; + + // The one and only window has been initialized, so show and update it. + m_pMainWnd->ShowWindow(SW_SHOW); + m_pMainWnd->UpdateWindow(); + + + +/////////////////////////////////// +// défini la fonction "show()" +// -------------------------------- + + CBotProgram::AddFunction("show", rShow, cShow); + CBotProgram::AddFunction("err", rShow, cErr); + CBotProgram::AddFunction("print", rPrint, cPrint); + CBotProgram::AddFunction("println", rPrintLn, cPrint); + + +/////////////////////////////////// +// définie la classe globale CPoint +// -------------------------------- + + CBotClass* m_pClassPoint; + + m_pClassPoint = new CBotClass("CPoint", NULL); + // ajoute le composant ".x" + m_pClassPoint->AddItem("x", CBotTypFloat); + // ajoute le composant ".y" + m_pClassPoint->AddItem("y", CBotTypFloat); + + // ajoute le constructeur pour cette classe + m_pClassPoint->AddFunction("CPoint", rCPoint, cCPoint); + // ajoute la méthode Opposé + m_pClassPoint->AddFunction("Opposé", rOppose, cOppose); + + +////////////////////////////////////////////////////////////////// +// compile un bout de programme pour voir s'il est bien accessible +// depuis un autre "module" + + CBotProgram* p = new CBotProgram; + CBotStringArray Liste; + p->Compile(" public void MonProgram( ) { show (\"mon programme\") ;}", Liste ); + + // l'objet n'est pas détruit et plus référencé + // je sais c'est pas bien + + + return TRUE; +} + +///////////////////////////////////////////////////////////////////////////// +// CAboutDlg dialog used for App About + +class CAboutDlg : public CDialog +{ +public: + CAboutDlg(); + +// Dialog Data + //{{AFX_DATA(CAboutDlg) + enum { IDD = IDD_ABOUTBOX }; + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CAboutDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + //{{AFX_MSG(CAboutDlg) + // No message handlers + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) +{ + //{{AFX_DATA_INIT(CAboutDlg) + //}}AFX_DATA_INIT +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CAboutDlg) + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) + //{{AFX_MSG_MAP(CAboutDlg) + // No message handlers + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +// App command to run the dialog +void CTstCBotApp::OnAppAbout() +{ + CAboutDlg aboutDlg; + aboutDlg.DoModal(); +} + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotApp commands diff --git a/src/CBot/tests/old TstCBot/TstCBot.dsp b/src/CBot/tests/old TstCBot/TstCBot.dsp new file mode 100644 index 0000000..35e5c0b --- /dev/null +++ b/src/CBot/tests/old TstCBot/TstCBot.dsp @@ -0,0 +1,180 @@ +# Microsoft Developer Studio Project File - Name="TstCBot" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 5.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=TstCBot - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "TstCBot.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "TstCBot.mak" CFG="TstCBot - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "TstCBot - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "TstCBot - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "TstCBot - Win32 Release" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /FR /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x40c /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 +# ADD LINK32 /nologo /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "TstCBot - Win32 Debug" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /FR /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 +# ADD BASE RSC /l 0x40c /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x40c /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "TstCBot - Win32 Release" +# Name "TstCBot - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\BotConsoleDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\MainFrm.cpp +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.cpp +# ADD CPP /Yc"stdafx.h" +# End Source File +# Begin Source File + +SOURCE=.\TstCBot.cpp +# End Source File +# Begin Source File + +SOURCE=.\TstCBot.rc + +!IF "$(CFG)" == "TstCBot - Win32 Release" + +!ELSEIF "$(CFG)" == "TstCBot - Win32 Debug" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\TstCBotDoc.cpp +# End Source File +# Begin Source File + +SOURCE=.\TstCBotView.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\BotConsoleDlg.h +# End Source File +# Begin Source File + +SOURCE=.\MainFrm.h +# End Source File +# Begin Source File + +SOURCE=.\Resource.h +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h +# End Source File +# Begin Source File + +SOURCE=.\TstCBot.h +# End Source File +# Begin Source File + +SOURCE=.\TstCBotDoc.h +# End Source File +# Begin Source File + +SOURCE=.\TstCBotView.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\res\TstCBot.ico +# End Source File +# Begin Source File + +SOURCE=.\res\TstCBot.rc2 +# End Source File +# Begin Source File + +SOURCE=.\res\TstCBotDoc.ico +# End Source File +# End Group +# Begin Source File + +SOURCE=.\ReadMe.txt +# End Source File +# End Target +# End Project diff --git a/src/CBot/tests/old TstCBot/TstCBot.h b/src/CBot/tests/old TstCBot/TstCBot.h new file mode 100644 index 0000000..616db43 --- /dev/null +++ b/src/CBot/tests/old TstCBot/TstCBot.h @@ -0,0 +1,62 @@ +// TstCBot.h : main header file for the TSTCBOT application +// + +#if !defined(AFX_TSTCBOT_H__70B37568_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) +#define AFX_TSTCBOT_H__70B37568_5DFD_11D4_A15E_00E0189013DF__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#ifndef __AFXWIN_H__ + #error include 'stdafx.h' before including this file for PCH +#endif + +#include "resource.h" // main symbols +#include "..\CBotDll.h" + + +class CMyThread; + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotApp: +// See TstCBot.cpp for the implementation of this class +// + +class CTstCBotApp : public CWinApp +{ +public: + CTstCBotApp(); + + CMyThread* m_pThread; + CWnd* m_pView; + CEdit* m_pConsole; + CBotStringArray m_Liste; + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTstCBotApp) + public: + virtual BOOL InitInstance(); + //}}AFX_VIRTUAL + +// Implementation + + //{{AFX_MSG(CTstCBotApp) + afx_msg void OnAppAbout(); + // 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 Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_TSTCBOT_H__70B37568_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) + +#define WM_STARTPROG WM_APP + 0 +#define WM_ENDPROG WM_APP + 1 diff --git a/src/CBot/tests/old TstCBot/TstCBot.rc b/src/CBot/tests/old TstCBot/TstCBot.rc new file mode 100644 index 0000000..9e91c76 --- /dev/null +++ b/src/CBot/tests/old TstCBot/TstCBot.rc @@ -0,0 +1,471 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// French (France) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 12, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif\r\n" + "#include ""res\\TstCBot.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""l.fra\\afxres.rc"" // Standard components\r\n" + "#endif\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON DISCARDABLE "res\\TstCBot.ico" +IDR_TSTCBOTYPE ICON DISCARDABLE "res\\TstCBotDoc.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDR_MAINFRAME MENU PRELOAD DISCARDABLE +BEGIN + POPUP "&Fichier" + BEGIN + MENUITEM "&Nouveau\tCtrl+N", ID_FILE_NEW + MENUITEM "&Ouvrir...\tCtrl+O", ID_FILE_OPEN + MENUITEM "&Enregistrer\tCtrl+S", ID_FILE_SAVE + MENUITEM "En®istrer sous...", ID_FILE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Fichier récent", ID_FILE_MRU_FILE1, GRAYED + MENUITEM SEPARATOR + MENUITEM "&Quitter", ID_APP_EXIT + END + POPUP "&Edition" + BEGIN + MENUITEM "&Annuler\tCtrl+Z", ID_EDIT_UNDO + MENUITEM SEPARATOR + MENUITEM "&Couper\tCtrl+X", ID_EDIT_CUT + MENUITEM "&Copier\tCtrl+C", ID_EDIT_COPY + MENUITEM "C&oller\tCtrl+V", ID_EDIT_PASTE + END + POPUP "&Affichage" + BEGIN + MENUITEM "Barre d'é&tat", ID_VIEW_STATUS_BAR + END + POPUP "&Tests" + BEGIN + MENUITEM "&Compile\tAlt+C", ID_CP1 + MENUITEM "&Execute\tAlt+V", ID_EXE + END + POPUP "&?" + BEGIN + MENUITEM "&A propos de TstCBot...", ID_APP_ABOUT + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE +BEGIN + "C", ID_CP1, VIRTKEY, ALT, NOINVERT + "N", ID_FILE_NEW, VIRTKEY, CONTROL, NOINVERT + "O", ID_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT + "S", ID_FILE_SAVE, VIRTKEY, CONTROL, NOINVERT + "V", ID_EXE, VIRTKEY, ALT, NOINVERT + VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT, NOINVERT + VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT + VK_F5, ID_EXE, VIRTKEY, NOINVERT + VK_F7, ID_CP1, VIRTKEY, NOINVERT + "X", ID_EXE, VIRTKEY, ALT, NOINVERT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 217, 55 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "A propos de TstCBot" +FONT 8, "MS Sans Serif" +BEGIN + ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 + LTEXT "TstCBot version 1.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX + LTEXT "Copyright (C) 1900",IDC_STATIC,40,25,119,8 + DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP +END + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040C04B0" + BEGIN + VALUE "CompanyName", "\0" + VALUE "FileDescription", "Application MFC TstCBot\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "TstCBot\0" + VALUE "LegalCopyright", "Copyright (C) 1900\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "TstCBot.EXE\0" + VALUE "ProductName", "Application TstCBot\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Traduction", 0x40c, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_ABOUTBOX, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 210 + TOPMARGIN, 7 + BOTTOMMARGIN, 48 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE PRELOAD DISCARDABLE +BEGIN + IDR_MAINFRAME "TstCBot\n\nTstCBo\n\n\nTstCBot.Document\nTstCBo Document" +END + +STRINGTABLE PRELOAD DISCARDABLE +BEGIN + AFX_IDS_APP_TITLE "TstCBot" + AFX_IDS_IDLEMESSAGE "Prêt" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_INDICATOR_EXT "EXT" + ID_INDICATOR_CAPS "MAJ" + ID_INDICATOR_NUM "NUM" + ID_INDICATOR_SCRL "DEF" + ID_INDICATOR_OVR "ECR" + ID_INDICATOR_REC "ENR" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_FILE_NEW "Crée un nouveau document\nNouveau" + ID_FILE_OPEN "Ouvre un document existant\nOuvrir" + ID_FILE_CLOSE "Ferme le document actif\nFermer" + ID_FILE_SAVE "Enregistre le document actif\nEnregistrer" + ID_FILE_SAVE_AS "Enregistre le document actif sous un nouveau nom\nEnregistrer sous" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_APP_ABOUT "Affiche des informations sur le programme, le numéro de version et le copyright\nA propos de" + ID_APP_EXIT "Ferme l'application ; propose d'enregistrer les documents\nQuitter" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_FILE_MRU_FILE1 "Ouvre ce document" + ID_FILE_MRU_FILE2 "Ouvre ce document" + ID_FILE_MRU_FILE3 "Ouvre ce document" + ID_FILE_MRU_FILE4 "Ouvre ce document" + ID_FILE_MRU_FILE5 "Ouvre ce document" + ID_FILE_MRU_FILE6 "Ouvre ce document" + ID_FILE_MRU_FILE7 "Ouvre ce document" + ID_FILE_MRU_FILE8 "Ouvre ce document" + ID_FILE_MRU_FILE9 "Ouvre ce document" + ID_FILE_MRU_FILE10 "Ouvre ce document" + ID_FILE_MRU_FILE11 "Ouvre ce document" + ID_FILE_MRU_FILE12 "Ouvre ce document" + ID_FILE_MRU_FILE13 "Ouvre ce document" + ID_FILE_MRU_FILE14 "Ouvre ce document" + ID_FILE_MRU_FILE15 "Ouvre ce document" + ID_FILE_MRU_FILE16 "Ouvre ce document" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_NEXT_PANE "Passe au volet de fenêtre suivant\nVolet suivant" + ID_PREV_PANE "Revient au volet précédent\nVolet précédent" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_WINDOW_SPLIT "Fractionne la fenêtre active en deux volets\nFractionner" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_EDIT_CLEAR "Efface la sélection\nEffacer" + ID_EDIT_CLEAR_ALL "Efface tout\nEffacer tout" + ID_EDIT_COPY "Copie la sélection et la place dans le Presse-papiers\nCopier" + ID_EDIT_CUT "Supprime la sélection et la place dans le Presse-papiers\nCopier" + ID_EDIT_FIND "Recherche le texte spécifié\nRechercher" + ID_EDIT_PASTE "Insère le contenu du Presse-papiers\nColler" + ID_EDIT_REPEAT "Répète la dernière action\nRépéter" + ID_EDIT_REPLACE "Remplace le texte spécifique par un texte différent\nRemplacer" + ID_EDIT_SELECT_ALL "Sélectionne le document entier\nSélectionner tout" + ID_EDIT_UNDO "Annule la dernière action\nAnnuler" + ID_EDIT_REDO "Rétablit l'action précédemment annulée\nRétablir" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_VIEW_STATUS_BAR "Affiche ou masque la barre d'état\nBarre d'état" +END + +STRINGTABLE DISCARDABLE +BEGIN + AFX_IDS_SCSIZE "Change la taille de la fenêtre" + AFX_IDS_SCMOVE "Change la position de la fenêtre" + AFX_IDS_SCMINIMIZE "Réduit la fenêtre en icône" + AFX_IDS_SCMAXIMIZE "Agrandit la fenêtre au format de l'écran" + AFX_IDS_SCNEXTWINDOW "Passe à la fenêtre de document suivante" + AFX_IDS_SCPREVWINDOW "Passe à la fenêtre de document précédente" + AFX_IDS_SCCLOSE "Ferme la fenêtre active et propose l'enregistrement des documents" +END + +STRINGTABLE DISCARDABLE +BEGIN + AFX_IDS_SCRESTORE "Restaure la fenêtre à sa taille d'origine" + AFX_IDS_SCTASKLIST "Active la liste des tâches" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_TYPENAMES "les différents types" + 1001 "Byte" + 1002 "Short" + 1003 "Char" + 1004 "Int" + 1005 "Long" + 1006 "Real" + 1007 "Double" +END + +STRINGTABLE DISCARDABLE +BEGIN + 1008 "Boolean" + 1009 "Class" + 1010 "String" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_OPENPAR "Il manque une parenthèse ouvrante." + TX_CLOSEPAR "Il manque une parenthèse fermante." + TX_NOTBOOL "L'expression doit être un boolean." + TX_UNDEFVAR "Variable non déclarée." + TX_BADLEFT "Assignation impossible." + TX_ENDOF "Instruction non terminée." + TX_OUTCASE "Instruction ""case"" hors d'un bloc ""switch""." + TX_NOTERM "Instructions après la fin." +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_CLOSEBLK "Il manque la fin du bloc." + TX_ELSEWITHOUTIF "Instruction ""else"" sans ""if"" correspondant." + TX_OPENBLK "Début d'un bloc attendu." + TX_BADTYPE "Mauvais type de résultat pour l'assignation." + TX_REDEFVAR "Redéfinition d'une variable." + TX_BAD2TYPE "Les deux opérandes ne sont pas de types compatibles." + TX_UNDEFCALL "Routine inconnue." + TX_MISDOTS "Séparateur "" : "" attendu." + TX_WHILE "Manque le mot ""while""." + TX_BREAK "Instruction ""break"" en dehors d'une boucle." + TX_LABEL "Un label ne peut se placer que devant un ""for"", un ""while"", un ""do"" ou un ""switch""." + TX_NOLABEL "Cette étiquette n'existe pas" + TX_NOCASE "Manque une instruction ""case""." + TX_BADNUM "Un nombre est attendu." + TX_VOID "Paramètre void." + TX_NOTYP "Déclaration de type attendu" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_DIVZERO "Division par zéro." + TX_NOTINIT "Variable non initialisée." + TX_BADTHROW "Valeur négative refusée pour ""throw""." + TX_NORETVAL "La fonction n'a pas retourné de résultat" + TX_NORUN "Pas de fonction en exécution" + TX_NOCALL "Appel d'une fonction inexistante" +END + +STRINGTABLE DISCARDABLE +BEGIN + TX_NOVAR "Nom d'une variable attendu" + TX_NOFONC "Nom de la fonction attendu." + TX_OVERPARAM "Trop de paramètres" + TX_REDEF "Cette fonction existe déjà." + TX_LOWPARAM "Pas assez de paramètres" + TX_BADPARAM "Aucune fonction de ce nom n'accepte ce(s) type(s) de paramètre(s)" + TX_NUMPARAM "Aucune fonction de ce nom n'accepte ce nombre de paramètres" + TX_NOITEM "Cet élément n'exite pas dans cette classe." + TX_DOT "L'objet n'est pas une instance d'une classe." + TX_NOCONST "Il n'y a pas de constructeur approprié." + TX_REDEFCLASS "Cette classe existe déjà." +END + +#endif // French (France) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// French (Switzerland) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRS) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_SWISS +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONSOLE DIALOG DISCARDABLE 0, 0, 401, 210 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "CBot Console" +FONT 8, "MS Sans Serif" +BEGIN + LTEXT "Commande :",IDC_STATIC,7,177,40,8 + EDITTEXT IDC_EDIT2,7,189,329,14,ES_AUTOHSCROLL + DEFPUSHBUTTON "Exécute",IDOK,344,189,50,14 + EDITTEXT IDC_EDIT1,7,7,387,167,ES_MULTILINE | ES_READONLY | + ES_WANTRETURN | WS_VSCROLL +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_CONSOLE, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 394 + TOPMARGIN, 7 + BOTTOMMARGIN, 203 + END +END +#endif // APSTUDIO_INVOKED + +#endif // French (Switzerland) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +#ifdef _WIN32 +LANGUAGE 12, 1 +#pragma code_page(1252) +#endif +#include "res\TstCBot.rc2" // non-Microsoft Visual C++ edited resources +#include "l.fra\afxres.rc" // Standard components +#endif +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/src/CBot/tests/old TstCBot/TstCBotDoc.cpp b/src/CBot/tests/old TstCBot/TstCBotDoc.cpp new file mode 100644 index 0000000..7d7e2ef --- /dev/null +++ b/src/CBot/tests/old TstCBot/TstCBotDoc.cpp @@ -0,0 +1,83 @@ +// TstCBotDoc.cpp : implementation of the CTstCBotDoc class +// + +#include "stdafx.h" +#include "TstCBot.h" + +#include "TstCBotDoc.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotDoc + +IMPLEMENT_DYNCREATE(CTstCBotDoc, CDocument) + +BEGIN_MESSAGE_MAP(CTstCBotDoc, CDocument) + //{{AFX_MSG_MAP(CTstCBotDoc) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotDoc construction/destruction + +CTstCBotDoc::CTstCBotDoc() +{ + // TODO: add one-time construction code here + +} + +CTstCBotDoc::~CTstCBotDoc() +{ +} + +BOOL CTstCBotDoc::OnNewDocument() +{ + if (!CDocument::OnNewDocument()) + return FALSE; + + // TODO: add reinitialization code here + // (SDI documents will reuse this document) + + return TRUE; +} + + + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotDoc serialization + +void CTstCBotDoc::Serialize(CArchive& ar) +{ + if (ar.IsStoring()) + { + // TODO: add storing code here + } + else + { + // TODO: add loading code here + } +} + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotDoc diagnostics + +#ifdef _DEBUG +void CTstCBotDoc::AssertValid() const +{ + CDocument::AssertValid(); +} + +void CTstCBotDoc::Dump(CDumpContext& dc) const +{ + CDocument::Dump(dc); +} +#endif //_DEBUG + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotDoc commands + diff --git a/src/CBot/tests/old TstCBot/TstCBotDoc.h b/src/CBot/tests/old TstCBot/TstCBotDoc.h new file mode 100644 index 0000000..ae1d0f7 --- /dev/null +++ b/src/CBot/tests/old TstCBot/TstCBotDoc.h @@ -0,0 +1,55 @@ +// TstCBotDoc.h : interface of the CTstCBotDoc class +// +///////////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_TSTCBOTDOC_H__70B3756E_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) +#define AFX_TSTCBOTDOC_H__70B3756E_5DFD_11D4_A15E_00E0189013DF__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + + +class CTstCBotDoc : public CDocument +{ +protected: // create from serialization only + CTstCBotDoc(); + DECLARE_DYNCREATE(CTstCBotDoc) + +// Attributes +public: + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTstCBotDoc) + public: + virtual BOOL OnNewDocument(); + virtual void Serialize(CArchive& ar); + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CTstCBotDoc(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: + +// Generated message map functions +protected: + //{{AFX_MSG(CTstCBotDoc) + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_TSTCBOTDOC_H__70B3756E_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) diff --git a/src/CBot/tests/old TstCBot/TstCBotView.cpp b/src/CBot/tests/old TstCBot/TstCBotView.cpp new file mode 100644 index 0000000..3ee9094 --- /dev/null +++ b/src/CBot/tests/old TstCBot/TstCBotView.cpp @@ -0,0 +1,291 @@ +// TstCBotView.cpp : implementation of the CTstCBotView class +// + +#include "stdafx.h" +#include "TstCBot.h" + +#include "TstCBotDoc.h" +#include "TstCBotView.h" +#include "BotConsoleDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotView + +IMPLEMENT_DYNCREATE(CTstCBotView, CView) + +BEGIN_MESSAGE_MAP(CTstCBotView, CView) + //{{AFX_MSG_MAP(CTstCBotView) + ON_WM_SIZE() + ON_COMMAND(ID_CP1, OnCp1) + ON_COMMAND(ID_EXE, OnExe) + ON_COMMAND(ID_FILE_SAVE, OnFileSave) + ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotView construction/destruction + +CTstCBotView::CTstCBotView() +{ + // TODO: add construction code here + m_pEdit = NULL; + m_pProg = NULL; +} + +CTstCBotView::~CTstCBotView() +{ +} + +BOOL CTstCBotView::PreCreateWindow(CREATESTRUCT& cs) +{ + // TODO: Modify the Window class or styles here by modifying + // the CREATESTRUCT cs + + return CView::PreCreateWindow(cs); +} + +void CTstCBotView::OnActivateView( BOOL bActivate, CView* pActivateView, CView* pDeactiveView ) +{ + if ( m_pEdit == NULL) + { + m_pEdit = new CEdit(); + CRect rect; + GetClientRect( rect ); + + m_pEdit->Create( WS_VISIBLE|WS_BORDER|WS_TABSTOP|ES_MULTILINE|ES_WANTRETURN|ES_NOHIDESEL|ES_AUTOVSCROLL, + rect, this, IDC_EDIT1 ); + m_pEdit->SetTabStops(12); + LoadEdition("CBotTest.txt"); + m_pEdit->SetFocus(); + } +} + + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotView drawing + +void CTstCBotView::OnDraw(CDC* pDC) +{ + CTstCBotDoc* pDoc = GetDocument(); + ASSERT_VALID(pDoc); + + // TODO: add draw code for native data here +} + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotView diagnostics + +#ifdef _DEBUG +void CTstCBotView::AssertValid() const +{ + CView::AssertValid(); +} + +void CTstCBotView::Dump(CDumpContext& dc) const +{ + CView::Dump(dc); +} + +CTstCBotDoc* CTstCBotView::GetDocument() // non-debug version is inline +{ + ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTstCBotDoc))); + return (CTstCBotDoc*)m_pDocument; +} +#endif //_DEBUG + +///////////////////////////////////////////////////////////////////////////// +// CTstCBotView message handlers + +void CTstCBotView::OnSize(UINT nType, int cx, int cy) +{ + CView::OnSize(nType, cx, cy); + + if ( m_pEdit != NULL ) + { + CRect rect; + GetClientRect( rect ); + m_pEdit->MoveWindow( rect ); + m_pEdit->SetFocus(); + } +} + +void CTstCBotView::SaveEdition(const char* filename) +{ + CString program; + + m_pEdit->GetWindowText(program); + + FILE* pf = fopen(filename, "wb"); + if (pf==NULL) return; + + fputs (program, pf); + fclose(pf); +} + +void CTstCBotView::LoadEdition(const char* filename) +{ + CString program("{ int x = 10000; while (x > 0) x = x-1; }"); + + FILE* pf = fopen(filename, "r"); + if (pf!=NULL) + { + char buffer[10000]; + program.Empty(); + + while (NULL != fgets (buffer, 100000, pf)) + { + program += buffer; + program = program.Left(program.GetLength()-1) + "\r\n"; + } + + fclose(pf); + } + + m_pEdit->SetWindowText(program); +} + + + +// compile le programme +#include + +void CTstCBotView::OnCp1() +{ + CString program; + + SaveEdition("CBotTest.txt"); + + m_pEdit->GetWindowText(program); + + CString TextError; + int code, start, end; + + if ( m_pProg == NULL ) m_pProg = new CBotProgram(); + + CTstCBotApp* pApp = (CTstCBotApp*)AfxGetApp(); + + if (m_pProg->Compile(program, pApp->m_Liste)) + { + CString done = "Compilation sans erreur.\nLes fonctions suivantes sont externes:\n"; + + for ( int i = 0; i < pApp->m_Liste.RetSize(); i++) + { + done += CString(pApp->m_Liste[i]) + "\n"; + } + + AfxMessageBox( done ); + } + else + { + m_pProg->GetError(code, start, end); + delete m_pProg; + m_pProg = NULL; + + m_pEdit->SetSel( start, end ); + m_pEdit->SetFocus(); // met en évidence la partie avec problème + + TextError.LoadString( code ); + if (TextError.IsEmpty()) + { + char buf[100]; + sprintf(buf, "Erreur numéro %d.", code); + TextError = buf; + } + AfxMessageBox( TextError ); + } + + m_pEdit->SetFocus(); +} + + +////////////////////////////////////////////////////// + + +void CTstCBotView::OnExe() +{ + CTstCBotApp* pApp = (CTstCBotApp*)AfxGetApp(); + + if( m_pProg == NULL) + { + AfxMessageBox("Pas de programme compilé !"); + return; + } + + if( pApp->m_Liste.RetSize() == 0 ) + { + AfxMessageBox("Aucune fonction marquée \"extern\" !"); + return; + } + + + + CBotConsoleDlg dlg; + dlg.DoModal(); // dialogue pour faire la console + + if ( dlg.m_code>0 ) + { + CString TextError; + + m_pEdit->SetSel( dlg.m_start, dlg.m_end ); + m_pEdit->SetFocus(); // met en évidence la partie avec problème + + TextError.LoadString( dlg.m_code ); + if (TextError.IsEmpty()) + { + char buf[100]; + sprintf(buf, "Erreur numéro %d.", dlg.m_code); + TextError = buf; + } +// AfxMessageBox( TextError ); + } + + m_pEdit->SetFocus(); + + return; +} + + + +void CTstCBotView::OnFileSave() +{ + // TODO: Add your command handler code here + SaveEdition("CBotTest.txt"); +} + +void CTstCBotView::OnFileSaveAs() +{ + CFileDialog *pDlg; + CString s; + + pDlg = new CFileDialog(FALSE, "TXT", NULL, + OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY, + "cboxtest|*.txt", this); + if ( pDlg == NULL ) return; + + if ( pDlg->DoModal() == IDOK ) // choix du fichier ... + { + SaveEdition(pDlg->GetPathName()); + } + + delete pDlg; +} + +#if 0 +void test() +{ + int y,z; + + for (;;); + for (x = 0; y = 1; z = 3) int q = 6; + for (int x = 0; int y = 1; int z = 3) int q = 6; + // pour voir +} +#endif + diff --git a/src/CBot/tests/old TstCBot/TstCBotView.h b/src/CBot/tests/old TstCBot/TstCBotView.h new file mode 100644 index 0000000..d5aede5 --- /dev/null +++ b/src/CBot/tests/old TstCBot/TstCBotView.h @@ -0,0 +1,81 @@ +// TstCBotView.h : interface of the CTstCBotView class +// +///////////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_TSTCBOTVIEW_H__70B37570_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) +#define AFX_TSTCBOTVIEW_H__70B37570_5DFD_11D4_A15E_00E0189013DF__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + + +class CBotProgram; +class CBotClass; + + +class CTstCBotView : public CView +{ +protected: // create from serialization only + CTstCBotView(); + DECLARE_DYNCREATE(CTstCBotView) + + CEdit* m_pEdit; // texte en édition + CWnd* m_pWnd; + CBotProgram* m_pProg; // programme compilé + +// Attributes +public: + CTstCBotDoc* GetDocument(); + +// Operations +public: + void LoadEdition(const char* name); + void SaveEdition(const char* name); + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTstCBotView) + public: + virtual void OnDraw(CDC* pDC); // overridden to draw this view + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + virtual void OnActivateView( BOOL bActivate, CView* pActivateView, CView* pDeactiveView ); + protected: + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CTstCBotView(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: + +// Generated message map functions +protected: + //{{AFX_MSG(CTstCBotView) + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg void OnCp1(); + afx_msg void OnExe(); + afx_msg void OnFileSave(); + afx_msg void OnFileSaveAs(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +#ifndef _DEBUG // debug version in TstCBotView.cpp +inline CTstCBotDoc* CTstCBotView::GetDocument() + { return (CTstCBotDoc*)m_pDocument; } +#endif + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_TSTCBOTVIEW_H__70B37570_5DFD_11D4_A15E_00E0189013DF__INCLUDED_) + + + diff --git a/src/CBot/tests/old TstCBot/res/TstCBot.ico b/src/CBot/tests/old TstCBot/res/TstCBot.ico new file mode 100644 index 0000000..7eef0bc Binary files /dev/null and b/src/CBot/tests/old TstCBot/res/TstCBot.ico differ diff --git a/src/CBot/tests/old TstCBot/res/TstCBot.rc2 b/src/CBot/tests/old TstCBot/res/TstCBot.rc2 new file mode 100644 index 0000000..2186272 --- /dev/null +++ b/src/CBot/tests/old TstCBot/res/TstCBot.rc2 @@ -0,0 +1,13 @@ +// +// TSTCBOT.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/src/CBot/tests/old TstCBot/res/TstCBotDoc.ico b/src/CBot/tests/old TstCBot/res/TstCBotDoc.ico new file mode 100644 index 0000000..2a1f1ae Binary files /dev/null and b/src/CBot/tests/old TstCBot/res/TstCBotDoc.ico differ diff --git a/src/CBot/tests/old TstCBot/test complet 1.txt b/src/CBot/tests/old TstCBot/test complet 1.txt new file mode 100644 index 0000000..0fd4fa5 --- /dev/null +++ b/src/CBot/tests/old TstCBot/test complet 1.txt @@ -0,0 +1,213 @@ +// test de l'interpréteur CBot, (c) D. Dumoulin 2000 + +Int Somme ( Int x, Int y ) +{ + return x + y; +} + +Real Somme ( Real x, Real y ) +{ + return x + y; +} + +void A_Faire() +{ + CPoint position; // utilise une classe externe + position.x = 123.5; + position.y = -45.1; + + show ( position ); +} + +/* Les nouveautés sont les suivantes + __________________________________________________ + + On peut définir des fonctions, avec la syntaxe habituelle au C + void MaFonction( Int x, Real y ) { ... } + + Les caractéristiques sont pour l'instant les suivantes: + + - ce programme TstCBot exécute la dernière fonction définie + + - on peut définir deux fonctions du même nom, + si la liste de paramètres est différente. + Par exemple + Int Somme( Int x, Int y ) + Real Somme( Real x, Real y ); + Note: si la seconde n'existait pas, Somme ( 1.3, 4.8 ) + serait fait sur les nombres entier 1 + 4 + La priorité est donnée à la routine qui ne pert pas + de bits dans la conversion des paramètres. + + - il n'y a pas d'erreur de compilation si une routine + ne retourne pas de valeur alors qu'elle devrait, + par contre il y a une erreur "correcte" à l'exécution + + - il est possible d'utiliser une fonction qui est définie + plus bas dans le programme. + __________________________________________________ + + Tous les blocs d'instructions existent maintenant, à savoir + + label : + while (condition) { instructions; break label; continue label; } + + label : + do { instructions; break label; continue label; } while (condition) + + label: + for (initial; condition; incrément) { instructions; break; continue } + + switch ( valeur ) { case 1: instructions; case 2: break ; } + + try {instructions; throw exception; } catch (exception) {instructions;} + catch (testlogique) {instructions;} + finally {instructions;} + // le bloc finally est exécuter dans tous les cas + // qu'il y ait eu exception ou non, et aussi en cas de break, continue ou return + __________________________________________________ + + Les "exceptions" sont juste des numéros (31 bits) + 6000 = division par zéro + 6001 = variable non initialisée + 6002 = valeur négative pour un throw + 6003 = la fonction n'a pas retourné de valeur + + les autres numéros sont à disposition + (COLOBOT aura surement des numéros d'exception propre) + l'association d'un mot clef pour ces exceptions est à venir. + __________________________________________________ + + L'interpréteur a été un peu optimiser, une boucle de un millon de décrément + ne prend plus que +*/ + +void Test () +{ // début du bloc d'instructions + + Int z = 1000000; + while ( z>0 ) z--; + + return; + { + // test la préséance pour les assignations + Int a = 9; + a += (a = 3); + if ( a != 12 ) 1/0; // le résultat correct est 12 + + Int b = 9; + b = b + (b = 3); + if (b != 12) 1/0; // même chose + + // la fonction show est une fonction externe + // définie par TstCBot + // elle peut prendre un nombre quelconque de paramètres + show ( a, b ); + } + + { + // petit test sur les chaînes + String x = "ch." ; + String y ; + x += y = x + " de la brume."; + + // concaténation de chaînes, accepte des autres types + String s = 1 + 2 + " test " + 3 + 4 ; + + show( x, y, s ); + + // les tests sur les chaînes ne sont pas standard en Java + // mais c'est si pratique : + + if ( s != "3 test 34" ) 1/0; // le résultat correct est "3 test 34" + // car 1+2 est évalué en premier entre 2 nombres + // et ensuite on additionne des chaînes "3" "4" + } + + { + // teste toutes les opérations avec les entiers (32 bits) + Int a = 4; + Int b = 4; + + Int c = a++ * --b; // post incrément, pré décrément + if ( c != 12 ) 1/0; + + c = ++a * b--; // pré incrément, post décrément + if ( c!=18 ) 1/0; + + a = a+b-a*b/a%3; // 6 + 2 - ( 6 * 2 / 6 % 3 ) -> 6 + if ( a != 6 ) 1/0; + + a += 2; a-=1; a*=3; a/=4; a%=3; // (6+2 -1) *3 /4 modulo 3 = 21 / 4 modulo 3 = 2 + if ( a!= 2) 0/0; + + if (-5 << 3 != -40) 0/0; // shift à gauche + if ( -5 >> 1 != -3) 0/0; // shift arithmétique à droite 11111011 -> 11111101 = -3 + if ( -5 >>> 1 != 0x3ffffffd) 0/0; // shift non signé à droite + + a = -10; // fait la même chose en assignation + a <<= 1; // -20 + a >>= 2; // -5 + a >>>= 1; // pert le signe + if ( a != 0x3ffffffd) 0/0; // + + Int x = 5/3; // division d'entiers + if ( x != 1 ) 0/0; + Int xx = 5.0/3.0; // division de réels, assigné à un entier + if ( xx != 1 ) 0/0; + + Int y = 0xF0035678; + if ( ~y != 0x0FFCA987 ) 0/0; // NOT bit à bit + if ( (0x3456 ^ 0x54f0) != 0x60A6) // XOR bit à bit + 0/0; + if ( (0x23 | 0x83) != 0xA3 ) 0/0; // OR bit à bit + if ( (0x23 & 0x83) != 0x03 ) 0/0; // AND bit à bit + + Int z = 0x0123; + z |= 0x8010; if ( z != 0x8133) 0/0; + z &= 0xF018; if ( z != 0x8010) 0/0; + z ^= 0xFF17; if ( z != 0x7F07) 0/0; + } + + { + // test pour les booléens + Boolean a, b= true, c = false; + a = b | c & b; + if ( a != b ) 0/0; + if ( !a ) 0/0; + if ( b ^ a ) 0/0; // XOR + if ( true || 0/0<1 ) {}; + if ( false && 0/0<1) {}; + // a ? "vrai" : "faux"; + } + + { + // petit test sur les nombres réels + Real x = 1. / 3, y = 0; + + if ( 3 * x != 1 ) x = x / y; // provoque une division par zéro + else y = 1.123; + } + + + // test de durée + // attention, le programme de test ne stoppe qu'à la fin d'exécution + // bien que la boucle est interrompue plusieures fois + + // la boucle est plus rapide si elle est au début du programme ! + { + Int z = 10000; + while ( z > 0 ) z = z - 1; + } + +} + +void t() +{ + A_Faire(); + + show ( Somme ( 1, 2 ) ); + show ( Somme ( 1., 2 ) ); + show ( Somme ( 4.5, 2.7 ) ); +} + diff --git a/src/CBot/tests/old TstCBot/x.txt b/src/CBot/tests/old TstCBot/x.txt new file mode 100644 index 0000000..95856e0 --- /dev/null +++ b/src/CBot/tests/old TstCBot/x.txt @@ -0,0 +1,43 @@ +// test de l'interpréteur CBot, (c) D. Dumoulin 2000 + +// pour l'instant, seule les primitives suivantes sont implémentées + +// { ... ; ... ; ... } un bloc d'instructions +// int x, y = 12, z; // déclaration de nombre entier +// float a, b= 2/3, c=b+1; // déclaration de nombres réels +// boolean tst = true; // déclaration d'un booléen +// String x = "hello"; // déclaration d'une chaînes + +// z = x = x * y / ( z + 1 - x ); // assignation en chaîne et les 4 opérations + +// while ( x >= 0 ) x = x - 1; // boucle while, et test > >= < <= == != +// if ( x < y ) x = x + 1; // test si +// else y = y + 1; // sinon + +/* et les opérations suivantes: + + plus unaire x = +y; + - moins unaire x = -y; + + || OU logique + && ET logique + ! NOT logique + | OU bit à bit + & ET bit à bit + ^ XOR bit à bit + ~ NON bit à bit + +// les commentaires sont acceptés +/* y compris les commentaires + sur plusieures lignes */ + + +{ +String str ; + +str = "abc" ; + +show (str) ; + +show( str = str + "+++" , ) ; + +} -- cgit v1.2.3-1-g7c22