c语言程序设计扫雷游戏实验报告

上传人:仙*** 文档编号:33887028 上传时间:2021-10-19 格式:DOC 页数:34 大小:316.50KB
返回 下载 相关 举报
c语言程序设计扫雷游戏实验报告_第1页
第1页 / 共34页
c语言程序设计扫雷游戏实验报告_第2页
第2页 / 共34页
c语言程序设计扫雷游戏实验报告_第3页
第3页 / 共34页
点击查看更多>>
资源描述
计算机程序设计实践5d5aeb34c1cdbdb3f1f48f52da128e00.pdf 中南大学程序设计基础实践报告题 目 设计一个和window系统类似的小游戏【挖地雷】 学生姓名 张兰兰 学 院 信息科学与工程学院 专业班级 物联网工程1301班 完成时间 2014.1 目 录1.课程设计内容32.课程设计目的33.背景知识34.工具/准备工作35.设计步骤、方法35.1.步骤1:步骤名称(二级标题)35.1.1.步骤1.1:步骤名称(三级标题)35.2.步骤2:步骤名称45.3.步骤n:步骤名称46.设计结果及分析47.设计结论48.问题及心得体会49.对本设计过程及方法、手段的改进建议410.参考文献4报告名称1. 课程设计内容在计算机逐步渗入社会生活各个层面的今天,计算机已经成为人们日常生活的一分,越来越多的人使用计算机办公、娱乐等等。扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。我利用C-free编写了与它功能相仿的挖地雷游戏,寓学于乐。 即:设计一个功能与Windows中的挖雷游戏相同的小游戏。2. 课程设计目的1 培养学生综合运用所学知识独立完成课题的能力。2 试学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 3提高对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。4培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。5培养从资料文献、科学实验中获得知识的能力,提高从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。6对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核3. 背景知识游戏玩法:以windows XP自带扫雷winmine.exe为例 游戏区包括雷区、地雷计数器(位于左上角,记录剩余地雷数)和计时器(位于右上角,记录游戏时间),确定大小的矩形雷区中随机布置一定数量的地雷(初级为9*9个方块10个雷,中级为16*16个方块40个雷,高级为16*30个方块99个雷,自定义级别可以自己设定雷区大小和雷数,但是雷区大小不能超过24*30),玩家需要尽快找出雷区中的所有不是地雷的方块,而不许踩到地雷。游戏的基本操作包括左键单击(Left Click)、右键单击(Right Click)、双击(Chording)三种。其中左键用于打开安全的格子,推进游戏进度;右键用于标记地雷,以辅助判断,或为接下来的双击做准备;双击在一个数字周围的地雷标记完时,相当于对数字周围未打开的方块均进行一次左键单击操作:左键单击:在判断出不是雷的方块上按下左键,可以打开该方块。如果方块上出现数字,则该数字表示其周围33区域中的地雷数(一般为8个格子,对于边块为5个格子,对于角块为3个格子。所以扫雷中最大的数字为8);如果方块上为空(相当于0),则可以递归地打开与空相邻的方块;如果不幸触雷,则游戏结束。双击:同时按下左键和右键完成双击。当双击位置周围已标记雷数等于该位置数字时操作有效,相当于对该数字周围未打开的方块均进行一次左键单击操作。地雷未标记完全时使用双击无效。若数字周围有标错的地雷,则游戏结束,标错的地雷上会显示一个“ ”(见下图) 扫雷的设计原理:扫雷游戏分为几个步骤:第一步,使用二维数组表示地图;第二步,随机生成几个地雷;第三步,点击方格的反应,计算每个非雷区方格点开后的数字;第四步,当方格数字为0的情况;第五步,当方格为地雷的情况。第一步地图的大小和第二步地雷的数量都应该是程序中给定的,或者玩家输入的。这个是多少自己决定吧。第三步,计算非雷区方格点开后的数字就把这个方格在二维数组中周围八个方向的方格是否是地雷都检查一遍,一定要注意不要越出数组边界。这个数字可以在游戏初始化时全都计算好,也可以在玩家点击的时候再计算。点击非雷区方格,显示数字,这个方格标记为“已点过”。第四步,当方格数字为0时,这里要用到递归调用,就是让程序自动“点击”这个数字为0方格周围的八个方格,然后再看结果,如果不是0,就停止,如果是0,依然递归调用,直到没有0为止,或者直到点遍所有方格为止,一定要注意不要越出数组边界。第五步,很简单,宣布玩家死亡就可以了。4. 工具/准备工作查阅相关资料,了解扫雷的的玩法,了解扫雷的设计思想方法。借鉴他人写过的程序,从中找到突破口。从程序中了解需要的各种函数准备,再进一步获悉该函数的功能与使用方法。对自己要设计的挖地雷游戏进行功能分析,大致如下: 总体游戏过程分析:在屏幕上显示一个游戏界面,雷区范围内预先埋设了一定数量的随机分布的地雷(用数字9代替地雷);玩家通过从键盘中输入(行数X,列数Y)进行点击;若能点中所有非雷区,则游戏胜利;否则踩雷,游戏失败。 简易版扫雷游戏要具备以下功能:1) 开局:首先选择游戏等级,然后生成不同等级的雷区界面。游戏等级分为三级:各等级行列数为:简单:1010、普通:1515、困难:2020;雷区每个*号下面或埋藏有1个地雷,或者没有地雷;2) 挖雷:从键盘中输入(行数X,列数Y),并按回车键,可挖开它;若所揭方块下有9,则踩雷,此时所有含地雷的块都出现9,该局游戏失败;如果方块上出现数字,它代表在它周围的8个方块中共有多少颗地雷;3) 输入:通过键盘输入相关指示信息;4) 输出:提示游戏失败,是否继续再来一遍;5. 设计步骤、方法5.1主函数第一步,写出主程序的基本框架,确定各子模块名字和参数。具体的函数流程如图5-3 所示:定义使用到的常数、全局变量、函数原型说明。然后初始化图形系统,调用游戏控制函数,游戏只接受键盘,通过鼠标结束游戏,关闭系统,退出游戏。main() int i,j;/*定义i,j变量*/ int NO; int begin=1; int h;/*确定雷的个数*/ while(begin) printf (nnnnnnnnn=nn ttt| 欢迎进入扫雷 |nnn ttt| 按回车键继续 |nn ttt=nnnn ttt 本程序由张兰兰和杜宏亮完成 nnnn); getchar(); /*游戏开始界面*/system(cls); printf( nnnnnnnnn 请选择游戏难度:nn); printf( 1简单难度nn); printf( 2普通难度nn); printf( 3困难难度nn); printf( 4自定义难度nn); scanf(%d,&h); getchar();/*确定游戏难度*/ if(0h&h5) switch(h) case 1: x=10; y=10; b=10; break;/*简单难度*/ case 2: x=15; y=15; b=40; break;/*普通难度*/ case 3: x=20; y=20; b=60; break;/*困难难度*/ case 4: system(cls); printf(请输入棋盘行列数(小于20且用逗号隔开):);/*从键盘输入坐标*/ scanf(%d,%d,&x,&y); getchar(); printf(请输入雷的个数:);/*从键盘输入雷的个数*/ scanf(%d,&b); getchar(); break; break; else printf(输入错误请重新输n); while(begin) system(cls); InitialValue_game(&g);/*棋盘初始化*/ InitialMine_game(&g);/*随机布雷*/ print_game(&g,2);/*打印棋盘*/ NO=1; while(NO) printf(Please choose:); scanf(%d,%d,&i,&j); getchar(); if(-1i-1 & i-1x & -1j-1 & j-1y) switch(openmap(&g,i-1,j-1) case 1: print_game(&g,1); printf(游戏结束!按回车键再来一局n); if(getchar()=n) begin=1; else begin=0; NO=0; break; case 2: if(judge_game(&g)=b) printf(win!n); print_game(&g,1); printf(按回车键再来一局n);/*是否再来一局*/ if(getchar()=n) begin=1; else begin=0; NO=0; break; else print_game(&g,2);NO=1;break; default:break; else printf(你输入错误!请重新输入n); 主控模块的各子模块说明:void InitialValue_game( )用于棋盘初始化;InitialMine_game( )用于棋盘的随机布雷;void print_game( )用于打印棋盘;int judge_game( )用于判断游戏是否结束;int openmap( )用于点开地图;5.2定义全局变量#include #include stdlib.h #includetime.h# define s 20int x; /*棋盘行数*/ int y; /*棋盘列数*/int b; /*选择游戏难度 1简单2普通3困难4 自定义*/int h; /*雷的个数*/struct Games g;struct Games int game_intss; char game_charss;使用结构体数组来完成棋盘的定义,引用时间头文件来完成对随机布雷的随时性。5.3各个函数的分析5.3.1棋盘初始化程序:void InitialValue_game(struct Games *g) int i,j; for(i=0;ix;i+) for(j=0;jy;j+) (*g).game_intij=0; (*g).game_charij=*; 5.3.2随机布雷:InitialMine_game(struct Games *g) int i,j,next1,next2; int sum=0; srand(unsigned)time(NULL); while(1) i=rand()%x; j=rand()%y; if(*g).game_intij=9) continue; (*g).game_intij=9; +sum; for(next1=-1;next12;next1+) for(next2=-1;next22;next2+) if( -1i+next1 & next1+ix& -1j+next2 & j+next2y ) if(*g).game_inti+next1j+next2!=9) (*g).game_inti+next1j+next2+=1; if(sum=b) break; 实现雷的随机分布和各个点周围雷数的计算。srand()随机布雷,5.3.3打印棋盘:void print_game(struct Games *g,int Logo) int i,j; int as; for(i=0;ix;i+) ai=i+1; if(Logo=1) printf( %d,a0); for(i=1;ix;i+) printf(i10? %d : %d,ai); printf(nn); for(i=0;ix;i+) if(i+110) printf(%d ,i+1); for(j=0;jy;j+) printf(%d ,(*g).game_intij); printf(n); else printf(%d ,i+1); for(j=0;jy;j+) printf(%d ,(*g).game_intij); printf(n); if(Logo=2) printf( %d,a0); for(i=1;ix;i+) printf(i10? %d : %d,ai); printf(nn); for(i=0;ix;i+) if(i+110) printf(%d ,i+1); for(j=0;jy;j+)printf(%c ,(*g).game_charij); printf(n); else printf(%d ,i+1); for(j=0;jy;j+)printf(%c ,(*g).game_charij); printf(n); 5.3.4判断结束,点开地图: int judge_game(struct Games *g) int sum=0; int i,j; for(i=0;ix;i+) for(j=0;jy;j+) if(*g).game_charij=*) sum+=1; return sum;int openmap(struct Games *g,int i,int j) system(cls); int next1,next2; if(*g).game_intij=9) return 1; else if(*g).game_intij!=0) (*g).game_charij=(char)(*g).game_intij+48); return 2; else (*g).game_charij=0; for(next1=-1;next12;next1+) for(next2=-1;next22;next2+) if( -1i+next1 & next1+ix & -1j+next2 & j+next2y) if(*g).game_chari+next1j+next2=*) openmap(g,i+next1,j+next2); return 2; 点开地图,即实现:当输入坐标处为0,打开周围同样情况的坐标点。即实现和Windows扫雷游戏同样的功能。6. 设计结果及分析运行第一步:按ENTER键进入:选择游戏难度,按ENTER键进入:游戏界面,开始从键盘输入数字,格式为(3,6),点击ENTER键:游戏失败显示,并提示再来一局,程序完毕。7. 设计结论本程序在刚开始调试时有许多错误,但都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。在刚开始的几次调试中曾经出现过不能运行、不能产生随机数字、不会正确输出结果、不能进行循环等等问题。经同学的帮助,这些问题得到克服,并且使程序的功能也得到了一定的完善。在这次设计过程中,不仅复习课本上所学知识,还通过查资料、问同学学到了课本上没有的知识。从而启发我,要想写好程序,在写好课本知识的同时还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所学的知识综合起来应用,力争写出完美的程序。除此之外,我还得到了一些有用的教训:写程序时必须要细心,不能输错一个字符标点,就连全角半角也得注意。在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。8. 问题及心得体会问题:在本次实习过程中碰到的编译、连接的错误主要有:缺少变量定义,定义位置不正确、语法错误、注释的位置等。错误解决方法。(1)缺少变量定义,定义位置不正确;由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还是很容易找到。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。为减少这样的错误我后来还是用不同的变量名来表示,结果引起的那些错误解决了。(2)语法错误;大多的语法错误在通过书本参考下能够修改。主要是平时缺乏锻炼、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式(3)注释的位置;程序设计中在注释的时候不能同我们平常写字一样随心所欲,我们应该注意注释的格式。注释中不能含有c语言可执行的语句!心得体会 课程设计是本科学习阶段一次非常难得的理论与实际相结合的机会,通过这次比较完整的一个程序的设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的基础知识,解决实际问题的能力,同时也提高我查阅文献资料、对程序整体的把握等其他能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富。这是我们都希望看到的也正是我们进行课程设计的目的所在。虽然设计内容繁多,过程繁琐但我的收获却更加丰富。各种组件的运用,各种算法的应用,各种控件的利用我都是随着设计的不断深入而不断熟悉并逐步掌握的。和老师以及同学的沟通交流更使我对程序整体的规划与设计有了新的认识也对自己提出了新的要求。提高是有限的但提高也是全面的,正是这一次设计让我积累了许多实际经验,也必然会让我在未来的工作学习中表现出更高的应变能力和理解力。顺利如期的完成本次课程设计给了我很大的信心,但是也让多不足的地方,学习其实就是一个不断完善的过程,正视自己的不足之处,在以后的工作和学习中不断的弥补这些不足之处,在以后的生活中也要保持同样的态度,不断的完善自己。9. 对本设计过程及方法、手段的改进建议 我们认为此程序太过简单,应该更进一步把扫雷界面输出为图型图案。也即是能够使用方块,然后调用graphics.h库函数rectangle(x,y,xx,yy)画一格矩形,setfillstyle(SOLID_FILL,color)设置填充方式,floodfill(x+1,y+1,WHITE)填充方块。让方块看起来有立体感,将矩形上方和左方的边线设为白色,下方和右方的边线设为黑色。使扫雷界面更加美观。再此基础上增加标记地雷的功能,比如说使用小红旗,使玩家能够跳过地雷。如果可以的话,可以考虑使用鼠标来控制点击位置,如果更好的话可以加入声音,比如没有点到雷的开心的声音,点到雷后的倒霉声。通过老师的指导,这个软件的设计要更趋于人性化,也即是加入提示输入格式,以解决输入格式错误问题,而不是直接结束,重启。10. 参考文献郭翠英主编的C语言课程设计实例精编;张芳妮 吕波 译C语言编程常见问题解答;谭浩强C程序设计题解与上机指导(第二版)。伍俊良.VB课程设计与系统开发案例M.北京附:源程序代码:s#include #include stdlib.h # include time.h# define s 20int x; /*棋盘行数*/ int y; /*棋盘列数*/int b; /*选择游戏难度 1简单2普通3困难4 自定义*/int h; /*雷的个数*/struct Games g;struct Games int game_intss; char game_charss;void InitialValue_game(struct Games *g)/*棋盘初始化*/ int i,j; for(i=0;ix;i+) for(j=0;jy;j+) (*g).game_intij=0; (*g).game_charij=#; InitialMine_game(struct Games *g)/*随机布雷*/ int i,j,next1,next2; int sum=0; srand(unsigned)time(NULL); while(1) i=rand()%x; j=rand()%y; if(*g).game_intij=9) continue; (*g).game_intij=9; +sum; for(next1=-1;next12;next1+) for(next2=-1;next22;next2+) if( -1i+next1 & next1+ix& -1j+next2 & j+next2y ) if(*g).game_inti+next1j+next2!=9) (*g).game_inti+next1j+next2+=1; if(sum=b) break; void print_game(struct Games *g,int Logo)/*打印棋盘*/ int i,j; int as; for(i=0;ix;i+) ai=i+1; if(Logo=1) printf( %d,a0); for(i=1;ix;i+) printf(i10? %d : %d,ai); printf(nn); for(i=0;ix;i+) if(i+110) printf(%d ,i+1); for(j=0;jy;j+) printf(%d ,(*g).game_intij); printf(n); else printf(%d ,i+1); for(j=0;jy;j+) printf(%d ,(*g).game_intij); printf(n); if(Logo=2) printf( %d,a0); for(i=1;ix;i+) printf(i10? %d : %d,ai); printf(nn); for(i=0;ix;i+) if(i+110) printf(%d ,i+1); for(j=0;jy;j+)printf(%c ,(*g).game_charij); printf(n); else printf(%d ,i+1); for(j=0;jy;j+)printf(%c ,(*g).game_charij); printf(n); int judge_game(struct Games *g)/*判断游戏是否结束*/ int sum=0; int i,j; for(i=0;ix;i+) for(j=0;jy;j+) if(*g).game_charij=#) sum+=1; return sum;int openmap(struct Games *g,int i,int j)/*点开地图 */ system(cls); int next1,next2; if(*g).game_intij=9) return 1; else if(*g).game_intij!=0) (*g).game_charij=(char)(*g).game_intij+48); return 2; else (*g).game_charij=0; for(next1=-1;next12;next1+) for(next2=-1;next22;next2+) if( -1i+next1 & next1+ix & -1j+next2 & j+next2y) if(*g).game_chari+next1j+next2=#) openmap(g,i+next1,j+next2); return 2; main() int i,j; int NO; int begin=1; int h; while(begin) printf ( nnnnnnnnttt=nn ttt| 欢迎进入扫雷 |nnn ttt| 按回车键继续 |nn ttt=nnnn ); getchar(); system(cls); printf( nnnnnnnnn 请选择游戏难度:nn); printf( 1简单难度nn); printf( 2普通难度nn); printf( 3困难难度nn); printf( 4自定义难度nn); scanf(%d,&h); getchar(); if(0h&h5) switch(h) case 1: x=10; y=10; b=10; break; case 2: x=15; y=15; b=40; break; case 3: x=20; y=20; b=60; break; case 4: system(cls); printf(请输入棋盘行列数(小于20且用逗号隔开):); scanf(%d,%d,&x,&y); getchar(); printf(请输入雷的个数:); scanf(%d,&b); getchar(); break; break; else printf(输入错误请重新输n); while(begin) system(cls); InitialValue_game(&g); InitialMine_game(&g); print_game(&g,2); NO=1; while(NO) printf(Please choose:); scanf(%d,%d,&i,&j); getchar(); if(-1i-1 & i-1x & -1j-1 & j-1y) switch(openmap(&g,i-1,j-1) case 1: print_game(&g,1); printf(游戏结束!按回车键再来一局n); if(getchar()=n) begin=1; else begin=0; NO=0; break; case 2: if(judge_game(&g)=b) printf(win!n); print_game(&g,1); printf(按回车键再来一局n); if(getchar()=n) begin=1; else begin=0; NO=0; break; else print_game(&g,2);NO=1;break; default:break; else printf(你输入错误!请重新输入n); 下面红色字体是赠送的精美网络散文欣赏,不需要的朋友可以下载后编辑删除!谢谢!一一条猎狗将兔子赶出了窝,一直追赶他,追了很久仍没有捉到。牧羊看到此种情景,讥笑猎狗说你们两个之间小的反而跑得快得多。猎狗回答说:你不知道我们两个的跑是完全不同的!我仅仅为了一顿饭而跑,他却是为了性命而跑呀!目标二这话被猎人听到了,猎人想:猎狗说的对啊,那我要想得到更多的猎物,得想个好法子.于是,猎人又买来几条猎狗,凡是能够在打猎中捉到兔子的,就可以得到几根骨头,捉不到的就没有饭吃.这一招果然有用,猎狗们纷纷去努力追兔子,因为谁都不愿意看着别人有骨头吃,自已没的吃.就这样过了一段时间,问题又出现了.大兔子非常难捉到,小兔子好捉.但捉到大兔子得到的奖赏和捉到小兔子得到的骨头差不多,猎狗们善于观察发现了这个窍门,专门去捉小兔子.慢慢的,大家都发现了这个窍门.猎人对猎狗说:最近你们捉的兔子越来越小了,为什么?猎狗们说:反正没有什么大的区别,为什么费那么大的劲去捉那些大的呢?动力三猎人经过思考后,决定不将分得骨头的数量与是否捉到兔子挂钩,而是采用每过一段时间,就统计一次猎狗捉到兔子的总重量.按照重量来评价猎狗,决定一段时间内的待遇.于是猎狗们捉到兔子的数量和重量都增加了.猎人很开心.但是过了一段时间,猎人发现,猎狗们捉兔子的数量又少了,而且越有经验的猎狗,捉兔子的数量下降的就越利害.于是猎人又去问猎狗.猎狗说我们把最好的时间都奉献给了您,主人,但是我们随着时间的推移会老,当我们捉不到兔子的时候,您还会给我们骨头吃吗?四猎人做了论功行赏的决定.分析与汇总了所有猎狗捉到兔子的数量与重量,规定如果捉到的兔子超过了一定的数量后,即使捉不到兔子,每顿饭也可以得到一定数量的骨头.猎狗们都很高兴,大家都努力去达到猎人规定的数量.一段时间过后,终于有一些猎狗达到了猎人规定的数量.这时,其中有一只猎狗说:我们这么努力,只得到几根骨头,而我们捉的猎物远远超过了这几根骨头.我们为什么不能给自己捉兔子呢?于是,有些猎狗离开了猎人,自己捉兔子去了骨头与肉兼而有之五猎人意识到猎狗正在流失,并且那些流失的猎狗像野狗一般和自己的猎狗抢兔子。情况变得越来越糟,猎人不得已引诱了一条野狗,问他到底野狗比猎狗强在那里。野狗说:“猎狗吃的是骨头,吐出来的是肉啊!”,接着又道:“也不是所有的野狗都顿顿有肉吃,大部分最后骨头都没的舔!不然也不至于被你诱惑。”于是猎人进行了改革,使得每条猎狗除基本骨头外,可获得其所猎兔肉总量的n,而且随着服务时间加长,贡献变大,该比例还可递增,并有权分享猎人总兔肉的m。就这样,猎狗们与猎人一起努力,将野狗们逼得叫苦连天,纷纷强烈要求重归猎狗队伍。只有永远的利益,没有永远的朋友日子一天一天地过去,冬天到了,兔子越来越少,猎人们的收成也一天不如一天。而那些服务时间长的老猎狗们老得不能捉到兔子,但仍然在无忧无虑地享受着那些他们自以为是应得的大份食物。终于有一天猎人再也不能忍受,把他们扫地出门,因为猎人更需要身强力壮的猎狗一提到等字,首先就能想到等车等人,等的过程中就觉得时间和蜗牛一般在向前移动,焦虑,烦躁,一遍遍张望倒数,脚下的那块地恨不能踩个洞出来。这时候何不稍微平复一下心情,换个角度看周围的云卷云舒,花开花落。就如在这个季节,我等待一场秋雨的来临。你可以在深夜偷偷来袭,清晨一睁眼看见湿漉漉的地面,万紫千红的雨伞,车子疾驰而过溅起的水花,这些给我带来的是何等的意外惊喜。你可以在某个午后,舞动一片片飘落的黄叶,撩起街边女人的裙装,赶着路人的脚步匆匆忙忙来了。一抬头,灰色的天空就是成熟稳重的男人的脸庞,不苟言笑,严厉中却有几分温暖。你可以在黄昏我下班的时候飘飘洒洒,没有雨伞也不用沮丧,任你蜻蜓点水式地亲吻我的发丝额头鼻尖嘴唇,不紧不慢往回走,这样的场景在我的梦里出现过好多次。等待一场秋雨的来临,也好比等待一个人的出现。不要去责怪怨恨,也不要为难自己。既然决定用等待这种独有的方式碰碰运气,就要有破釜沉舟的决心。来或者不来,我就一直在那里,惊喜了双眸或者失落了时光,都写在心底。学会了等待,孤独不再是孤独。以为在无人的街道我会频频回首,或者努力抬头看昏黄的路灯打着疲倦的盹儿,强硬地收回泪水。恰恰相反,我却丝毫没有表现出无助和恐慌,头发向后甩一甩,高跟鞋踩的噔噔作响,突然间我还哼起几句歌词。这多情而迷人的夜色是特意为我安排的吗?我在心里笑了。如果习惯了有人听你唠叨陪你解闷,你笑他乐你哭他愁的日子,一定要把这个人的全部心意捧在手心,点点滴滴拼凑成诗篇,等你们老了,选择某个风和日丽的午后,拿出这些诗稿晾晒。即使现在你在天涯他在海角,心心相通的奇妙就是只可意会不可言传。享受孤独带来的沉淀,夜不再黑路不再长思念不再苦涩。我选择了等待,义无反顾。我享受着孤独,走过春夏秋冬,每个季节陪我一起惊艳。有一次,在我参加的一个晚会上,主持人问一个小男孩:你长大以后要做什么样的人?孩子看看我们这些企业家,然后说:做企业家。在场的人忽地笑着鼓起了掌。我也拍了拍手,但听着并不舒服。我想,这孩子对于企业究竟知道多少呢?他是不是因为当着我们的面才说要当企业家的呢?他是不是受了大人的影响,以为企业家风光,都是有钱的人,才要当企业家的呢?这一切当然都是一个谜。但不管怎样,作为一个人的人生志向,我以为当什么并不重要;不管是谁,最重要的是从小要立志做一个努力的人。我小的时候也曾有人问过同样的问题,我的回答不外乎当教师、解放军和科学家之类。时光一晃流走了二十多年,当年的孩子,如今已是四十出头的大人。但仔细想一想,当年我在大人们跟前表白过的志向,实际一个也没有实现。我身边的其他人差不多也是如此。有的想当教师,后来却成了个体户;想当解放军的,有人竟做了囚犯。我上大学时有两个同窗好友,他们现在都是我国电子行业里才华出众的人,一个成长为“康佳”集团的老总,一个领导着TCL集团。我们三个不期而然地成为中国彩电骨干企业的经营者,可是当年大学毕业时,无论有多大的想像力,我们也不敢想十几年后会成现在的样子。一切都是我们在奋斗中见机行事,一步一步努力得来的。与其说我们是有理想的人,不如说我们是一直在努力的人。并非我们不重视理想,而是因为树雄心壮志易,为理想努力难,人生自古就如此。有谁会想到,十多年前的今天,我曾是一个在街头彷徨,为生存犯愁的人?当时的我,一无所有,前途渺茫,真不知路在何处。然而,我却没有灰心失望,回想起来,支撑着我走过这段坎坷岁月的正是我的意志品格。当许多人以为我已不行、该不行了的时候,我仍做着从地上爬起来的努力,我坚信人生就像马拉多纳踢球,往往是在快要倒下去的时候“进球”获得生机的。事实也正是如此,就在“山重水复疑无路”的时候,香港一家企业倒闭给了我东山再起的机会,使我能够与掌握世界最新技术的英国科技人员合作,开发技术先进的彩色电视机,从此一举走出困境。有人说,“努力”与“拥有”是人生一左一右的两道风景。但我以为,人生最美最不能逊色的风景应该是努力。努力是人生的一种精神状态,是对生命的一种赤子之情。努力是拥有之母,拥有是努力之子。一心努力可谓条条大路通罗马,只想获取可谓道路逼仄,天地窄小。所以,与其规定自己一定要成为一个什么样的人物,获得什么东西,不如磨练自己做一个努力的人。志向再高,没有努力,志向终难坚守;没有远大目标,因为努力,终会找到奋斗的方向。做一个努力的人,可以说是人生最切实际的目标,是人生最大的境界。许多人因为给自己定的目标太高太功利,因为难以成功而变得灰头土脸,最终灰心失望。究其原因,往往就是因为太关注拥有,而忽略做一个努力的人。对于今天的孩子们,如果只关注他们将来该做个什么样的人物,不把意志品质作为一个做人的目标提出来,最终我们只能培养出狭隘、自私、脆弱和境界不高的人。遗憾的是,我们在这方面做得并不尽如人意。我一直在思忖:要不要给父亲打个电话,要不要呢?父亲一定是不在家的。他这时也许正站在5楼或者8楼的脚手架上奋力扔上了又一块砖,擦一擦汗的工夫,就被人拼命地吆喝。十几年了,人也上了50,不知道他,还受不受得了。但父亲是心甘情愿又志得意满的,至少他每次与我说话都在努力表达这样的意思。而我,越发地不安。我今年22岁了,父亲52。我4岁时母亲改嫁他乡,父亲和我磕磕绊绊地活着。多少年了,数也数不清楚,那些漫长的日子怎么可以用一个数字说过来呢?父亲的智商比一般人要低一点,生活简单得像几条纵横的网格。很早的时候,别人扔掉一架破木车,他捡回来,敲敲打打,然后拖着上路了,沿途把别人扔下的酒瓶废铁等破东西捡上车拖回家。时间久了,乡邻们也把不要了的东西放到他车上。我整天埋在那一堆破烂里翻翻拣拣,穷人的孩子,六七岁就当了家。冬天来的时候,我放钱的纸盒子已经有了沉甸甸的满足。这年过年,我们吃了鱼和肉。一个8岁的女孩子,把年夜饭看了又看,从心底里微笑着叮嘱自己记住那一刻庞大的快乐,所以,一直到现在,十多年过去了,也忘不了当时满满的幸福。父亲种的瓜菜都新鲜水嫩,我们两个人吃得很少,我就把大部分放到父亲的小推车上。乡里乡亲的嫂子大娘谁要就从上面拿走,回去包顿饺子或者做顿汤面,也不说谢,偶尔记得,差他们的孩子送一碗给我,我笑笑地接着,也不说谢。吃百家饭穿百家衣,我沉默着、绚烂着,也成长着。每天最好的时光便是我踩在小凳上弯腰炒菜,父亲坐在灶前烧火,不时惊慌地去扶一下我脚下的小凳,见很安全了,就呵呵笑起来。现在去想那段日子,总是首先忆起灶间的那片阳光,10岁左右的阳光,竟然是天长地久的样子。这样的日子持续了多少年我已经不记得了。我用纸盒子里的钱交学费,买作业本,也偶尔买点肉做给父亲吃,是恬然的安静感觉。这样的日子让人有种惯性的依赖,像一只鸟的飞翔,没有转弯和阻隔。突然的一天,父亲拖着坏了很多处的车子从废品站回来,脸上青一块紫一块的,透着强烈的委屈和惶惑。钱被镇上的小混混抢了,父亲被打了。我安慰了他半天,最后还是忍不住哭了。这是第一次,然后是,接二连三。父亲越来越惶惑不安,吃饭越来越少,睡觉也很不安稳,经常半夜起来对着窗户呆呆地坐几个时辰。话也不说了,更不笑,脸上眼睁睁地消瘦下来,眼神是不安的游移。我不知道该怎么办。我知道他往日细缓如流水的生活突然碰上了巨岩,他缓不过神来,难受得紧。那天,父亲去废品站很晚了还没回来。外面一片漆黑,心里一阵阵发毛的我跑出去沿路找。嗓子喊破了,像一面破锣,震得自己心里脑里嗡嗡的,却并没传出多大响声。夜里的村野风吹草惊,自己的脚步声和喊声总会引来一片陌生的声音。我毛骨悚然。最终在一个大水湾边看到父亲的车子,没有人。我立刻就大哭起来,感觉整个人都化成了水在不断地往外流,直到整个人都空了。猛然听到一阵急促水声的时候,我吓了一跳,哭声被硬生生截断在喉咙里。我望着声音的来处,好久才看清楚有一个人从水里走过来,越来越近,像从水里长出来的一样,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!