计算24点游戏c++

计算24点游戏c++
计算24点游戏c++

24点游戏软件的开发

1 概述

1.1 课程设计目的

a、巩固并加深学生对C++语言程序设计知识的理解;

b、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;

c、进一步掌握和应用VC++ 6.0集成开发环境;

d、提高运用C++语言解决实际问题的能力;

e、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的MIS系统;

f、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。

1.2 课程设计内容

课题名称:24点游戏软件的开发

说明:24点游戏是一种常见的纸牌游戏说明

要求:

a)实现随机发牌;

b)能进行结果验算;

c)计分;

d)难度设置。

2 系统需求分析

2.1 系统目标

24点游戏是个流行的数学运算游戏。本次课程设计通过24点游戏来加深我们对对话框编程的认识和理解,并介绍Visual C++在数学计算方面的应用,以及在按钮上设置位图和设置计时器的方法。

24点扑克游戏的规则是:由系统发出4张扑克牌,要求用户利用扑克牌上显示的数字(JQKA算10),通过加减乘除运算得出24。

2.2 主体功能

a.对游戏设计三个难易级别,分别为低级、中级和高级。每次开始游戏前可以根据玩家的需要进行难度设置,如若不设置,系统默认难度级别为中级,设置完难度级别之后就可以开始游戏了,单击“发牌”按钮,桌面上出现四张翻开的扑克牌,与此同时,游戏开始计时,进度条开始前进。

b.在规定的时间内,玩家可以在“输入算式”的编辑框中输入自己想好的算式,然后点击“验算”按钮:如果输入的算式经运算后所的答案正确,则会在编辑框中

显示“正确!”;如果输入的数字与给出的牌的数字不符或者符号不合法,则会弹出“内部错误!”的窗口;如果输入的数字与四张牌相符、字符亦合法但是答案不正确,则会在编辑框中显示“错误”;如果未输入任何的数字和算符,则会弹出“内部错误!”的窗口。

c.如果在规定的时间内,玩家没有点击验算按钮,则会弹出“内部错误”的窗口。

d.在结束本轮游戏后,如果玩家想继续游戏,则可点击“发牌”按钮即可重新发牌,开始下一轮的游戏;如果玩家想结束游戏,则可点击“结束”按钮即可结束游戏。

2.3 开发环境

Microsoft Visual C++ 6.0

3 系统概要设计

3.1 系统功能模块划分

a.建立一个随机产生扑克牌的模块。由程序随机产生4张扑克牌,每张牌对应一个整数。

b.计时的模块。定义一个计时器,以便对使用时间进行计数。

c.计算表达式的模块。主要是通过函数来确定运算式各符号优先级和最终计算出输入算式的结果。

d.验算表达式正误的模块。在规定的时间内输入算式进行验算,根据不同的情况会出现不同的对话框。

3.2 系统流程图

图3-1 系统流程图

说明:按下“发牌”按钮游戏开始,通过调用函数,桌面上随机显示4张纸牌。这4张纸牌从1-K 中随机调出。与此同时,标识耗时时标的进度条开始前进。计时同步开始。设置了时间限制,如果玩家没有在规定时间内输入表达式,本轮游戏结

Y

N

N

Y

N

Y

Y

N

是否设置难度?

1.低级

2.中级

3.高级

系统默认难度级别为中级

初始化 发牌 计时开始

输入算式,进行计算

比较函数值与参数值

得大小

显示“错误!”

验算函数

判断计算结果是否为24?

超时,输入空白显示:

“错误!”

输入字符错误: 显示:“错误!”

运算结果正确:“正确!”

运算结果错误: 显示:“错误!”

继续否?

结束

开始

束,在函数OnTimer()的作用下,会弹出对话“内部错误”。

若用户在规定时间内点击了“验算”按钮,系统进行相应运算,紧接着系统调用验算函数对编辑框中运算出的结果进行验算,根据验算情况给出相应的结果。出现的结果有以下四中情况:(1)如果用户没在输入算式中输入算式,直接按“验算”按钮,会弹出“错误!”的提示。(2)如果输入的数字与给出的不符或者符号不合法,会弹出“错误!”的提示。(3)如果输入的数字与四张牌相符、字符亦合法但是答案不正确,会弹出“错误!”。(4)如果输入算式经运算后所得答案正确,则会弹出“正确!”,点击弹出框中的“发牌”按钮,系统会自动给出本局的得分和耗时。

本轮游戏结束后,用户可以选择重新开始,否则,可以点击“结束游戏”按钮退出游戏。

4系统详细设计

4.1 设计步骤

(a)在VC++6.0中,建立一个MFC?AppWizard(exe)工程,在应用程序类型中选择“基本对话框”,其余的都采用默认选项,即可完成对话框的创建。

(b)在对话框中添加4个图像(分别用于四张扑克牌),4个按钮(分别是发牌、输入算式、验算、结束游戏),1个编辑框(输入算式),一个进度条和一个下拉式按钮(用于选择难度级别),接着根据属性对以上所添加的控件进行属性修改,主要进行重命名,以便编辑源代码的时候区分,另外对图像的处理除了对其进行重命名外还要对其添加位图。通过插入-资源-Bitmap加载图片,图片通过拷贝和复制等操作加载完成。加载完成的图片在对应的工作区可以找到,选中对其名字进行修改。

(c)接着对以上添加的控件建立类向导。主要有Add?Function、Add?Variable 和Edit?Code这三项的添加。

(d)根据流程图在类的原文件中逐一添加实现各个模块其功能所需要的各种函数,并添加相应的源代码,同时在头文件中添加对各种函数及变量的声明。

(e)对编译好的程序进行保存,开始进行调试,边调试边根据报错对原程序进行修改,直至程序不再报错,并且可以实现预计的各种功能。

4.2 界面设计

界面设计主要是创建控件,在Resoure View选项卡中打开Dialog资源组,双击IDD_ZHOUTONG_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。

(a)在Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时弹出Edit属性对话框,在该对话

框中输入ID属性。

按照上面的操作过程编辑其他按钮和编辑框等对象的属性。

表4-1 各按钮和编辑框等对象的属性

控件对象ID Caption 显示纸牌的静态控件1 IDC_STATIC1 /

显示纸牌的静态控件2 IDC_STATIC2 /

显示纸牌的静态控件3 IDC_STATIC3 /

显示纸牌的静态控件4 IDC_STATIC4 /

耗时标识提示静态控件IDC_STATIC 耗时标识:

难度级别提示静态控件IDC_STATIC5 难度级别:

当前得分提示静态控件IDC_STATIC6 当前得分:

显示当前得分静态控件IDC_STATIC7 /

历史记录提示静态控件IDC_STATIC8 历史记录发牌按钮IDC_BUTTON1 发牌

输入算式按钮IDC_BUTTON2 输入算式

验算按钮IDC_BUTTON3 验算

结束游戏按钮IDC_BUTTON4 结束游戏

进度条IDC_PROGRESS1 / 输入算式编辑框IDC_EDIT1 / 显示历史记录列表控件IDC_COMBO1 /

难度级别选择组合框IDC_LIST1 /

4.3 关键功能的实现

a.发牌功能的实现,首先,通过BOOL CDingluDlg::OnInitDialog()中,根据纸牌对应的ID号加载纸牌,。利用函数加载了标号1~10的十张纸牌和两张背景纸牌。然后运行代码,即可在图像框中得到四张铺开的纸牌。

b.计时功能的实现,在CPoint24Dlg::OnTimer中通过m_progress.StepIt()设置是否超时。如果(m_progress.GetPos()>=100)代表游戏结束,用户没有时间进行思考了,本轮游戏结束,在函数OnTimer()的作用下,会弹出对话“超时!”

c.计算功能的实现,对于输入结果的验算,主要是通过函数来确定运算式各符号优先级和最终计算出输入算式的结果。对于编辑框中输入的表达式进行计算,借助于Str=Left+Middle+Right;将有优先级差别同时表达式传送到SubCompute()函数中,最终计算出输入到编辑框中的表达式结果Result,并将其返回。

d.验算功能的实现,在规定的时间内输入算式进行验算,根据不同的情况会出现不同的对话框。有以下四种情况:如果用户没在输入算式中输入算式,直接按“验算”按钮,如果输入的数字与给出的不符或者符号不合法,会弹出“内部错误!”的提示对话框;如果输入的数字与四张牌相符、字符亦合法但是答案不正确,会弹出“错误!”;如果输入算式经运算后所得答案正确,则会弹出“正确!”。

e.计分功能的实现,当用户在每局游戏结束后,如果没有计算出正确结果,则会在历史记录中显示1题错误;如果计算出了正确结果,则会在记录中显示1题正确并显示一个0~100之间的整数值。用户最终得分的确定是由其选择的游戏级别和游戏所花费时间长短来确定的。

5 测试

5.1 测试方案

测试过程中,由于既涉及到纸牌点数和运算符,又会涉及到运算式结果,于是相应地会显示出四种结果,(a)如果玩家在编辑框中没有输入任何数字和算符而直接按下了“验算”按钮,则会弹出“内部错误!”的提示对话框。(b)如果玩家输入的数字与扑克牌给出的数字不符合,则会弹出“内部错误!”的提示对话框。(c)如果玩家输入的数字与四张牌相符、字符亦合法但是计算结果不为24,会弹出“内部错误!”的提示对话框并在表达式编辑框中显示“错误!”(d)如果玩家输入算式经运算后所得答案正确,则会在编辑表达式框中显示“正确!”

5.2 测试结果

(a)进入游戏界面

图5-1 游戏界面

说明:本界面为游戏初始界面,默认难度级别为中级。

(b)发牌

图5-2 发牌界面

说明:点击“发牌”按钮,自动发牌,计时进度条开始滚动。

(c)不输入验算公式界面

图5-3 错误界面

说明:当不输入验算公式时,游戏界面会显示错误的提示。

(d)输入验算公式

图5-4 输入算式界面

图5-5正确输出界面

图5-6 错误输出界面

说明:点击输入算式后耗时标识停止,在旁边的输入框中输入算式后点击验算,正确或错误的界面会显示

(e)没有来的及输入表达式,超过限制时间,页面显示为

图5-7 超时输出界面

说明:.如果在规定的时间内,玩家没有点击验算按钮,则会弹出“内部错误”的窗口。

6.小结

这次课程设计,还是像往常一样,先由班长进行分组,每个小组完成一个任务。这次我分到的学习任务是完成二十四点游戏软件开发的编程。由于没有接触过游戏编程,一看到这个题目我就懵了。但是课程设计还要继续,我先试着从网上搜寻我所需要的资料,可网上资料比较零散,在老师的提醒下,我去图书馆找到了我所需要的。书中一些案例和我所要做的课程设计类似,经过自己知识上的补充和同组成员的协助,我顺利的完成了这次课程设计。

课程设计是本科学习阶段一次非常难得的理论与实际相结合的机会,通过这次

比较完整的一个程序的设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的基础知识,解决实际问题的能力,同时也提高我查阅文献资料、对程序整体的把握等其他能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富。这是我们都希望看到的也正是我们进行课程设计的目的所在。虽然设计内容繁多,过程繁琐但我的收获却更加丰富。各种组件的运用,各种算法的应用,各种控件的利用我都是随着设计的不断深入而不断熟悉并逐步掌握的。和老师以及同学的沟通交流更使我对程序整体的规划与设计有了新的认识也对自己提出了新的要求。?

?根据我在实习中遇到得问题,我将在以后的学习过程中注意以下几点:1、认真上好专业实验课,多在实践中锻炼自己。2、写程序的过程中要考虑周到,严密。

3、在做设计的时候要有信心,有耐心,切勿浮躁。

4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。

5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。

课程设计不仅能提高我们对所学知识的综合运用能力,全面检查并掌握所学的内容,还让我懂得怎样把理论运用到实际,在实践中遇到问题怎样用理论解决。在上机调试的过程中,我对数据结构这一门课所学的知识有了更深入的掌握和理解,巩固了理论教学所学到的知识,扩展了我的编程思想。

顺利如期的完成本次课程设计给了我很大的信心,但是也让多不足的地方,学习其实就是一个不断完善的过程,正视自己的不足之处,在以后的工作和学习中不断的弥补这些不足之处,在以后的生活中也要保持同样的态度,不断的完善自己。

参考文献

[1]谭浩强.C++程序设计(第二版)[M].北京:清华大学出版社,2012.

[2]刘弘,刘希玉.面向对象程序设计——VC++6.0与基于ACIS的几何造型[M].北京:北京邮电大学出版社,2005.

[3]杨正华,张秋生.Visual C++游戏编程导学[M].北京:清华大学出版社,2004.

[4]谭浩强.C++程序设计题解与上机指导(第二版)[M].北京:清华大学出版社,2012.

[5]肖永亮.Visual C++游戏编程基础[M].北京:电子工业出版社,2005.

[6]肖宏伟.Visual C++实效编程百例[M].北京:人民邮电出版社,2004.

[7]陈清华.Visual C++课程设计案例精选与编程指导[M].南京:东南大学出版社,2004.

附录

附录1 源程序清单

// Point24Dlg.cpp : implementation file

#include "stdafx.h"

#include "Point24.h"

#include "Point24Dlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

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

// 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)

//}}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()

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

// CPoint24Dlg dialog

CPoint24Dlg::CPoint24Dlg(CWnd* pParent /*=NULL*/)

: CDialog(CPoint24Dlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CPoint24Dlg)

m_inputs = _T("");

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

//初始化变量

m_number1=m_number2=m_number3=m_number4=0;

m_pattern1=m_pattern2=m_pattern3=m_pattern4=129;

Step=500;

m_score=0;

m_factor=4;

count=0;

//设置列表框列属性

lvItem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;

lvItem.state = 0;

lvItem.stateMask = 0;

lvItem.iImage = 0;

}

void CPoint24Dlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CPoint24Dlg)

DDX_Control(pDX, IDC_LIST, m_list);

DDX_Control(pDX, IDC_PROGRESS, m_progress);

DDX_Control(pDX, IDC_COMBO, m_combo);

DDX_Control(pDX, IDC_EDIT1, m_input);

DDX_Text(pDX, IDC_EDIT1, m_inputs);

DDV_MaxChars(pDX, m_inputs, 15);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CPoint24Dlg, CDialog)

//{{AFX_MSG_MAP(CPoint24Dlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_START, OnStart)

ON_BN_CLICKED(IDC_INPUT, OnInput)

ON_BN_CLICKED(IDC_CALC, OnCalc)

ON_CBN_SELCHANGE(IDC_COMBO, OnSelchangeCombo)

ON_WM_TIMER()

ON_COMMAND(IDD_ABOUT, OnAbout)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

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

// CPoint24Dlg message handlers

BOOL CPoint24Dlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

//设置组合框选项

m_combo.InsertString(0,"高级");

m_combo.InsertString(1,"中级");

m_combo.InsertString(2,"低级");

m_combo.SetCurSel(1);

//设置记录条

m_progress.SetRange(1,100);

m_progress.SetStep(2);

m_progress.SetPos(0);

//初始化分数

SetDlgItemText(IDC_CUR_SCORE,"0");

//设置列表框列属性

LV_COLUMN lvColumn;

lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;

lvColumn.fmt = LVCFMT_CENTER;

lvColumn.cx = 52;

//设置列表框列标题

lvColumn.iSubItem = 0;

lvColumn.pszText = "题数";

m_list.InsertColumn(0, &lvColumn);

lvColumn.iSubItem = 1;

lvColumn.pszText = "对错";

m_list.InsertColumn(1, &lvColumn);

return TRUE; // return TRUE unless you set the focus to a control

}

void CPoint24Dlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

void CPoint24Dlg::OnPaint()

{

CPaintDC pDC(this); // device context for painting

if (IsIconic())

{

SendMessage(WM_ICONERASEBKGND, (WPARAM) pDC.GetSafeHdc(), 0);

// 使图标处于客户矩形的中央

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// 画图标

pDC.DrawIcon(x, y, m_hIcon);

}

else

{

//显示扑克牌

CRect rect;

CBitmap card1,card2,card3,card4,*OldBitMap;

CDC *dc,dcMem;

dc=GetDC();

dcMem.CreateCompatibleDC(&pDC);

card1.LoadBitmap(m_pattern1);

OldBitMap=dcMem.SelectObject(&card1);

dc->BitBlt(50,30,BitmapW,BitmapH,

&dcMem,0,0,SRCCOPY);

dcMem.SelectObject(OldBitMap);

DeleteObject(&card1);

card2.LoadBitmap(m_pattern2);

OldBitMap=dcMem.SelectObject(&card2);

dc->BitBlt(130,30,BitmapW,BitmapH,

&dcMem,0,0,SRCCOPY);

dcMem.SelectObject(OldBitMap);

DeleteObject(&card2);

card3.LoadBitmap(m_pattern3);

OldBitMap=dcMem.SelectObject(&card3);

dc->BitBlt(210,30,BitmapW,BitmapH,

&dcMem,0,0,SRCCOPY);

dcMem.SelectObject(OldBitMap);

DeleteObject(&card3);

card4.LoadBitmap(m_pattern4);

OldBitMap=dcMem.SelectObject(&card4);

dc->BitBlt(290,30,BitmapW,BitmapH,

&dcMem,0,0,SRCCOPY);

dcMem.SelectObject(OldBitMap);

DeleteObject(&card4);

dcMem.DeleteDC();

CDialog::OnPaint();

}

}

// The system calls this to obtain the cursor to display while the user drags

// the minimized window.

HCURSOR CPoint24Dlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

//发牌

void CPoint24Dlg::OnStart()

{

// TODO: Add your control notification handler code here m_progress.SetPos(0);

m_combo.EnableWindow(FALSE);

m_number1=((double)rand()/(double)RAND_MAX)*9+1;

m_number2=((double)rand()/(double)RAND_MAX)*9+1;

m_number3=((double)rand()/(double)RAND_MAX)*9+1;

m_number4=((double)rand()/(double)RAND_MAX)*9+1;

m_pattern1=130+m_number1;

m_pattern2=143+m_number2;

m_pattern3=156+m_number3;

m_pattern4=169+m_number4;

m_input.SetReadOnly(TRUE);

if(m_pattern4>172) m_pattern4+=7;

UpdateData(FALSE);

Invalidate(FALSE);

SetTimer(1, Step, NULL);

CWnd *pWnd=GetDlgItem(IDC_CALC);

pWnd->EnableWindow(TRUE);

pWnd=GetDlgItem(IDC_INPUT);

pWnd->EnableWindow(TRUE);

}

//输入计算式

void CPoint24Dlg::OnInput()

{

// TODO: Add your control notification handler code here m_input.SetReadOnly(FALSE);

KillTimer(TRUE);

}

//计算

void CPoint24Dlg::OnCalc()

{

// TODO: Add your control notification handler code here UpdateData(TRUE);

int result = m_expression.ChangeExpression(m_inputs);

if (result<0)

{

long result = m_expression.Value(m_Result);

if (result == DIVISION_BY_0)

AfxMessageBox("除数不能为零!");

}

else

{

AfxMessageBox(_T("内部错误!"));

}

m_inputs.Empty();

if(m_Result==24)

{

m_inputs="正确!";

m_score+=m_factor;

CString str;

str.Format("%d",m_score);

SetDlgItemText(IDC_CUR_SCORE,str);

}

else

m_inputs="错误!";

char s;

count+=1;

wsprintf(&s,"%d",count);

lvItem.iItem = count-1;

lvItem.iSubItem = 0;

lvItem.pszText = &s;

m_list.InsertItem(&lvItem);

m_list.SetItemText(count-1, 1, m_inputs);

UpdateData(FALSE);

m_inputs=_T("");

// FirstResult=SecondResult=0;

// flag='a';

KillTimer(TRUE);

m_combo.EnableWindow(TRUE);

CWnd *pWnd=GetDlgItem(IDC_CALC);

pWnd->EnableWindow(FALSE);

pWnd=GetDlgItem(IDC_INPUT);

pWnd->EnableWindow(FALSE);

}

//选择组合框选项

void CPoint24Dlg::OnSelchangeCombo()

{

// TODO: Add your control notification handler code here

int i=m_combo.GetCurSel();

if(i=0)

{

Step=600;

m_factor=2;

}

if(i=1)

{

Step=500;

m_factor=4;

}

if(i=2)

{

Step=400;

m_factor=6;

}

}

//计时器处理函数

void CPoint24Dlg::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default m_progress.StepIt();

if(m_progress.GetPos()>=100)

{

KillTimer(1);

m_inputs=_T("超时!");

OnCalc();

}

else

CDialog::OnTimer(nIDEvent);

}

void CPoint24Dlg::OnAbout()

{

// TODO: Add your command handler code here

CAboutDlg dlg;

dlg.DoModal();

}

void CPoint24Dlg::OnCancel() {}

24点游戏题及答案

1,1,1, 8(1+1+1)×8=24 1126(1+1+2)×6=24 1127(1+2)×(1+7)=24 1128:(1×1+2)×8=24 1129:(1+2)×(9-1)=24 11210:(1+1)×(2+10)=24 1134:(1+1)×3×4=24 1135: (1+3)×(1+5)=24 1136:(1×1+3)×6=24 1137:(1×1+7)×3=24 1138:(1-1+3)×8=24 1139:(1+1)×(3+9)=24 11310:(10-(1+1))×3=24 1144:(1+1+4)×4=24 1145:(1×1+5)×4=24 1146:(1-1+4)×6=24 1147:(7-1×1)×4=24 1148:(1+1)×(4+8)=24 1149:(4-1)×(9-1)=24 11410:(1+1)×10+4=24 1155:5×5-1×1=24 1156:(5-1×1)×6=24 1157:(1+1)×(5+7)=24 1158:(5-(1+1))×8=24 1166:(1+1)×(6+6)=24 1168:6×8÷(1+1)=24 1169:(1+1)×9+6=24 11710:(1+1)×7+10=24 1188:(1+1)×8+8=24 1224:(1+2)×2×4=24 1225:(1+5)×(2+2)=24 1226: (1+2)×(2+6)=24 1227:(7-1)×(2+2)=24 1228:(2-1+2)×8=24 1229:(1+2+9)×2=24 12210:(1+2)×(10-2)=24 1233:(1+3)×2×3=24 1234:(1+2+3)×4=24 1235:(1+2)×(3+5)=24 1236:(3-1+2)×6=24 1237:1+2+3×7=24 1238:(2-1)×3×8=24 1239:3×9-(1+2)=24 12310:(10- 1×2)×3=24 1244:(1+2)×(4+4)=24 1245:(5-1+2)×4=24 1246:(2-1)×4×6=24 1247:(1- 2+7)×4=24 1248:(1-2+4)×8=24 1249:(9-(1+2))×4=24 12410:1×2×10+4=24 1255:1- 2+5×5=24 1256:(1-2+5)×6=24 1257:1×2×(5+7)=24 1258:(5-1×2)×8=24 1259: (1+2)×5+9=24 12510:2×10-1+5=24 1266:(1+2)×6+6=24 1267:(7-(1+2))×6=24 1268:(6-(1+2))×8=24 1269:1×2×9+6=24 12610:(1+2)×10-6=24 1277:(7×7-1)÷2=24 1278:(1+7)×2+8=24 1279:2×9-1+7=24 12710:1×2×7+10=24 1288:1×2×8+8=24 1289:8×9÷(1+2)=24 12810:10+(8-1)×2=24 1333:(1+3)×(3+3)=24 1334:(1×3+3)×4=24 1335:1×3×(3+5)=24 1336:(6-1+3)×3=24 1337:1×3+3×7=24 1338:(1+8)×3-3=24 1339:(1+3)×(9-3)=24 13310:(1-3+10)×3=24 1344:(4-1+3)×4=24 1345:1+3+4×5=24 1346:6÷(1-3÷4)=24 1347:4×7-(1+3)=24 1348:(1+3)×4+8=24 1349:(9-1×3)×4=24 13410:(1+3)×(10-4)=24 1356:(1+5)×3+6=24 1357:(3-1)×(5+7)=24 1358:(1-3+5)×8=24 1359:1×3×5+9=24 13510:3×10-(1+5)=24 1366:(1-3+6)×6=24 1367:(7-1×3)×6=24 1368:(6-1×3)×8=24 1369:6+(3-1)×9=24 13610:1×3×10-6=24 1377:(7-1)×(7-3)=24 1378:(7-(1+3))×8=24 1379:(1+7)×9÷3=24 13710:10+(3-1)×7=24 1388:(1+3)×8-8=24 1389:8×9÷1×3=24 13810:(10-1)÷3×8=24 1399:(9-1)÷3×9=24 13910:(1+10)×3-9=24 131010:1+3+10+10=24 1444:(1+4)×4+4=24 1445:1×4+4×5=24 1446:(1+6)×4-4=24 1447:4×7-1×4=24 1448:1×4×4+8=24 1449:(1-4+9)×4=24 14410:1×4×(10-4)=24 1455:4×5-(1-5)=24 1456:6÷(5÷4-1)=24 1457:1-5+4×7=24 1458: (1+5)×(8-4)=24 1459:9-(1-4)×5=24 14510:(1-5)×(4-10)=24 1466:(1+4)×6-6=24 1467:(1-4+7)×6=24 1468:(1-4+6)×8=24 1469:(9-(1+4))×6=24 14610:(4-1)×10-6=24 1477:(1+7)×(7-4)=24 1478:(7-1×4)×8=24 1479:(1-9)×(4-7)=24 1488:(8-(1+4))×8=24 1489:8×9÷(4-1)=24 14910:1+4+9+10=24 141010:1×4+10+10=24 1555:(5-1÷5)×5=24 1556:(1+5)×5-6=24 1559:(1+5)×(9-5)=24 15510:(10-5)×5-1=24 1566:1×5×6-6=24 1567:1-7+5×6=24 1568:(1-5+8)×6=24 1569:(9-1×5)×6=24 15610:(1+5)×(10-6)=24 1578:(1-5+7)×8=24

算24点答案全集

算24点答案全集(供参考) 说明:* 表示乘号,T=10 , J=11 ,Q=12,K=13 28) 1226 (1+2)*(2+6) 29) 1227 (2+2)*(7-1) 30) 1228 (2-1+2)*8 31) 1229 2*(1+2+9) 32) 1233 3*2*(1+3) 33) 1234 4*(1+2+3) 34) 1235 (1+2)*(3+5) 35) 1236 3*(1*2+6) 36) 1237 1+2+3*7 37) 1238 2*(1+3+8) 38) 1239 1*2*(3+9) 39) 1244 (1+2)*(4+4) 40) 1245 4*(2-1+5) 41) 1246 (2-1)*4*6 42) 1247 2*(1+4+7) 43) 1248 1*2*(4+8) 44) 1249 4+2*(1+9) 45) 1255 1+5*5-2 46) 1256 (1+5-2)*6 47) 1257 1*2*(5+7) 48) 1258 (1+5)/2*8 49) 1259 9+(1+2)*5 50) 1266 6+(1+2)*6 51) 1267 (1+7)/2*6 52) 1268 1*6/2*8 53) 1269 6+1*2*9 54) 1277 (7*7-1)/2 55) 1278 1+7+2*8 56) 1279 1+9+2*7 57) 1288 8+1*2*8 58) 1289 9+2*8-1 59) 1333 (1+3)*(3+3) 60) 1334 4*(1*3+3) 61) 1335 1*3*(3+5) 62) 1336 3+3*(1+6) 63) 1337 1*3+3*7 64) 1338 3*(1+8)-3 65) 1339 (1+3)*(9-3) 66) 1344 1*3*(4+4) 67) 1345 1+3+4*5 68) 1346f 6/(1-3/4) 69) 1347 (1+3)*7-4 70) 1348 8+(1+3)*4 71) 1349 1+3*9-4 72) 1356 1+5+3*6 73) 1357 (7-3)*(1+5) 74) 1358 1+8+3*5 75) 1359 9+1*3*5 76) 1366 6+1*3*6 77) 1367 (7-3)*1*6 78) 1368 (1+6/3)*8 79) 1369 3*(1+9)-6 80) 1377 (7-3)*(7-1) 81) 1378 (7-(1+3))*8 82) 1379 (1+7)*9/3 83) 1388 (1+3)*8-8 84) 1389 1*8*9/3 85) 1399 (9-1)*9/3 86) 1444 4+4*(1+4) 87) 1445 1*4+4*5

游戏24点课程设计报告

游戏24点课程设计报告 一.题目: 分析类: 计算24点:任意输入4位数字,利用+,-,*,/四则运算使之得到结果 24。输出所有不同算法的计算表达式,可为运算优先级而使用括号。 二.问题分析: 1.全面性: 此问题要求输出结果为24的计算表达式,并且要求输出要全面,我考虑用for循环与递归实现遍历来保证输出的全面性,考虑到递归的‘一归到底',每一次完整递归都代表一种算法(详情见算法)。 2.输出的判定和四位数字的类型: 在输出的时候对最后结果等于24的判别,因为考虑到有除法,有可能中途结果可能会出现不能整除的情况与小数,所以输出的四个数都设为float型,且输出判定的时候用近似判定法,而不直接写让最后结果等于24(详情见算法)。 3.重复性: 如果用循环与递归保证了输出24的表达式的全面性,但不可避免的会出现重复,才开始我想在遍历与递归时,加一些限定条件来消除重复但是这样做不但会出错,还不能保证它的输出全面性。于是我想在输出的时候加限定条件,使重复的只输出一遍。 但是对于输入的那4位数字中如果有重复的话,程序结果还是会出现重复的,此问题尚未解决.(详情见算法)。 4.括号问题的处理: 对于括号问题,我规定对每一步的计算表达式,除了*之外,+,-,\都加上括号,即让程序按自己规定的方向执行,输出的括号只是让人能看懂,其实在运算时不起作用(详情见算法)。 5.输出: 输出方面我以为用了遍历所以在每一层遍历都把运算表达式存到一个较大的数组中,在输出的时候如果满足输出条件(在遍历时纪录每次递归的第一次运算的结果,第一次运算的运算符,第二次运算的结果,第二次运算的运算符和第三次运算的运算符),就直接把那个数组里的内容输出,遍历会直接去寻找表达式里的表达式(详情见算法)。 三.算法描述(源代码里有更详尽解释): 1.主要方法: 遍历与递归。 2.主要思路: 把输入的四个数放在一个数组n[4]中,然后任取其中任意两个(不能取同一个--既不能出现自己和自己运算的情况),然后用一个for和一个switch语句来实现这两个数的加减乘除运算,然后把运算的结果放到另一个数组b[4]中并记录此运算的表达式(放到一个大一点的数组tm[4][25]中),同时把其他两个没用到的数也放到该数组中,然后重复以上过程(用遍历实现),最后先判定是不是最后一层运算,是的话在判定最后结果是不是等于24,等于24的话就把那个纪录运算式的数组输出。然后考虑到不能出现重复的(例如:1*2*3*4和2*4*3*1等等)我在遍历的同时记录了第一次运算的结果,第一次运算的运算符,第二次运算的结果,第二次运算的运算符和第三次运算的运算符,对输出的时候做限定(例如:对运算符全*的只输出一遍等等)。在有一次输出后我还定义了另外两个数组用来分别保存上一次输出的第一次运算的结果,第一次运算的运算符,第二次运算的结果,第二次运算的运算符和第三次运算的运算符,来解决重复输出的问题,不过此种做法有可能导致输出的时候不全。(此问题尚未解决)即还不能同时保证全面性与不重复性。 3.主要函数与数组:

小学四年级算24点比赛试题

蓬街二小四年级算24点比赛试题 (时间:40分满分100分) 学校班级姓名得分一、算24点。(每题3分,共60分) 例:2 4 4 8 4+8=12,4-2=2,12×2=24。或(4+8)×(4-2)=24。 (1)1,4 ,7 ,7 (2)1 ,7 ,7,9 (3)3 ,3,5,7 (4)4,5,5,7 (5)1,5 ,7 ,10 (6)1 ,4 ,4,9 (7)5 ,6 ,7 ,9 (8)4,4 ,7,8 (9)1,3 ,10,10 (10)2,2 ,4,4 (11)5,8,8,8 (12)1,2 ,8,10 (13)6 ,6,9,10 (14)3,3,3 ,10 (15)2 ,3 ,10 ,10 (16)8,8,8,10 (17)7 ,8,8,10 (18)1,3 ,3,6 (19)3,3 ,3,5 (20)4 ,4 ,8,9

二、用三种方法算24点。(每题5分,共40分,算对一种得2分,算对二 种得4分,算对三种得5分) 说明:调换加数、因数顺序,调换加减、乘除运算顺序,除以1与乘1均视作同种算法。 例:2 4 8 10 第一种: 2+4=6,6+8=14,14+10=24。或2+4+8+10。第二种: 10-2=8,4×8=32,32-8=24。或(10-2)×4-8=24。第三种: 2+10=12,8×12=96,96÷4=24。或8×(2+10)÷4=24。 (1)3,4,4 ,6 第一种: 第二种: 第三种: (2) 4 ,6 ,7 ,7 第一种: 第二种: 第三种: (3) 2 ,3 ,4 ,10 第一种: 第二种: 第三种: (4)3,8,10 ,10 第一种: 第二种: 第三种: (5) 2 ,2,8 ,8 第一种: 第二种: 第三种: (6)1,2 ,3 ,10 第一种: 第二种: 第三种: (7)1,3,4 ,7 第一种: 第二种: 第三种: (8)3,4,9 ,9 第一种: 第二种: 第三种:

24点及巧填运算符号习题(四上数学游戏练习含答案)

. 巧算“24”点练习卷(一) 1.你能将2、4、5、8利用“+、-、×、÷”和括号组成一个结果为24的算式吗?有几种解法? ()()()8524382424583824582420424 -??=?=?-?=?=?÷+=+= 2.四张牌上的数是3、4、6、10,怎样用这四个不同的数组成得数是24 的算式? (写出三种解法) ()()()3104638243610418624 1043618624 ?+-=?=?+-=+=-?+=+= 3. 用1、2、5、8、这四个数组成得数是24的算式。(写出三 种解法) ()()()()()8215462452813824851212224 ÷?+=?=-??=?=+-?=?= 巧算“24”点练习卷(二) 1.怎样用下面四张牌上的数进行计算,使最后得数等于24?(写出三种解法) ()()()() ()2634121224 63423824 46322412434263824 ?+?=+=-??=?=??-=?=?÷+=?= 2. 怎样用3、3,8,9四个数进行计算,使最后得数等 于24?(写出三种解法) ()()()93383824 833915924833933924 --?=?=-?+=+=+?-=-= 3.用两个5和两个6计算,使最后得数等于24。(写出三 种解法) ()()55664624 556625124 65656424 +-?=?=?-÷=-=?--=?=????

. 巧算“24”点练习卷(三) 1.小华从一副扑克牌中摸出四张,请你进行计算,使最后得数等于24。 (写出三种解法) ()()()()6293462493623824396227324 -?-=?=÷?+=?=?-÷=-= 2.有四个数: 1、3、5、9,请你进行计算,使最后得数等于24。 (写出三种解法) ()()()135915924 51934624359124124 ??+=+=-?-=?=?+?=?= 3.你会用2、6、6、7这四个数进行计算,使最后的得数等于24吗? (写出三种解法) ()()()72663062467624822476264624 -?-=-=?+÷=÷=-÷?=?= 巧算“24”点练习卷(四) 1. 你会用两个4和两个5进行计算,使最后的得数是24吗? (写出三种解法) ()()554425124 4554462454546424 ?-÷=-=?+-=?=-+?=?= 2.有四个数: 2、4、8、10,请你进行计算,使最后得数等于 24。 (写出三种解法) ()()()()()82104462410284122244108248224 ÷?-=?=+?÷=?=?+÷=÷= 3.你会用3、4、7、10这四个数进行计算,使最后的得数等于24吗? (写出三种解法)

苏教版三年级数学下册《算24点》教学设计

苏教版三年级数学下册《算“24点”》教学设计 一、教材简解。 本节课是以玩扑克牌算“24点”数学实践活动课,学生要根据3张或者是4张扑克牌上 的数字,通过选择加减乘除运算符号的方法得到24。通过学生喜爱的扑克牌游戏,激发学生 主动探索解决问题的意识和策略,加强加减乘除的口算练习,增强学生学习数学的热情和积 极性。教材安排了三部分的内容,首先通过“学一学”引导学生学习计算24的方法(把A 看作是1,只选数字是1—9的九张不同扑克),其次通过“试一试”让学生根据给定的4张 牌计算出24点,初步探索出计算“24点”的方法,最后让学生进行“比一比”,摸牌计算 看谁先算出24点。 二、目标预设。 1.知识目标:进一步提高学生的口算和心算的能力,让学生掌握计算“24点”的基本知识和 基本技巧,使学生知道固定数量的扑克牌算出24点的方法可能不同,也有可能算不出24点。 2.能力目标:通过试算,调整计算思路,掌握解决问题的策略(穷举),进一步提高解决问 题的能力。 3.情感目标:进一步培养学生的探究能力和合作意识,充分发挥扑克牌的娱乐性和数学性, 增强学生学习数学的兴趣。 三、重点、难点。 利用加、减、乘、除法算出几张牌的结果是24点。 四、设计理念。 本课注意从学生熟悉的生活情境和感兴趣的扑克牌出发,重视从学生的生活经验, 以探究性学习和合作性学习为主导,为学生提供观察和操作的机会。让学生参与到算 “24点”的游戏中,使学生体会到数学就在身边,感受到数学的趣味和作用,对数学产 生亲切感。同时在教学的过程中鼓励学生根据具体情况选用不同的算法,以利于培养思 维的敏捷性、灵活性和发散性。 五、设计思路 本课通过数学熟悉的扑克牌引入课题,开展“初次见面”的活动介绍游戏的玩法, 让学生交流算“24点”基本技巧。再开展“快速抢答”的活动,通过活动让学生在活动 中感受到三张牌算24的一些方法,同时渗透已知三张牌算24时,有时会有多种方法, 培养学生学习数学的兴趣。最后利用思维导图,帮助学生总结计算“24点”的重点和难 点。在以上活动的基础上开展“终极对抗”的活动,评出每一小组的“神算子”。 六、教学过程 (一)出示课题。 1、教师拿出扑克,介绍扑克是我们生活中常用来娱乐的,今天我们要学习的内容就和 扑克有关。“算‘24点’游戏”(板书课题) (二)开展活动 1、介绍游戏的玩法 活动一:初次见面。 (1)找一找,①至少需要几张牌才能算24点,②再增加一张牌算24点。 (2)给出三张牌算24点。

算24点小游戏

研究生课程论文 课程名称C++面向对象程序设计 授课学期2013 学年至2014 学年 第一学期 学院电子工程学院 专业电子与通信 学号 姓名 任课教师 专题算24点小游戏 交稿日期2014年01月10日 成绩 阅读教师签名 日期 广西师范大学研究生学院

目录 1 引言 (2) 1.1 设计任务与要求 (2) 1.2 设计目的 (2) 1.3 C++面向对象语言简介 (2) 2 C++课程设计原理及方案选择 (3) 2.1 概述 (3) 2.1.1 方案设计与论证 (3) 2.2 二十四点游戏的原理 (4) 2.2.1 主函数设计 (4) 2.2.2 子函数的设计 (4) 2.2.3 类体的设计 (5) 3 程序流程及演示 (6) 3.1 程序流程图,程序清单与调用关系 (6) 3.2 程序 (7) 3.3 运行结果 (9) 4 结论 (10)

1引言 随着网络技术的发展,小游戏在网络发展如火如荼。二十四点小游戏是一个不仅能放松认得神经而且益智的趣味小游戏。对于21世纪的今天,作为一个社会工作者来说,面对日益剧烈的竞争,工作压力都是很大的,为了释放压力就需要一个很好的减压平台,那么网络上的小游戏首当其冲,24点小游戏受到了欢迎。 1.1设计任务与要求 题目要求在输入4个数后,程序对这个4个数进行运算,若能计算出结果等于24,即输出运算过程。目标是在输入四个数之后,先进行全排列,然后进行全运算,从而最终得到结果以输出。 1.2设计目的 本次设计的目的就是在掌握c++编程语言和visual c++编译软件的基础上。完成一个算24的小游戏程序设计,在系统提示下输入4个数后,程序对这4个数进行运算,若能计算出结果等于24,即输出运算过程。程序设计目标很明确,在输入4个数之后,先进行全排列,然后进行全运算,重而得到最终结果输出。 1.3C++面向对象语言简介 C++是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。其编译器比目前其他计算机语言的编译技术更复杂。类是C++中十分重要的概念,它是实现面向对象程序设计的基础。类是所有面向对象的语言的共同特征,所有面向对象的语言都提供了这种类型。一个有一定规模的C++程序是由许多类所构成的。 C++支持面向过程的程序设计,也支持基于对象的程序设计,又支持面向对象的程序设计。以后我们将介绍基于对象的程序设计。包括类和对象的概念、类的机制和声明、类对象的定义与使用等。这是面向对象的程序设计的基础。基于对象就是基于类。与面向过程的程

24点游戏规则和解题方法

24点游戏规则和解题方法 “巧算24点”的游戏内容如下:一副牌中抽去大小王剩下52张,其中J、Q、K、A 分别相当于10、11、12、13(如果初练也可只用1~10这40张牌),任意抽取4张牌(称牌组),用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌必须用一次且只能用一次,如抽出的牌是3、8、8、9,那么算式为(9—8)×8×3或3×8+(9—8)或(9—8÷8)×3等。 “算24点”作为一种扑克牌智力游戏,还应注意计算中的技巧问题。计算时,我们不可能把牌面上的4个数的不同组合形式——去试,更不能瞎碰乱凑。这里向大家介绍几种常用的、便于学习掌握的方法: 1.利用3×8=24、4×6=24求解。 把牌面上的四个数想办法凑成3和8、4和6,再相乘求解。如3、3、6、10可组成(10—6÷3)×3=24等。又如2、3、3、7可组成(7+3—2)×3=24等。实践证明,这种方法是利用率最大、命中率最高的一种方法。 2.利用0、11的运算特性求解。 如3、4、4、8可组成3×8+4—4=24等。又如4、5、J、K可组成11×(5—4)+13=24等。 3.在有解的牌组中,用得最为广泛的是以下六种解法:(我们用a、b、c、d 表示牌面上的四个数) ①(a—b)×(c+d)如(10—4)×(2+2)=24等。 ②(a+b)÷c×d如(10+2)÷2×4=24等。 ③(a-b÷c)×d如(3—2÷2)×12=24等。 ④(a+b-c)×d如(9+5—2)×2=24等。 ⑤a×b+c—d 如11×3+l—10=24等。 ⑥(a-b)×c+d 如(4—l)×6+6=24等。

游戏时,同学们不妨按照上述方法试一试。 需要说明的是:经计算机准确计算,一副牌(52张)中,任意抽取4张可有1820种不同组合,其中有458个牌组算不出24点,如A、A、A、5。 (1)一般情况下,先要看4张牌中是否有2,3,4,6,8,Q, 如果有,考虑用乘法,将剩余的3个数凑成对应数。如果有两个相同的6,8,Q,比如已有两个6,剩下的只要能凑成3,4,5都能算出24,已有两个8,剩下的只要能凑成2,3,4,已有两个Q,剩下的只要能凑成1,2,3都能算出24,比如(9,J,Q,Q)。如果没有2,3,4,6,8,Q,看是否能先把两个数凑成其中之一。总之,乘法是很重要的,24是30以下公因数最多的整数。 (2)将4张牌加加减减,或者将其中两数相乘再加上某数,相对容易。 (3)先相乘再减去某数,有时不易想到。例如(4,10,10,J) (6,10,10,K) (4)必须用到乘法,且在计算过程中有分数出现。有一个规律,设4个数为a,b,c,d。必有ab+c=24或ab-c=24d=a或b。若d=a 有a(b+c/a)=24 或 a(b-c/a)=24 如最常见的(1,5,5,5), (2,5,5,10)因为约分的原因也归入此列。(5,7,7,J) (4,4,7,7)(3,3,7,7)等等。(3,7,9,K)是个例外,可惜还有另一种常规方法,降低了难度。只能用此法的只有10个。 (5)必须用到除法,且在计算过程中有分数出现。这种比较难,比如(1,4,5,6),(3,3,8,8)(1,8,Q,Q)等等。 只能用此法的更少,只有7种。 (6)必须用到除法,且在计算过程中有较大数出现,不过有时可以利用平方差公式或提公因数等方法不必算出这个较大数具体等于几。比如(3,5,7,K),(1,6,J,K)等等。只能用此法的只有16种。 (7)最特殊的是(6,9,9,10),9*10/6+9=24,9是3的倍数,10是2的倍数,两数相乘的积才能整除6,再也找不出第二个类似的只能用此法解决的题目了。试一试,你也是算24的专家了。 (1,3,4,6)(1,4,5,6)(1,5,5,5)(1,5,J,J)

计算24点游戏c++

24点游戏软件的开发 1 概述 1.1 课程设计目的 a、巩固并加深学生对C++语言程序设计知识的理解; b、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别; c、进一步掌握和应用VC++ 6.0集成开发环境; d、提高运用C++语言解决实际问题的能力; e、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的MIS系统; f、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。 1.2 课程设计内容 课题名称:24点游戏软件的开发 说明:24点游戏是一种常见的纸牌游戏说明 要求: a)实现随机发牌; b)能进行结果验算; c)计分; d)难度设置。 2 系统需求分析 2.1 系统目标 24点游戏是个流行的数学运算游戏。本次课程设计通过24点游戏来加深我们对对话框编程的认识和理解,并介绍Visual C++在数学计算方面的应用,以及在按钮上设置位图和设置计时器的方法。 24点扑克游戏的规则是:由系统发出4张扑克牌,要求用户利用扑克牌上显示的数字(JQKA算10),通过加减乘除运算得出24。 2.2 主体功能 a.对游戏设计三个难易级别,分别为低级、中级和高级。每次开始游戏前可以根据玩家的需要进行难度设置,如若不设置,系统默认难度级别为中级,设置完难度级别之后就可以开始游戏了,单击“发牌”按钮,桌面上出现四张翻开的扑克牌,与此同时,游戏开始计时,进度条开始前进。 b.在规定的时间内,玩家可以在“输入算式”的编辑框中输入自己想好的算式,然后点击“验算”按钮:如果输入的算式经运算后所的答案正确,则会在编辑框中

显示“正确!”;如果输入的数字与给出的牌的数字不符或者符号不合法,则会弹出“内部错误!”的窗口;如果输入的数字与四张牌相符、字符亦合法但是答案不正确,则会在编辑框中显示“错误”;如果未输入任何的数字和算符,则会弹出“内部错误!”的窗口。 c.如果在规定的时间内,玩家没有点击验算按钮,则会弹出“内部错误”的窗口。 d.在结束本轮游戏后,如果玩家想继续游戏,则可点击“发牌”按钮即可重新发牌,开始下一轮的游戏;如果玩家想结束游戏,则可点击“结束”按钮即可结束游戏。 2.3 开发环境 Microsoft Visual C++ 6.0 3 系统概要设计 3.1 系统功能模块划分 a.建立一个随机产生扑克牌的模块。由程序随机产生4张扑克牌,每张牌对应一个整数。 b.计时的模块。定义一个计时器,以便对使用时间进行计数。 c.计算表达式的模块。主要是通过函数来确定运算式各符号优先级和最终计算出输入算式的结果。 d.验算表达式正误的模块。在规定的时间内输入算式进行验算,根据不同的情况会出现不同的对话框。

24点游戏(10以内数)习题大全(含答案)

1 1 1 8 : (1+1+1)*8=24 1 1 2 6 : (1+1+2)*6=24 1 1 2 7 : (1+2)*(1+7)=24 1 1 2 8 : (1*1+2)*8=24 1 1 2 9 : (1+2)*(9-1)=24 1 1 2 10 : (1+1)*(2+10)=24 1 1 3 4 : (1+1)*3*4=24 1 1 3 5 : (1+3)*(1+5)=24 1 1 3 6 : (1*1+3)*6=24 1 1 3 7 : (1*1+7)*3=24 1 1 3 8 : (1-1+3)*8=24 1 1 3 9 : (1+1)*(3+9)=24 1 1 3 10 : (10-(1+1))*3=24 1 1 4 4 : (1+1+4)*4=24 1 1 4 5 : (1*1+5)*4=24 1 1 4 6 : (1-1+4)*6=24 1 1 4 7 : (7-1*1)*4=24 1 1 4 8 : (1+1)*(4+8)=24 1 1 4 9 : (4-1)*(9-1)=24 1 1 4 10 : (1+1)*10+4=24 1 1 5 5 : 5*5-1*1=24 1 1 5 6 : (5-1*1)*6=24 1 1 5 7 : (1+1)*(5+7)=24 1 1 5 8 : (5-(1+1))*8=24 1 1 6 6 : (1+1)*(6+6)=24 1 1 6 8 : 6*8/(1+1)=24 1 1 6 9 : (1+1)*9+6=24 1 1 7 10 : (1+1)*7+10=24 1 1 8 8 : (1+1)*8+8=24 1 2 2 4 : (1+2)*2*4=24 1 2 2 5 : (1+5)*(2+2)=24 1 2 2 6 : (1+2)*(2+6)=24 1 2 2 7 : (7-1)*(2+2)=24 1 2 2 8 : (2-1+2)*8=24 1 2 2 9 : (1+2+9)*2=24 1 2 2 10 : (1+2)*(10-2)=24 1 2 3 3 : (1+3)*2*3=24 1 2 3 4 : (1+2+3)*4=24 1 2 3 5 : (1+2)*(3+5)=24 1 2 3 6 : (3-1+2)*6=24 1 2 3 7 : 1+2+3*7=24 1 2 3 8 : (2-1)*3*8=24 1 2 3 9 : 3*9-(1+2)=24 1 2 4 4 : (1+2)*(4+4)=24 1 2 4 5 : (5-1+2)*4=24 1 2 4 6 : (2-1)*4*6=24 1 2 4 7 : (1-2+7)*4=24 1 2 4 8 : (1-2+4)*8=24 1 2 4 9 : (9-(1+2))*4=24 1 2 4 10 : 1*2*10+4=24 1 2 5 5 : 1-2+5*5=24 1 2 5 6 : (1-2+5)*6=24 1 2 5 7 : 1*2*(5+7)=24 1 2 5 8 : (5-1*2)*8=24 1 2 5 9 : (1+2)*5+9=24 1 2 5 10 : 2*10-1+5=24 1 2 6 6 : (1+2)*6+6=24 1 2 6 7 : (7-(1+2))*6=24 1 2 6 8 : (6-(1+2))*8=24 1 2 6 9 : 1*2*9+6=24 1 2 6 10 : (1+2)*10-6=24 1 2 7 7 : (7*7-1)/2=24 1 2 7 8 : (1+7)*2+8=24 1 2 7 9 : 2*9-1+7=24 1 2 7 10 : 1*2*7+10=24 1 2 8 8 : 1*2*8+8=24 1 2 8 9 : 8*9/(1+2)=24 1 2 8 10 : 10+(8-1)*2=24 1 3 3 3 : (1+3)*(3+3)=24 1 3 3 4 : (1*3+3)*4=24 1 3 3 5 : 1*3*(3+5)=24 1 3 3 6 : (6-1+3)*3=24 1 3 3 7 : 1*3+3*7=24 1 3 3 8 : (1+8)*3-3=24 1 3 3 9 : (1+3)*(9-3)=24 1 3 3 10 : (1-3+10)*3=24 1 3 4 4 : (4-1+3)*4=24 1 3 4 5 : 1+3+4*5=24 1 3 4 6 : 6/(1-3/4)=24 1 3 4 7 : 4*7-(1+3)=24 1 3 4 8 : (1+3)*4+8=24 1 3 4 9 : (9-1*3)*4=24 1 3 4 10 : (1+3)*(10-4)=24 1 3 5 6 : (1+5)*3+6=24 1 3 5 7 : (3-1)*(5+7)=24 1 3 5 8 : (1-3+5)*8=24 1 3 5 10 : 3*10-(1+5)=24 1 3 6 6 : (1-3+6)*6=24 1 3 6 7 : (7-1*3)*6=24 1 3 6 8 : (6-1*3)*8=24 1 3 6 9 : 6+(3-1)*9=24 1 3 6 10 : 1*3*10-6=24 1 3 7 7 : (7-1)*(7-3)=24 1 3 7 8 : (7-(1+3))*8=24 1 3 7 9 : (1+7)*9/3=24 1 3 7 10 : 10+(3-1)*7=24 1 3 8 8 : (1+3)*8-8=24 1 3 8 9 : 8*9/1*3=24 1 3 8 10 : (10-1)/3*8=24 1 3 9 9 : (9-1)/3*9=24 1 3 9 10 : (1+10)*3-9=24 1 3 10 10 : 1+3+10+10=24 1 4 4 4 : (1+4)*4+4=24 1 4 4 5 : 1*4+4*5=24 1 4 4 6 : (1+6)*4-4=24 1 4 4 7 : 4*7-1*4=24 1 4 4 8 : 1*4*4+8=24 1 4 4 9 : (1-4+9)*4=24 1 4 4 10 : 1*4*(10-4)=24 1 4 5 5 : 4*5-(1-5)=24 1 4 5 6 : 6/(5/4-1)=24 1 4 5 7 : 1-5+4*7=24 1 4 5 8 : (1+5)*(8-4)=24 1 4 5 9 : 9-(1-4)*5=24 1 4 5 10 : (1-5)*(4-10)=24 1 4 6 6 : (1+4)*6-6=24 1 4 6 7 : (1-4+7)*6=24 1 4 6 8 : (1-4+6)*8=24 1 4 6 9 : (9-(1+4))*6=24 1 4 6 10 : (4-1)*10-6=24 1 4 7 7 : (1+7)*(7-4)=24 1 4 7 8 : (7-1*4)*8=24 1 4 7 9 : (1-9)*(4-7)=24 1 4 8 8 : (8-(1+4))*8=24 1 4 8 9 : 8*9/(4-1)=24 1 4 9 10 : 1+4+9+10=24 1 4 10 10 : 1*4+10+10=24 1 5 5 5 : (5-1/5)*5=24 1 5 5 6 : (1+5)*5-6=24

17 24点游戏系统设计

中北大学 课程设计说明书 学生姓名:学号: 学生姓名:学号: 学生姓名:学号: 学院:信息与通信工程学院 专业:电子信息工程 题目:多媒体技术和程序设计实践: 24点游戏系统设计 指导教师:陈友兴赵英亮职称:副教授 2011年1月7日

中北大学 课程设计任务书 10/11学年第一学期 学院:信息与通信工程学院 专业:电子信息工程 学生姓名:学号: 学生姓名:学号: 学生姓名:学号: 课程设计题目:多媒体技术和程序设计实践: 24点游戏系统设计 起迄日期:2010年12月18日~2011年1月7日课程设计地点:电子信息工程专业实验室 信息工程系实验室 指导教师:陈友兴赵英亮 系主任:王浩全 下达任务书日期:2010年12月17日

1.设计目的: (1)掌握VC++程序开发平台; (2)掌握对话框模式的可视化实现和按钮消息的响应; (3)掌握应用VC++库函数实现数据的输入、计算等功能。 2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):(1)查阅相关资料,掌握基于面向对象的编程方法; (2)主界面采用对话框模式,编辑24点游戏的相应控件; (3)实现发牌、计算和验证的功能; (4)要求3位同学各自实现不同分工。 3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕: (1)要求设计组的每个成员都要了解设计的要求和思路; (2)编写详细的设计说明书一份; (3)要求有正确的运行结果及结果分析。

4.主要参考文献: 1王华,叶爱亮,祁立学等.Visual C++6.0编程实例与技巧.北京:机械工业出版社,1999. 2李光明.Visual C++6.0经典实例大制作.北京:中国人事出版社,2000. 3严华峰.Visual C++课程设计案例精编.北京:中国水利水电出版社,2002. 4官章全,刘加明.Visual C++6.0类库大全.北京:电子工业出版社,1999. 5张荣梅,梁晓林.Visual C++实用教程.北京:冶金工业出版社,2004. 6魏亮,李春葆.Visual C++程序设计例学与实践.北京:清华大学出版社,2006. 7陈清华,朱红.Visual C++课程设计案例精选与编程指导.南京:东南大学出版社,2004. 5.设计成果形式及要求: 提供详细的设计说明书一份 软件设计结果 6.工作计划及进度: 2010年 12月18日~12月22日:学习VC有关编程方法; 12月23日~2011年1月3日:在指导教师指导下实现程序设计; 2011年1月4日~1月6日:撰写课程设计说明书; 1月7日:答辩 系主任审查意见: 签字: 年月日

小升初面试数学速算游戏 24点相当好玩

3 扑克牌算24点的奥秘(速算技巧) 有一种叫“24点”的游戏曾经风靡美国、日本等许多国家,深受青少年朋友的喜爱。这种游戏将两张王牌去掉,把A、J、Q、K分别看作1点,11点、12点、13点,或者将它们均看1点,其余牌面是几点,就是几点。 玩的规则不尽相同,其中有一种方法是: (1)四个人每人抓到13张牌,每人每次从手中任意抽取一张牌。 (2)参加游戏者对这四张牌所代表的数值进行+、-、×、÷、()运算,使结果为24。 (3)谁先列出,谁就得1分,牌入底;若四人均无法列出,则无人得分,牌也入底。 (4)再次每人任意抽取一张牌,再次按(2)(3)规则进行。 (5)重复(2)、(3)、(4),直至每人手中13张牌全部用完为一局,得分多者为胜。 例如,抽出的四张牌为3、4、7、11,可以这样计算: (7-4)×(11-3)=3×8=24,或(7+11)÷3×4=18÷3×4=6×4=24 这是一种非常有趣的游戏,下面我们一起来试一试: 例1 抽出下面四组牌:(A,J,Q,K分别为1点,11点,12点,13点) (1)2,3,4,5 (2)3,4,5,10 (3)K,7,9,5 (4)J,6,Q,5 你能算出24点吗? 分别:要想比赛获胜,必须有一些技巧。那就是要非常清楚24可以由怎样的两个数求得,如2×12=24,4×6=24,3×8=24,18+6=24,30-6=24……这样就可以把问题转化成怎样使用4个数,凑出两个数的问题,其中有一点值得大家注意,就是四个数的顺序可以依据需要任意安排。 解:(1)依据2×12=24,可得2×(3+4+5)=24,

(2)依据3×8=12,可得3×(10÷5×4)=24, (3)依据4×6=24,可得(13-7)×(9-5)=24, (4)依据18+6=24,可得(11-5)+(6+12)=24 说明:上面各题的解法并不一定是唯一的,如依据4×6=24,也可得第(2)组为4×(10×3÷5)=24,可是,就因为这样,才非常激烈、刺激。 例2 如果恰巧四个人抽出的扑克牌是“1~9”中的同一数字的牌,请你帮忙想一想哪种情况可以算出“24”?怎样算? 分析:四人抽出同一数字的牌有9种情况,4个1,4个3,4个4……4个8,4个9,现在的问题转化为如何使四个相同的数字(1~9中的一个)填加运算符号,得“24”的问题。由于4个数字相同,用乘法关系最后求得“24”就不太容易,应考虑+、-关系,27-3=24,25-1=24,20+4=24,12+12=24……经过尝试,我们发现,4个1,4个2,由于数太小,无法算出“24”,而4个7,4个8,4个9由于太大,也无法算出。其余可以实现。 解:依据27-3=24 ,可得3×3×3-3=24, 依据20+4=24 ,可得4×4+4+4=24, 依据25-1=24 ,可得5×5-5÷5=24, 依据12+12=24 ,可得(6+6)+(6+6)=24, 练习题 1.在“24”点游戏中提出了下面几组牌,你能很快求出“24”吗? (1)1,3,5,7 (2)2,5,7,9 (3)1,3,9,10 (4)10,4,10,4 (5)K,Q,J,J (6)Q,10,Q,1 分析:(4)10×10=100是4的25倍,100-4=96,正好是4的24倍,所以可以这样做(10×10-4)÷4=24 (5)K,Q,J,J即13,12,11,11,依据25-1=24可得13+12-11÷11=24

数学算24点题目汇集

1 1 1 8 1 1 2 6 1 1 2 7 1 1 2 8 1 1 2 9 1 1 2 10 1 1 3 4 1 1 3 5 1 1 3 6 1 1 3 7 1 1 3 8 1 1 3 9 1 1 3 10 1 1 4 4 1 1 4 5 1 1 4 6 1 1 4 7 1 1 4 8 1 1 4 9 1 1 4 10 1 1 5 5 1 1 5 6 1 1 5 7 1 1 5 8

1 1 6 8 1 1 6 9 1 1 7 10 1 1 8 8 1 2 2 4 1 2 2 5 1 2 2 6 1 2 2 7 1 2 2 8 1 2 2 9 1 2 2 10 1 2 3 4 1 2 3 5 1 2 3 6 1 2 3 7 1 2 3 8 1 2 3 9 1 2 3 10 1 2 4 4 1 2 4 5 1 2 4 6 1 2 4 7

1 2 4 9 1 2 4 10 1 2 5 5 1 2 5 6 1 2 5 7 1 2 5 8 1 2 5 9 1 2 5 10 1 2 6 6 1 2 6 7 1 2 6 8 1 2 6 10 1 2 7 7 1 2 7 8 1 2 7 9 1 2 7 10 1 2 8 8 1 2 8 9 1 2 8 10 1 3 3 3 1 3 3 4 1 3 3 5

1 3 3 7 1 3 3 8 1 3 3 9 1 3 3 10 1 3 4 4 1 3 4 5 1 3 4 6 1 3 4 7 1 3 4 8 1 3 4 9 1 3 4 10 1 3 5 7 1 3 5 8 1 3 5 9 1 3 5 10 1 3 6 6 1 3 6 7 1 3 6 8 1 3 6 9 1 3 6 10 1 3 7 7 1 3 7 8

相关文档
最新文档