C#学习笔记

C#学习笔记
C#学习笔记

Application.EnableVisualStyles()的作用定义:

public static void EnableVisualStyles()

此方法为应用程序启用可视样式。如果控件和操作系统支持视觉样式,则控件将以视觉样式进行绘制。若要使EnableVisualStyles生效,必须在应用程序中创建任何控件之前调用它;EnableVisualStyles 通常是Main 函数的第一行。当调用EnableVisualStyles时,无需单独的清单即可启用可视化样式。[STAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.Run(new Form1());

}

简单的说就是让你的控件(包括窗体)显示出来,如果你建的是winform的程序,那么不调用试试看会有什么结果

Application.SetCompatibleTextRenderingDefault(false)表示什么意思?大意如下:

1.作用:在应用程序范围内设置控件显示文本的默认方式(可以设为使用新的GDI+ , 还是旧的GDI) true使用GDI+方式显示文本,

false使用GDI方式显示文本.

2.只能在单独运行窗体的程序中调用该方法;不能在插件式的程序中调用该方法.

3.只能在程序创建任何窗体前调用该方法,否则会引发InvalidOperationException异常. Application.SetCompatibleTextRenderingDefault

某些Windows 窗体控件可以使用GDI 图形库或更新的GDI+ 库来呈现其文本。由于GDI+ 的性能和本地化问题而做出这样的更改。默认情况下,将支持UseCompatibleTextRendering属性的现有控件设置为true以获得向后兼容性,但Visual Studio 等环境中的所有新控件都将该属性设置为false。要切换新控件的默认文本呈现时,请使用SetCompatibleTextRenderingDefault。

如果在另一个应用程序中承载Windows 窗体代码,例如Internet Explorer,切勿调用该方法。仅在独立的Windows 窗体应用程序中调用该方法。

1.作用:在应用程序范围内设置控件显示文本的默认方式(可以设为使用新的GDI+ , 还是旧的GDI) true使用GDI+方式显示文本,

false使用GDI方式显示文本.

2.只能在单独运行窗体的程序中调用该方法;不能在插件式的程序中调用该方法.

3.只能在程序创建任何窗体前调用该方法,否则会引发InvalidOperationException异常.

IplImage是openCV库中很重要的一个结构体,库中的图像都是保存为这个结构体后再进行操作的。下面先转载一篇将这个结构体的文章https://www.360docs.net/doc/0114230575.html,/m/user_content.aspx?id=251363

IplImage 结构解读:

typedef struct _IplImage

{

int nSize;

/* IplImage大小*/

int ID;

/* 版本(=0)*/

int nChannels;

/* 大多数OPENCV函数支持1,2,3 或4 个通道*/

int alphaChannel;

/* 被OpenCV忽略*/

int depth;

/* 像素的位深度: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U,

IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F 可支持*/ char colorModel[4];

/* 被OpenCV忽略*/

char channelSeq[4];

/* 同上*/

int dataOrder;

/* 0 - 交叉存取颜色通道, 1 - 分开的颜色通道.

cvCreateImage只能创建交叉存取图像*/

int origin;

/* 0 - 顶—左结构,1 - 底—左结构(Windows bitmaps 风格) */

int align;

/* 图像行排列(4 or 8). OpenCV 忽略它,使用widthStep 代替*/

int width;

/* 图像宽像素数*/

int height;

/* 图像高像素数*/

struct _IplROI *roi;

/* 图像感兴趣区域. 当该值非空只对该区域进行处理*/

struct _IplImage *maskROI;

/* 在OpenCV中必须置NULL */

void *imageId;

/* 同上*/

struct _IplTileInfo *tileInfo;

/*同上*/

int imageSize;

/* 图像数据大小(在交叉存取格式下imageSize=image->height*image->widthStep),单位字节*/

char *imageData;

/* 指向排列的图像数据*/

int widthStep;

/* 排列的图像行大小,以字节为单位*/

int BorderMode[4];

/* 边际结束模式, 被OpenCV忽略*/

int BorderConst[4];

/* 同上*/

char *imageDataOrigin;

/* 指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的*/ }

IplImage;

重要结构元素说明:

depth和nChannels

depth代表颜色深度,使用的是以下定义的宏,nChannels是通道数,为1,2,3或4。

depth的宏定义:

IPL_DEPTH_8U,无符号8bit整数(8u)

IPL_DEPTH_8S,有符号8bit整数(8s)

IPL_DEPTH_16S,有符号16bit整数(16s)

IPL_DEPTH_32S,有符号32bit整数(32s)

IPL_DEPTH_32F,32bit浮点数,单精度(32f)

IPL_DEPTH_64F,64bit浮点数,双精度(64f)

(注:这里的颜色深度是指单个通道的数据保存为的变量类型,例如RGB24格式的数据,通道数为3,颜色深度为IPL_DEPTH_8U)

origin和dataOrder

origin变量可以有两个取值:IPL_ORIGIN_TL或者IPL_ORIGIN_BL,分别代表图像坐标系原点在左上角或是左下角。相应的,在计算机视觉领域,一个重要的错误来源就是原点位置的定义不统一。例如,图像的来源不同,操作系统不同,视频解码codec不同,存储方式不同等等,都可以造成原点位置的变化。例如,你可能认为你正在从图像上面的脸部附近取样,但实际上你却在图像下方的裙子附近取样。最初时,就应该检查一下你的系统中图像的原点位置,这可以通过在图像上方画个形状等方式实现。

dataOrder的取值可以是IPL_DATA_ORDER_PIXEL或者IPL_DATA_ORDER_PLANE,这个成员变量定义了多通道图像数据存储时颜色数据的排列方式,如果是

IPL_DATA_ORDER_PIXEL,通道颜色数据排列将会是BGRBGR...的交错排列,如果是

IPL_DATA_ORDER_PLANE,则每个通道的颜色值在一起,有几个通道,就有几个“颜色平面”。大多数情况下,通道颜色数据的排列是交错的。

widthStep与CvMat中的step类似,是以字节数计算的图像的宽度。成员变量imageData则保存了指向图像数据区首地址的指针。

最后还有一个重要参数roi(region of interest 感兴趣的区域),这个参数是IplROI结构体类型的变量。IplROI结构体包含了xOffset,yOffset,height,width,coi成员变量,其中xOffset,yOffset是x,y坐标,coi代表channel of interest(感兴趣的通道)。有时候,OpenCV 图像函数不是作用于整个图像,而是作用于图像的某一个部分。这是,我们就可以使用roi成员变量了。如果IplImage变量中设置了roi,则OpenCV函数就会使用该roi变量。如果coi被设置成非零值,则对该图像的操作就只作用于被coi指定的通道上了。不幸的是,许多OpenCV 函数忽略了coi的值。

访问图像中的数据

就象访问矩阵中元素一样,我们希望用最直接的办法访问图像中的数据,例如,如果我们有一个三通道HSV图像(HSV色彩属性模式是根据色彩的三个基本属性:色相H、饱和度S和明度V 来确定颜色的一种方法),我们要将每个点的饱和度和明度设置成255,则我们可以使用指针来遍历图像,请对比一下,与矩阵的遍历有何不同:

void sat_sv( IplImage* img ) {

for( int y=0; y

uchar* ptr = (uchar*) (

img->imageData + y * img->widthStep

);

for( int x=0; x

ptr[3*x+1] = 255;

ptr[3*x+2] = 255;

}

}

}

注意一下,3*x+1,3*x+2的方法,因为每一个点都有三个通道,所以这样设置。另外imageData 成员的类型是uchar*,即字节指针类型,所以与CvMat的data指针类型(union)不同,而不需要象CvMat那样麻烦(还记得step/4,step/8的那种情形吗)。

roi和widthStep

roi和widthStep在实际工作中有很重要的作用,在很多情况下,使用它们会提高计算机视觉代码的执行速度。这是因为它们允许对图像的某一小部分进行操作,而不是对整个图像进行运算。

在OpenCV中,所有的对图像操作的函数都支持roi,如果你想打开roi,可以使用函数cvSetImageROI(),并给函数传递一个矩形子窗口。而cvResetImageROI()是用于关闭roi的。void cvSetImageROI(IplImage* image,CvRect rect);

void cvResetImageROI(IplImage* image);

注意,在程序中,一旦使用了roi做完相应的运算,就一定要用cvResetImageROI()来关闭roi,否则,其他操作执行时还会使用roi的定义。

上面这篇文章对IplImage的结构分析的非常清楚。

############################################################################## #

于是我最初使用的方法是利用cvCreateImage新建一个IplImage,之后一个个的对结构体的成员进行赋值。

其他的成员的赋值都没有问题,而对于char *imageData; 的赋值却遇到了问题。

我把自己在程序里把从摄像头读取的UYVY数据转换为R=G=B=Y的3通道RGB24的数据,并保存在自己calloc的空间中,最后把这个空间的指针赋给imageData这个变量。在程序运行的时候问题来了,出现“alignment trap......bus error”的错误,内存对齐出问题了。

之前遇到过自己定义的结构体,由于内存对齐的问题而出现编译器在结构体中插入空字段而使sizeof()的值变化的问题。于是,第一反应去查看IplImage这个结构体是否是对齐的,结果发现这个结构体的每个变量都是4字节的,非常完美的对齐。

不是结构体的问题,于是我想到给imageData这个指针赋值的问题,因为我是把自己calloc的一个空间的指针赋给它的,如果calloc的这个起始地址不是4字节的整数倍,这样imageData就会出现内存对齐的问题了。

于是,把赋值操作删除,改为将calloc后空间中的数据memcpy到imageData 经过cvCreateImage初始化后指向的空间。结果证明,这里就是问题所在,修改之后一切正常了。

###################################################################################

后记:上面#号内的说法有问题。解决办法是对的,但原因不对。出现“alignment trap......bus error”的错误,并不是单纯因为IplImage的使用有问题,应该和我之前-mabi指定错

误,以及在程序中#progma pack(2)这句话也有关系。因为在解决了abi了,就没有这个问题了。

经过多次试验,发现IplImage的使用有3种方式可以选择。

(1)iplImage =

cvCreateImageHeader(cvSize(width,heigth),IPL_DEPTH_8U,1); cvSetData(iplImage,pGrayBuffer,width*1); //第3个参数是行字节数cvReleaseImageheader(&iplImage);

free(pGrayBuffer); //pGrayBuffer是程序里用来放灰度数据的空间,由calloc 分配

(2)iplImage = cvCreateImage(cvSize(width,heigth),IPL_DEPTH_8U,1); iplImage->imageData=pGrayBuffer;

iplImage->imageDataOrigin=pGrayBuffer; cvReleaseImageheader(&iplImage);

free(pGrayBuffer);

(3) iplImage = cvCreateImage(cvSize(width,heigth),IPL_DEPTH_8U,1); memcpy(iplImage->imageData,pGrayBuffer,iplImage->imageSize); cvReleaseImage(&iplImage);

free(pGrayBuffer);

结论:这3种方式都正确,但推荐用第(1)种。总之,记住一点,如果imageData 指向的空间是由cvCreateImage初始化的,那么用cvReleaseImage来释放;如果imageData指向的空间是后来用户指定的,那么用vReleaseImageheader(&iplImage);释放,并由用户自行释放分配的空间。

其实(1)cvSetData所做的事情和(2)中两句指针赋值类似。

如果分配和释放没搭配好,比如自行分配空间搭配上

cvReleaseImage(&iplImage);就会出现“OpenCV ERROR: Unknown error code -49 (Deallocation error)”这类错误。

另外,补充一下,“利用cvCreateImage新建一个IplImage,之后一个个的对结构体的成员进行赋值”是非常多余的,cvCreateImage就已经根据参数中的宽度,高度,通道数,颜色深度等信息对结构体的各个成员初始化了,不需要再手动的去赋值。这里要提一下char *imageDataOrigin; 这个变量的说明是指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的,实际上初始化后的imageDataOrigin和imageData指向的是同一个地址。既然初始化成这样,我也没去改变它,没有产生什么影响。opencv论坛上sunlighta大侠的解释是:“预留数据接口吧!上面有这么一句话:IplImage结构来自于Intel Image Processing Library (是其本身所具有的)。OpenCV 只支持其中的一个子集。”

注:linux下的内存对齐默认是4字节,可以通过以下语句进行修改:

#progma pack(n)

语言集成查询(LINQ):

是.net 3.5以后新推出的API,主要作用是对集合进行查询。

LINQ 引入了标准的、易于学习的查询和更新数据模式,可以对其技术进行扩展以支持几乎任何类型的数据存储。Visual Studio 2008 包含LINQ 提供程序的程序集,这些程序集支持将LINQ 与 .NET Framework 集合、SQL Server 数据库、https://www.360docs.net/doc/0114230575.html, 数据集和XML 文档一起使用。

Hello everyone , let me introduce myself .

My name is Fan Xingyu . I come from Harbin . I'm 25 years old now . I graduated from HeiLongjiang university , and major in software engineering . After graduated from university , i'd been working for nearly one year as a software engineer in the National Fundamental Software company which is short for NFS . Then i dropped this word and reviewed for the post graduation exam , and fortunately i got it .

I am interested in military . Not only native but also foreign . I enjoy learning weapon knowledge and historical warfare , navy weapons , air force air crafts , army weapons , guns , canons , missiles , fighters , helicopters , tanks , destroyers , submarines , nuclear powered aircraft carriers , outer space weapons and so on .

I also really like sports . Such as badminton , ping pang , football and swimming . I'm not simply like them , i believe that i can play them well . Nowadays , more and more people ignore the health problem . more and more people are so busy on working that they take little time do

sports . In my opinion it's incorrect . We need good health to prevent ourselves from all kinds of disease . If some of you want to play with me , welcome !

As I said , i was a software engineer , i like this job , and i like writing codes . Mainly because i'm eager to solve all the logical problems , and change them into simple ones . Though i have made many progresses which i major in , i should work harder and harder , and do my best to improve myself in the next 3 years . I have great confidence in myself .

I'm glad to be your classmate , thank you , that's all !

C语言程序设计大作业报告模板

《C语言程序设计》大作业报告 1.目的 掌握所学C语言程序设计的方法,熟悉所学语言的开发环境及调试过程,熟悉所学C语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。通过综合设计要求达到下列基本技能: 1.培养查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。 2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。 2.作业内容

熟练掌握所学语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用等。 3.要求: 1.要求每个同学都要认真对待,积极参与。 2.独立完成,不能抄袭。 3.课程设计结束时每位同学必须完成《大作业报告册》,其中包含设计源 代码和设计思路。 4.不符合要求的程序、设计报告、抄袭的设计报告或源程序代码、在设 计中完全未参与的将作不及格处理。 5.统一格式,A4打印,按时提交。 4.题目:设计要求:编写一个程序,求3x4数组的转置矩阵。要求在main函数里面读数,在change函数里面把矩阵转置。 5.程序设计 设计思路:1是先定义两个数组,一个是a[3][4],另一个是b[4][3]。2是将随便输入的12个数输入到a[3][4]。3是在change函数中将a[3][4]中值通过for循环的镶嵌将数组a[3][4]的值赋值给数组b[4][3]。4在主函数中将数组b[4][3]通过for循环的嵌套输出。 代码

VB程序设计(2015大作业)

《VB程序设计》大作业 一、大作业的内容 本次大作业要求学生根据所学知识以及个人爱好,设计开发一个VB应用小程序。要能体现出: 1.《VB程序设计》各种语句的综合使用能力; 2.《VB程序设计》各种相关控件的使用能力; 3.根据具体的设计题目,设计清晰、美观界面的能力; 4.一定的综合设计能力。 二、大作业的要求 本次大作业应满足以下要求: 实用性:应用程序要有明确的应用主题,有一定的实用价值。 结构性:应用程序具有良好的程序结构。 可读性:应用程序具有较好的可读性。 全面性:应用程序应包含比较全面的功能。 友好性:合理使用VB提供的各种控件,设计友好、美观的使用界面。 三、大作业的步骤 1.根据个人兴趣、爱好,以及提交时间的要求,自己确定设计题目(可参考附件1); 2.查找与设计题目相关的资料; 3.进行应用程序总体结构、使用功能的设计; 4.进行应用程序的界面设计和源程序代码的编写; 5.上机编辑、调试程序; 6.保存应用程序, 并生成可执行文件; 7.撰写设计报告。 四、设计报告的基本格式 设计报告的基本内容至少包括封面、正文、总结三部分。 (1).封面(包括:题目、班级、姓名、指导教师、完成日期等信息) (2).正文 1、课题的选材过程(设计思路); 2、设计的将要达到的目标; 3、总体设计结构与功能; (1)总体设计结构介绍(绘制:结构流程图) (2)各功能模块运行界面的功能、算法和操作步骤; 4、设计结果分析;(运行结果展示、正确性分析) (3).总结(感想、收获、启发、存在的问题) 五、课程大作业提交 (1)形式设计报告+ 源程序文件(含可执行文件) 其中:<1>设计报告的封面统一(附件2); <2>源程序文件(含*.vbp;*.frm;*.exe)打包压缩成一个文件, 以学号+姓名(例如:12020741姓名)为文件名。 (2)时间2015年6月1日之前; (3)方法纸质报告及压缩文件交各班学委,按顺序排好后由学委统一上交;

《面向对象程序设计》大作业

《面向对象程序设计》 大作业 项目名称基于C#的一款扫雷游戏班级7B1551 组员李豪雄曹启李宁

一、开发环境 开发环境:vs2010 开发语言:C# 二、系统功能设计 1.创建项目功能实现 创建项目,找图片素材 2.界面设计 介绍关于扫雷游戏界面的设计 提出希望在对应级别(初级、中级、高级、自定义)的按钮的显示勾,以表示目前的游戏等级。 3.雷区绘制 界面中雷区的绘制方法 4.菜单操作 有两个时候需要对它进行操作,一个是加载上次游戏设置的时候,一个是在游戏过程中进行设置的时候,设计菜单中的相关方法 5.内部实现 内部埋雷,放雷,标旗子,标问号的方法 6.整体完善 写游戏的胜利条件,自定义游戏的初始化及相关调试任务 三、实现 1、创建项目功能实现 玩过扫雷的读者应该知道,扫雷需要用到三种图片素材——地雷、红旗、问号。当右击一个方块的时候,会插上红旗,表示游戏者认为该方块内有地雷;再次右

击该方块,会变成问号,表示不确定该方块内是否有地雷;第三次右击该方块,问号消失,恢复到初始的状态。我们前往Iconfinder寻找合适的图标,并且通过Photoshop或者Illustrator的处理得到我们所需要的图标。文章中含有下载地址的图标资源可以使用右键—目标另存为进行下载。 通过一定的搜索以及图片的处理,得到了下面一组素材图标,下载地址:Doubbt、Flag、Mine。 除了这些素材以外,我们还需要找一个图标,使得整个程序看上去更加正式一点,这里使用图标如下,注意程序图标的后缀为ico,下载地址:favicon 接下来,我们打开Visual Studio 2013开始创建工程,界面如下:

Python程序设计大作业要求

1PYTHON程序设计大作业1 1Python程序设计大作业 本次作业可以独立完成,也可以组队完成,每支队伍的人数不超过5人。 作业分成若干部分: 1.设计文档——使用流程图、伪代码、框图、图片、文本等手段,描述 ?代码的整体思路, ?分多少个模块,各个模块的功能及相互联系, ?重要变量的结构和功能描述, ?各个函数和类输入、输出和功能(算法思路和表达能力是评分的重要依据); 2.程序源代码——彩色显示,配以重要的注释,需要有行号,如果分成 若干个代码文件,则各个代码文件的内容要独立显示(代码风格是评分的依据之一); 3.实验和测试报告——包括问题描述、任务要求、实验配置(计算机软 硬件条件)、实验步骤、各个步骤的截图、实验结论和分析(学术性是评分的依据之一); 4.10分钟小组展示用的演示文稿(讲演的水平是评分的依据之一)。 其中,前面3个部分通过学习通提交(要求在每一个部分提交的文档中,列出全部组员的姓名和学号),只需任意一人提交;最后一部分在小组展示中呈现。 猜词 在这次作业中,你们需要开发一个程序。这个程序通过改变游戏规则来试图击败人类。以防你们不了解猜词(Word Guessing)游戏,下面介绍规则: 1.玩家A选择一个秘密的单词secrete_word,然后写出若干个连线‘?’, 连线的数目与单词所含字母的个数相等。例如玩家A的秘密单词为“bicycle”,那么他就要写出“???????”(一共7个连线)。

1PYTHON程序设计大作业2 2.玩家B开始猜字母。每次他猜中的时候,玩家A要把该字母在秘密单 词secrete_word中的所有出现都显示出来。例如玩家A的秘密单词为“bicycle”,如果玩家B猜c,那么,玩家A就要把字母c都显示出来,也就是要显示“??c?c??”。 3.如果秘密单词中所有字母都显示出来了,或者玩家B用完了所有猜词 的机会,游戏就结束了。 这个游戏的根本点在于,玩家A确切地选择了一个单词secrete_word。这样,当玩家B猜字母的时候,玩家A确切地判断B猜的字母是否在secrete_word中。 现在的问题是,如果玩家A不这么做呢?设想你是玩家A,并且现在,你要选择一个长度为4的单词。这一次,你并没有确切地选择一个秘密单词secrete_word,而是手头有全部4个字母组成的英文单词。为了简便,我们假设英语只有如下这些4字母单词: ally beta cool deal else flew good hope ibex 现在,设想你的对手猜字母“e”。你需要告诉你的对手,你“所选的”单词中的哪些字母是“e”。当然,实际上你并没有选一个单词,所以你有很多种可选的方式来显示单词中的每个字母“e”。下面我们把上面单词中的“e”给加以强调: ally beta cool deal else flew good hope ibex 这张表中的各个单词落入以下的5个单词类别之一: ?“????”,包含单词ally,cool和good ?“?e??”,包含beta和deal ?“??e?”,包含flew和ibex ?“e??e”,包含else ?“???e”,包含hope 因为你所显示的字母必须对应到单词表中的某个单词,你可以选择上述五种类别中的任何一种来显示。

C语言小游戏程序设计

程序设计实验 大作业 学院: 班级: 学号: 指导老师: 姓名: 实验项目名称:猜数字游戏成绩:

一、实验要求 根据所学知识编写一个小游戏--猜数字游戏 二、实验目的 为了加深对编程课程的基本知识的理解和掌握,并且掌握编程和程序调试的技巧通过程序的设计训练和提高学生的基本技能,掌握字符串的表示方法和字符串函数的功能、编程软件操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高解决实际问题的能力,巩固语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。 三、功能模块分析 1.系统能够随机产生一个1到1000的数字 2.比较输入数字与随机产生数字的大小 3.选择是否继续游戏 四、修改处 1.将输出内容由英文变为汉字 2.改变背景及输出字体的颜色 3将随机产生的数值范围由1-100变为1-1000 四、设计思路 # include # include # include main() { void textbackground(int color); system("color fc"); int a,b; char c; srand(time(NULL)); a=1+(rand()%1000); printf("这有一个数字从1到1000.\n你能猜出它吗?\n输入你猜的数字.\n"); scanf("%d",&b); while(b!=-1) { if(b==a) { printf("恭喜你猜对了!\n你喜欢再玩一遍吗?(y or n)?");

C程序设计大作业(含源代码).doc

面 向 对 象 程 序 设 计 大 作 业 姓名:叶尔凯西 学院(系):计科系 班级:计科系07-1 班 学号: 027

设计本程序的目的: 关于一些并不太复杂的集体来说,一般需要管理集体中的每个人的基本信息的,本程序 专门为一些在校学生的基本信息的管理而设计的,主要目的是通过本程序来实现简单的记录和 查找学生的基本信息; 程序功能简介: 本程序是通过面向对象的最重要的特点“类”来设计出来的,其功能是实现简单的学生基 本信息管理。包括一些要求用户从键盘输入(记录)学生的基本信息、输出学生的基本信息和用 学生的学号来查找学生信息表中的某个学生的基本信息等功能; 程序功能的详细介绍: 本人设计程序时考虑到的很所内容,其中输入输出学生的基本信息是最基本的功能。下面来给大家介绍程序的核心类的构建: ①在程序中共建立了两种类,分别是person 类和 student类。person作为student 类的基类,其内部是如下设计的: class person { public: void SetPersonAddress(char *AddressFromMain); void SetPersonSex(char *SexFromMain); void ShowPersonSex(); void ShowPersonAddress(); private: char Address[25]; char Sex[2]; }; 可以看到,在上面分别声明了四个成员函数和两个数据成员。四个成员函数的作用是对私有数据成员进行访问(包括输入和输出)。所以当建立了一个 person 类之后 就可以通过它的对象来访问该类的数据成员。 下面分别说明每一个成员函数的具体定义: ( 1)设置(输入)人地址的成员函数: void person::SetPersonAddress(char *AddressFromMain) { strcpy(Address,AddressFromMain); } 通过 strcpy把字符指针的内容送入person 类中的数据成员Address 。 ( 2)设置(输入)人性别的成员函数: void person::SetPersonSex(char *SexFromMain) { strcpy(Sex,SexFromMain); }

C语言程序设计大作业设计说明书

C语言程序设计大作业设计说明书 概述: 处在Microsoft Visual C++软件下的Developer Studio集成开发平台中进行开发。 已实现了基本功能中的: 1、随机生成没有重复的4个数。(每个数字在0-9范围内)。 2、用户从键盘输入4个不重复的数,程序能对用户输入的数与随机生成的数进行匹配,并给出提示信息:“有x个数数值和位置都相同!有y个数数值相同,但位置不同。” 3、控制用户的尝试次数为10次。 4、计算、输出并保存用户的得分,计分规则:总分是100分,每失败一次扣10分。 5、有操作菜单,能根据不同选择运行不同功能:1:开始游戏!2:查看上次成绩!3:输出帮助信息!4:游戏设置!0:退出程序! 还实现了扩展功能里的: 1.对用户输入的数字进行检查,如果用户输入重复的数,给出提示,要求重新输入。 2.能对游戏进行设置:在操作菜单中增加相应的选项:“4:系统设置”。 (1)修改要猜的数字的个数n,根据修改后的n值,计算机可随机生成n个数,用户进行n个数的猜测游戏。 (2)修改可以尝试的次数。 未实现的功能是扩展功能里的: 1、若游戏胜出且成绩在前五名,可输入并记录对应的用户姓名,并添加到积分榜中。操作菜单中相应选项改为“2:积分榜!”,用于把积分榜中保存的前五名成绩及用户姓名显示出来。 2、能对积分榜的成绩进行排序和输出。 经多次运行尝试,虽然编辑、编译、连接都没有错误,可以运行,但是在运行的时候有时会卡住,要等一会才会显示出来。 程序概要设计: 程序流程是:开始运行到主界面,在主界面中可选择:1:开始游戏!2:查看上次成绩!3:输出帮助信息!0:退出程序!,然后选择开始游戏后,程序会生成4个不重复且在0-9之间的随机数,然后玩家需输入4个不同的数0-9之间的数,接着程序会判断玩家输入的4个数与程序生成的随机数的数值和位置是否相同,并提示4个数的数值跟位置相同和不同有几个,就这样一直循环到4个数的数值和位置都正确,或玩家尝试次数已超过10次。程序会在循环结束时显示出玩家的得分,并提示输入0返回主菜单;选择查看上次成绩后,程序会显示您的上次得分并提示输入0返回主菜单;选择帮助信息后,程序会显示一段游戏规则并提示输入0返回主菜单;选择游戏设置,程序会先清屏,再显示出新的界面,让玩家设置猜数个数和可尝试次数,

游戏程序设计大作业

《仙剑奇侠传4》游戏的分析和评价 段强 03091439 一、基本信息 2.价格 激活码版 50.00元,实体版79元。 游戏名称:仙剑奇侠传4 英文名称:Chinese Paladin 4 游戏类型:角色扮演游戏(RPG) 游戏制作:软星科技(上海)有限公司 游戏发行:寰宇之星 游戏发行:简体中文 游戏平台:PC 上市时间:2007年8月1日上市 主要角色:云天河,韩菱纱,慕容紫英,柳梦璃 配乐作曲:骆集益,周志华,吴欣睿,曾志豪 游戏引擎:RenderWare 主题音乐:回梦游仙 游戏画面:3D

二、概要信息 1.简要概述 《仙剑奇侠传四》是角色扮演游戏《仙剑奇侠传》系列的第四代作品,由大宇资讯旗下的软星科技(上海)有限公司制作,于2007年8月1日发行。故事的起点始于黄山青鸾峰之巅,驰骋于神州大地、往来于天地之间,东临渤海、南抵巴蜀、北至传说中的“北极之地”、西达上古圣山昆仑仙境。既有繁华热闹、歌舞升平的中原富庶之地,又有大漠边关、丝绸之路上的小小驿站。每一个城镇之中的建筑、草木,乃至于店中出售的食物,都各有其特色。游戏的剧情受人称赞,迷宫难度较前几代有所降低,而且在国产单机游戏日渐式微的今天,四代更具特殊意义。 2.故事情节 从小居住在黄山青鸾峰上、从未下山过的少年云天河,某日遇到一名闯上山来寻找剑仙的少女韩菱纱。两人误打误撞之下闯入云天河父母的神秘墓室,并在无意间令墓室崩塌。 因为害怕父亲的鬼魂前来找自己算帐,又想探查已故父母的过往,再加上对世外生活的好奇,云天河跟随韩菱纱下山,踏上寻觅父母过往、求仙问道之路。 机缘巧合之下,云天河、韩菱纱结识了寿阳城的县令千金柳梦璃,后来与昆仑琼华派弟子慕容紫英结为好友。在上天入地的求仙之旅中,云天河渐渐知晓了一件陈年旧事,并由此引出了重重疑云。

贪吃蛇游戏程序设计实验报告(优选.)

最新文件---------------- 仅供参考--------------------已改成-----------word文本 --------------------- 方便更改 赠人玫瑰,手留余香。 Windows编程大作业 贪吃蛇设计与实现 学校:武汉轻工大学

院系: 班级: 姓名: 学号: 2015年12月16日 目录 一、题目介绍 二、设计目的 三、详细设计 3.1贪吃蛇本体设计 3.2贪吃蛇食物设计 3.3游戏界面设计 3.3.1游戏初始化 3.3.2游戏开始 3.3.3游戏暂停 3.3.4游戏退出 3.3.5游戏总界面 3.3.6游戏区域与背景

3.3.7关于SNAKE 3.4玩法规则设计 3.5核心设计 四、功能测试 五、总结 六、参考文献 一、题目介绍: 编写一个基于MFC的小游戏。 基本要求: 1、实现一个小游戏 2、实现基本游戏控制功能 3、具有游戏数据保存功能 4、界面布局合理、美观; 二、设计目的: 通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。培养和锻炼开发游戏的能力。

三、详细设计 3.1贪吃蛇的本体设计 贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下: struct Snake { int x,y; int len; int direct; }Snake[50]; 3.2贪吃蛇食物设计 贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。 struct Food { int x; int y; int isfood; }Food; 3.3游戏界面设计 3.3.1游戏初始化 游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0; void CSNAKEView::OnInitialUpdate() {

C++大作业项目报告--贪吃蛇游戏的MFC设计

“C++程序设计”课程大作业 项目报告 项目名称:贪吃蛇游戏的MFC设计 姓名:XXX 学号:XXX 班级:XXX 日期:2013.12.25

小组概况

目录 1系统功能设计 (4) 2系统总体结构 (4) 3本人工作内容 (5) 4项目总结 (6) 5相关问题的说明 (6)

1系统功能设计 在一个密闭的空间内,通过按键上的四个光标控制蛇的上下左右四个方向移动,蛇头碰撞到食物则表示食物被蛇吃掉,这时蛇的身长长一节,接着出现食物,等待被蛇吃掉,如果蛇在移动过程中,蛇头撞到墙壁或者身体与蛇头接触则游戏结束。 2系统总体结构 2.1设计思路说明 在数据结构上,用数组存储蛇以及蛇的运动区域。在数组中,每个元素有四个云感动方向,分别为RIGHT,LEFT,UP,DOWN.在没有蛇身的区域,数组的元素值为0。在蛇身的每个节点,用一个数组元素存储当前蛇节点的运动方向。通过改变数组中元素的值来表示蛇身的移动。在程序中运用定时器来保证蛇的持续移动。每个一定的时间间隔,蛇移动一格。在设计界面时。在Visual Studio 6.0的环境下,建立基于对话框的单文档工程,在工程下设计游戏界面,实现贪食蛇运行算法。在对话框中画出一个矩形,实现封闭空间。在大矩形中,用20x20的像素单位绘出蛇身,当蛇每移动一小格的时候,重绘整个窗口。在对蛇身进行绘画时。通过数组元素的值将蛇身在对话框的矩形中显示出来。在蛇身运动时,首先在蛇头位置蛇身增长一个节点,然后判断蛇头是否到达食物所在位置,若在食物所在位置,则蛇尾不减一,蛇身继续移动,若蛇头不再食物位置,则蛇尾减一,蛇身继续移动。若蛇头越界或者蛇头与蛇身重叠,则游戏结束,并弹出得分。 2.2重要的MFC 1.CMenu:菜单 2.CView:视图,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CW nd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。另外,自己附加的许多功能都要加在里面,例如:背景音乐。 3.CDC:设备文本。无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显

C语言大作业(掷骰子押宝小游戏)

C语言程序设计大作业 二、实现功能:掷骰子押宝小游戏 三、设计思路:通过设计定义几个函数和数组和指针实现猜点数押积分的趣味小游戏。流程图 。 是 四、使用方法 运行程序后首先会出现一个界面,让你猜所掷骰子点数的大小,然后押元宝数,若猜中玩家得双倍元宝,若猜错,则玩家失去所

押元宝,电脑赢得相应元宝数。 五、程序清单 #include #include #include int money = 300; intpc_money = 300; void show(); //声明界面显示函数 void play(); //声明玩法函数 void getCount(int *); //声明玩家输入为1-10的点数函数void getMoney(int *); //声明玩家押积分数多少的函数void contrast(int *, int*); //声明玩家剩余积分的函数intisEnd(); //玩家没有积分时游戏结束 int main(){ money = 300; //玩家的初始积分 pc_money = 300; //电脑的初始积分 show(); play(); return 0; } void play(){ //游戏的玩法 int count = 0;

intt_money = 0; //char choose; while(money > 0 &&pc_money> 0){ getCount(&count); //用户输入猜的点数函数 getMoney(&t_money); //用户押的积分函数 contrast(&count, &t_money); //点数进行对比,并计算积分if(isEnd() == 1){ printf("您的元宝已不足1了,游戏结束!\n"); } else if(isEnd() == 2){ printf("你太强了!电脑的元宝已经输完了\n"); } }; } void getCount(int * a){ //玩家输入的点数 do{ printf("请输入您猜的点数(1-10):"); scanf("%d", a); if(*(a) > 10){ printf("输入的点数有误,请输入1-10之间的点数!\n"); continue;

c程序设计大作业(范例)

课程设计说明书 《C 程序设计大作业》 ——学生成绩管理系统 班 级: 电信2009级集成班 学 生: 陈颖宏 学 号: 200930251378 序 号: 提交日期: 2010 年 3 月 27 日 成绩评定: 分 任课教师签名: 年 月 日 前言

本课程设计题目是“学生成绩管理系统设计”,其内容是设计一个使用二进制文件方式存储数据,并且以菜单方式工作的管理系统。 设计目的是设计一个能够方便、直观地管理学生相关信息的系统。 该系统可以实现以下功能: ○1能按学期、按班级完成对学生成绩的录入、修改; ○2能按班级统计显示的成绩,计算学生的总分及平均分; ○3能查询学生的成绩,不及格科目及学生名单; ○4能按班级输出学生的成绩单。 正文

1.需求分析:本程序主要用于输入、查询、统计、导入以及导出学生的成绩。主要的输入方式是利用键盘输入,且输入的字符最好是英文及数字,输入中文时有时会出现错误。程序的有效窗口大小一般为半个屏幕,以至于有些功能的版面出现显示方面的错误。 经测试,程序基本可以正常工作:当在主菜单输入“1”时,可以正常初始化,输入余下的菜单选项时也能按要求跳转到指定画面;各子菜单选项也都能正常运行;但是输入班级、姓名等字符时,有时会显示错误的字符。 2概要设计 ○1抽象数据类型的定义:学生结构体定义为struct stu,变量为student;学期数组定义为char term[7]; 班别数组定义为char banbie[20]; 学号数组定义为char no[15]; 姓名数组定义为char name[20]; 科目数组定义为int score[MAXSUB]; 总成绩变量定义为int sum; 平均成绩变量定义为float average。 ○2抽象函数类型的定义:菜单选择程序“menu_select()”为int型; 初始化函数“initialize(student * [])”为void型;数据输入函数“input(student * [])”为void型;数据编辑函数“editmenu(student * [])”为void型; 数据查询查询函数“searchmenu(student * [])”为void型; 数据统计函数“total(student * [])”为void型; 数据导出函数“save(student * [])”为void型;数据导入函数“load(student * [])”为void型; 数据导出函数“output(student * [])”为void型;添加学生记录函数“add_record(student * [])”为void型;删除学生记录“delete_record(student * [])”为void型;修改学生记录函数“student * edit_record(student * [])”为void型;按学

游戏程序设计实验设计报告

游戏课程设计报告 题目:超级黑白棋 班级: 11数媒 姓名:徐继涛 学号:110804035 2014年 1 月 6日

目录 一、目的与要求………………………………………………………………………. 二、游戏设计方案…………………………………………………………………… 三、游戏开发平台构建…………………………………………………… 四、项目设计………………………………………………………………………. 五、游戏创新描述…………………………………………………………………… 六、调试运行与分析………………………………………………………… 七、程序清单………………………………………………………………………. 参考文献…………………………………………………………………………...

一、游戏设计目的及要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固C++语言中所学的知识,合理的运用资料,实现理论与实际相结合。 黑白棋,又叫反棋、奥赛罗棋、苹果棋或翻转棋。黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。有一种说法是:只需要几分钟学会它,却需要一生的时间去精通它。 (1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍; (3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行; (4).完成课程设计报告,并进行答辩 (5).黑白棋的棋盘是一个有8*8方格的棋盘。下棋时将棋下在空格中间,而不是像围棋一样下在交叉点上。开始时在棋盘正中有两白两黑四个棋子交叉放置。游戏结束时输出得分。画出模块枝干图与每个模块的程序流程图。修改某些代码,改变其外观及功能。 (6).游戏操作应尽量简单。界面美观,让人看了觉得舒服。 二、游戏设计方案 2.1、算法设计:玩游戏过程采用递归算法,控制循环过程,可使游戏重复玩,判断迷宫游戏结束的算法是通过判断人有没有到达终点。使坐标向前移动采用算法,通过递归算法将人物的每一节依次向前移动。横坐标与纵坐标依次向前赋值,从而达到使人物前移的目的。 2.2、数据结构

C++程序设计与训练课程大作业(2016)

“C++程序设计与训练”课程大作业(2016) 作业题目: 简易铁路票务系统 作业描述: 同学们在平时出门旅行的过程中经常会选择使用铁路这一交通运输方式,对铁路票务系统应该也有所了解。本次作业希望同学们能够自己设计并实现一套简易的铁路票务系统。 主要功能: 旅客可以注册账号、登录系统并管理个人信息,在登录系统之后可以根据自己的需求订票。这里给出一个标准的订票流程用作参考: (可以不用完全按照这个流程来实现,只需要逻辑清晰、功能完善、用户界面友好即可) 1.旅客根据起始车站、到达车站、出行时间等条件查询符合的车次,车次信息 需要显示始达车站、始达时间、余票数量等等; 2.旅客根据查询结果选择自己满意的车次并进行订票; 3.系统确认旅客订票成功,并显示具体的票面信息; 4.旅客可以随时查看自己已经预订成功的车票相关信息。 要求: 1.列车发车前半小时关闭该趟车的订票功能 2.同一位旅客同一车次只能购买一张票 3.同一车次的每个座位只能卖给一位旅客,不能出现两人买到相同座位号车票 的现象 4.用数据库管理、维护车次、车票及旅客账号等信息

核心对象 1)车次: 座位布局: 火车通常有两种座位布局,坐铺车厢与卧铺车厢。为了简化实现,我们假定每一班列车仅有一节车厢,为坐铺车厢或者卧铺车厢中的一种。 坐铺列车一节车厢120个座位,座位号为1~120;卧铺列车一节车厢60个席位,座位号为1上/中/下~20上/中/下。 车次信息: 车次信息至少包括:车次编号、列车类别(特快(坐/卧),普快(坐/卧),高铁等)、始发车站、终点车站、发车时间、预计运行时间/预计到达时间、车票价格、余票数量 2)普通用户: 普通用户账户信息至少包括:账号(用户名)、姓名、性别、身份证号(或者其他有效证件及证件号码)、联系方式、附加信息(学生证等其他信息,可为空) 3)票务管理人员: 票务管理人员登录系统之后可以维护管理所有车次信息。 管理员登录需要的用户名、密码提前录入在数据库中。 扩展功能(选做): 1.车次信息增加途经车站信息(里程及到发时间),如有多个途经车站则根据里 程数分段计价。 2.添加“虚拟的”账户充值功能与支付功能,在用户确认订票之后需要扣除相 应的账户余额才能成功购票,否则提示用户充值;或者余额不足时可以通过在购票付款时选择“其他方式支付”来代替。 3.添加选座功能,旅客可以在图形界面上方便地看到当前车次每个座位票的售 卖情况,并可以选择自己想要的空闲座位。 4.普通用户增加其他旅客信息,可以帮助他人购票。 5.分开实现服务器端与客户端功能,客户端与服务器通过网络连接,经由服务 器端访问数据库。

面向对象程序设计大作业

《面向对象程序设计》 期末大作业 一、大作业题目

二、要求 (1)根据学生人数分成原则上2至3人(少量4人)一组,各小组选择感兴趣的题目,也可自拟题目。 (2)解题要求:现面向对象程序设计语言的特点,程序代码不少于400行;使用技术:体现OOP 的抽象、封装、继承、多态等4种关键技术中的两种或多种;程序结构良好,没有明显错误;按照大作业格式,在课程结束最后两周(16、17周)上交电子稿。 (3)最终提交。 ●大作业报告根据原有的系统设计,编码阶段的工作,整理书写实验报告,内容包括:①系 统说明②实验分析与结论③收获与体会④附程序代码 ●最后提交材料:①大作业报告(打印稿和电子稿)②源程序代码(CPP文件),执行文件(EXE) ③小组内分工说明(人员名单(不超过4人)、学号、角色分工) 三、说明 若两人和多人程序基本相同或撰写的报告基本相同的情况下,经仔细比较查证属相互抄袭的,抄袭者和被抄袭者均按“0”分计。大作业报告样式如下: (1) 大作业的页面设置为上、下、左、右页边距都为2.5厘米,格式段落中行距为固定值20磅。 (2) 中文字体为宋体小四号,英文字体为Times New Roman小四。 补充说明:对于大作业中的程序、类或者函数一定要有详细的注释,如下例所示。

对于类包括:类的成员变量说明,类的成员函数说明,功能,基类、继承类、实现过程等等。 /******************************************************************** 类名: 私有成员: 公有成员: 功能:作为下面要定义派生类的基类 实现步骤: (1)定义类名 (2)声明私有成员 (3)声明必要的函数作为公有成员,其中狗狗找函数用来分配存储空间,对私有对象进行初始化(4)对类进行封装 /******************************************************************** 对于函数包括:先对函数及各参数进行说明,函数功能说明,实现原理及步骤说明,函数中的关键部位也需要进行说明。 /******************************************************************** 函数名称:FengGuDIB(LPSTR lpDIBBits,LONG lWidth, LONG lHeight,int YuZhi) 函数类型:BOOL 函数变量:LPSTR lpDIBBits - 指向源DIB图像指针 LONG lWidth - 源图像宽度(象素数) LONG lHeight - 源图像高度(象素数) int YuZhi -通过对话框选取一个峰谷作为阈值 功能:该函数用于对图像进行阈值分割运算。 实现步骤:(1)获得原来图像的首地址及图像的宽和高 (2)开辟一块内存空间,并初始化为255 (3)进行图像灰度统计,显示灰度直方图 (4)通过对话框选取一个峰谷作为阈值 (5)像素灰度值与阈值之差小于30,将像素置0,否则置255 (6)将结果复制到图像数据区 ******************************************************************/ BOOL CDibImage::FengGuDIB(LPSTR lpDIBBits,LONG lWidth, LONG lHeight,int YuZhi) { LPSTR lpSrc; // 指向源图像的指针 lpSrc LPSTR lpDst; // 指向缓存图像的指针 lpDst LPSTR lpNewDIBBits; // 指向缓存DIB图像的指针 temp HLOCAL hNewDIBBits; unsigned char pixel;// 像素值 long lHistogram[256]; LONG lLineBytes; unsigned char iMaxGrayValue,iMinGrayValue; //循环变量 long i; long j; hNewDIBBits = LocalAlloc(LHND, lWidth * lHeight); if (hNewDIBBits == NULL)

C语言趣味程序设计——题目百例

Contest - 2011级C语言课程大作业 Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00 Current Time: 2012-2-23 15:51:18 Status:Running Public

写在最前: 本文档中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了……………….. 由于能力不足..有题目未解决的…或者有错误的我会…认真听取大家的..意见的…. 呵呵……..有一两个….偷了下懒哦……… 提供原题目还有本人自己的解答的源代码。感谢大家的。。。。建议……………. 问题A: 趣味程序设计_狼追兔子 时间限制: 1 Sec 内存限制: 128 MB 提交: 341 解决: 63 [提交][状态][讨论版] 题目描述 一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中? 输入 有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。 输出 兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。

样例输入 10 8 15 样例输出 2 4 7 9 2 4 5 7 8 9 11 12 14 提示 用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。 #include #include int ok[110]; int main() { int n,s,i,find; while(scanf("%d",&n)!=EOF) { memset(ok,0,sizeof(ok)); for(i=1;i<=200;i++) if(!ok[find=(i*(i+1)/2)%n]) if(find==0) ok[n]=1; else ok[find]=1; for(s=0,i=1;i<=n;i++) s+=ok[i]; for(i=1,find=0;i<=n;i++) if(!ok[i]) { if(find!=(n-s-1)) { printf("%d ",i);find++;

贪吃蛇游戏程序设计实验报告

Windows编程大作业贪吃蛇设计与实现 学校:武汉轻工大学 院系: 班级: 姓名: 学号: 2015年12月16日

目录 一、题目介绍 二、设计目的 三、详细设计 3.1贪吃蛇本体设计 3.2贪吃蛇食物设计 3.3游戏界面设计 3.3.1游戏初始化 3.3.2游戏开始 3.3.3游戏暂停 3.3.4游戏退出 3.3.5游戏总界面 3.3.6游戏区域与背景 3.3.7关于SNAKE 3.4玩法规则设计 3.5核心设计 四、功能测试 五、总结 六、参考文献

一、题目介绍: 编写一个基于MFC的小游戏。 基本要求: 1、实现一个小游戏 2、实现基本游戏控制功能 3、具有游戏数据保存功能 4、界面布局合理、美观; 二、设计目的: 通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。培养和锻炼开发游戏的能力。 三、详细设计 3.1贪吃蛇的本体设计 贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下: struct Snake { int x,y; int len; int direct; }Snake[50]; 3.2贪吃蛇食物设计 贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。 struct Food { int x; int y; int isfood; }Food; 3.3游戏界面设计 3.3.1游戏初始化 游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;

Python 大作业之五子棋游戏(附代码)

Python 大作业——五子棋游戏 姓名:吴欣学号: 姓名:张雨清学号: 一游戏介绍: 我们设计的是五子棋游戏,支持两人一个鼠标对下,黑方用左键单击,白方用右键单击,谁先下均可,落子无悔,下过的棋子对方点击后不会变色,程序可自行判断输赢并在五子连珠时弹出结果对话框,游戏双方需遵守不在空地点击和一次下一子的规则。 二游戏代码设计: 代码均为原创,没有借鉴和抄袭,首先是用户GUI界面设计,点击start进入游戏界面,点击quit则退出程序,为了方便判断和记录,我们按从左到右,从上到下的顺序给15x15=225颗棋子编号225,左键绑定函数callback1,点击后可算出它位于哪颗棋子上再画出来黑子,并把对应编号计入record这个列表,之后进入判断函数。右键绑定函数callback2,点击后画出白子,对应编号计入recor这个列表,之后进入判断函数,其中总列表rec的作用是使棋子不被下第二遍。 三作业感想 这个游戏虽然很小但是可以供室友们晚上娱乐之用,我们倾注了很多心血,之前采用模块化编程失败了很多次,有事件响应问题,参数传递问题,到第七个程序才成功,感谢张同珍老师指点了很多,

我们学会了使用类,受益匪浅,对Python产生了浓厚的兴趣。四过程截图 五、实验代码 from Tkinter import * from tkMessageBox import * class Game: def __init__(self): self.A=[] self.B=[] self.record=set()

self.recor=set() self.rec=self.record|self.recor self.root=Tk() self.root.geometry("180x250") self.root.title("Wu Zi Qi Game") self.r=Canvas(self.root,width=180,height=210,bg="purple") pic=PhotoImage(file="beijing.gif") self.r.create_image(90,100,image=pic) self.r.place(x=0,y=15) Label(self.root,text="***Wu Zi Qi Game***",fg="red").place(x=20,y=0) Button(self.root,text="start",command=self.start).place(x=30,y=230) Button(self.root,text="quit ",command=self.root.destroy).place(x=100,y=230) self.r.mainloop() def start(self): self.root.destroy() self.top=Tk() self.top.title("Game Start") self.c=Canvas(self.top,width=480,height=480,bg="white") self.c.pack() self.c.create_rectangle(25,25,455,455,fill="gray") for i in range(30,451,30): for j in range(30,451,30): self.c.create_oval(i-2,j-2,i+2,j+2,fill="blue") for i in range(1,16): self.c.create_line(30,30*i,450,30*i) self.c.create_line(30*i,30,30*i,450) self.c.create_oval(234,234,246,246,fill="black") self.c.create_oval(115,115,125,125,fill="black") self.c.create_oval(355,115,365,125,fill="black") self.c.create_oval(115,355,125,365,fill="black") self.c.create_oval(355,355,365,365,fill="black") self.c.bind("",self.callback1) self.c.bind("",self.callback2) self.c.mainloop() def callback1(self,event): u,v=event.x,event.y s=u/15 if s%2==1: self.x=(s+1)/2 else: self.x=s/2

相关文档
最新文档