欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > 原型设计心得体会

原型设计心得体会

时间:2014-05-24 15:15

急有一个关C语言的问题

帮帮我,也挑战一下你自己

测试过了 \\\/*头文件*\\\/ #include #include #include \\\/*其它说明*\\\/ #include \\\/*字符串函数*\\\/ #include \\\/*内存操作函数*\\\/ #include \\\/*字符操作函数*\\\/ #include conio.h #define LEN sizeof(STUDENT) typedef struct stu \\\/*定义结构体数组用于缓存数据*\\\/ {char num[6]; char name[5]; int score[3]; int sum; float average; int order; struct stu *next; }STUDENT; \\\/*函数原型*\\\/ STUDENT *init(); \\\/*初始化函数*\\\/ int menu_select(); \\\/*菜单函数*\\\/ STUDENT *create(); \\\/*创建链表*\\\/ void print(STUDENT *head); \\\/* 显示全部记录*\\\/ void search(STUDENT *head); \\\/*查找记录*\\\/ STUDENT *mydelete(STUDENT *head); \\\/*删除记录*\\\/ STUDENT *sort(STUDENT *head); \\\/*排序*\\\/ STUDENT *insert(STUDENT *head,STUDENT *mynew); \\\/*插入记录*\\\/ void save(STUDENT *head); \\\/*保存文件*\\\/ STUDENT *load(); \\\/*读文件*\\\/ \\\/*主函数界面*\\\/ void main() {STUDENT *head,mynew; head=init(); \\\/*链表初始化,使head的值为NULL*\\\/ for(;;) \\\/*循环无限次*\\\/ {switch(menu_select()) { case 1:head=create();break; case 2:print(head);break; case 3:search(head);break; case 4:head=mydelete(head);break; case 5:head=sort(head);break; case 6:head=insert(head,&mynew);break; \\\/*&mynew表示返回地址*\\\/ case 7:save(head);break; case 8:head=load(); break; case 9:exit(0); \\\/*如菜单返回值为9则程序结束*\\\/ } } } \\\/*初始化函数*\\\/ STUDENT *init() { return NULL; \\\/*返回空指针*\\\/ } \\\/*菜单选择函数*\\\/ menu_select() {int n; printf(\\\ 按任一键进入主菜单...... \\\ press any key to enter the menu......); \\\/*按任一键进入主菜单*\\\/ getch(); \\\/*从键盘读取一个字符,但不显示于屏幕*\\\/ system(cls); printf(********************************************************************************\\\ ); printf(\\\\\\ 欢迎 Welcome to\\\ ); printf(\\\ \\\\\\\\\ 使用学生管理系统1.0\\\ \\\ \\\\\\\\\\\\\\\\\\ ); printf(*************************************MENU***************************************\\\ ); printf(\\\\\\\\\1. 输入学生成绩记录 Enter the record\\\ ); \\\/*输入学生成绩记录*\\\/ printf(\\\\\\\\\2. 显示 Print the record\\\ ); \\\/*显示*\\\/ printf(\\\\\\\\\3. 寻找 Search record on name\\\ ); \\\/*寻找*\\\/ printf(\\\\\\\\\4. 删除 mydelete a record\\\ ); \\\/*删除*\\\/ printf(\\\\\\\\\5. 排序 Sort to make mynew a file\\\ ); \\\/*排序*\\\/ printf(\\\\\\\\\6. 插入 Insert record to list\\\ ); \\\/*插入*\\\/ printf(\\\\\\\\\7. 保存 Save the file\\\ ); \\\/*保存*\\\/ printf(\\\\\\\\\8. 读取 Load the file\\\ ); \\\/*读取*\\\/ printf(\\\\\\\\\9. 退出 Quit\\\ ); \\\/*退出*\\\/ printf(********************************************************************************\\\ ); do{ printf(\\\ \\\\\\\\\输入你的选择Enter your choice(1~9):); scanf(%d,&n); }while(n<1||n>9); \\\/*如果选择项不在1~9之间则重输*\\\/ return(n); \\\/*返回选择项,主函数根据该数调用相应的函数*\\\/ } \\\/*输入函数*\\\/ STUDENT *create() {int i,s; STUDENT *head=NULL,*p; \\\/* 定义函数.此函数带回一个指向链表头的指针*\\\/ system(cls); for(;;) {p=(STUDENT *)malloc(LEN); \\\/*开辟一个新的单元*\\\/ if(!p) \\\/*如果指针p为空*\\\/ {printf(\\\ 输出内存溢出. Out of memory.); \\\/*输出内存溢出*\\\/ return (head); \\\/*返回头指针,下同*\\\/ } printf(输入学号Enter the num(0:list end):); scanf(%s,p->num); if(p->num[0]=='0') break; \\\/*如果学号首字符为0则结束输入*\\\/ printf(输入名字Enter the name:); scanf(%s,p->name); printf(请输入3门成绩Please enter the %d scores\\\ ,3); \\\/*提示开始输入成绩*\\\/ s=0; \\\/*计算每个学生的总分,初值为0*\\\/ for(i=0;i<3;i++) \\\/*3门课程循环3次*\\\/ { do{ printf(成绩score%d:,i+1); scanf(%d,&p->score[i]); if(p->score[i]<0 || p->score[i]>100) \\\/*确保成绩在0~100之间*\\\/ printf(数据错误,请重新输入 Data error,please enter again.\\\ ); }while(p->score[i]<0 || p->score[i]>100); s=s+p->score[i]; \\\/*累加各门成绩*\\\/ } p->sum=s; \\\/*将总分保存*\\\/ p->average=(float)s\\\/3; \\\/*先用强制类型转换将s转换成float型,再求平均值*\\\/ p->order=0; \\\/*未排序前此值为0*\\\/ p->next=head; \\\/*将头结点做为新输入结点的后继结点*\\\/ head=p; \\\/*新输入结点为新的头结点*\\\/ } return(head); } \\\/* 显示全部记录函数*\\\/ void print(STUDENT *head) {int i=0; \\\/* 统计记录条数*\\\/ STUDENT *p; \\\/*移动指针*\\\/ system(cls); p=head; \\\/*初值为头指针*\\\/ printf(\\\ ************************************STUDENT************************************\\\ ); printf(-------------------------------------------------------------------------------\\\ ); printf(| Rec | Num | Name | Sc1 | Sc2 | Sc3 | Sum | Ave | Order |\\\ ); printf(-------------------------------------------------------------------------------\\\ ); while(p!=NULL) { i++; printf(| %3d | %4s | %-4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\\\ , i, p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order); p=p->next; } printf(-------------------------------------------------------------------------------\\\ ); printf(**************************************END**************************************\\\ ); } \\\/*查找记录函数*\\\/ void search(STUDENT *head) {STUDENT *p; \\\/* 移动指针*\\\/ char s[5]; \\\/*存放姓名用的字符数组*\\\/ system(cls); printf(请输入个姓名来查找. Please enter name for searching.\\\ ); scanf(%s,s); p=head; \\\/*将头指针赋给p*\\\/ while(strcmp(p->name,s) && p != NULL) \\\/*当记录的姓名不是要找的,或指针不为空时*\\\/ p=p->next; \\\/*移动指针,指向下一结点*\\\/ if(p!=NULL) \\\/*如果指针不为空*\\\/ {printf(\\\ *************************************FOUND************************************\\\ ); printf(-------------------------------------------------------------------------------\\\ ); printf(| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\\\ ); printf(-------------------------------------------------------------------------------\\\ ); printf(| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\\\ , p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order); printf(-------------------------------------------------------------------------------\\\ ); printf(***************************************END**************************************\\\ ); } else printf(\\\ 没有该学生 There is no num %s student on the list.\\\ ,s); \\\/*显示没有该学生*\\\/ } \\\/*删除记录函数*\\\/ STUDENT *mydelete(STUDENT *head) {int n; STUDENT *p1,*p2; \\\/*p1为查找到要删除的结点指针,p2为其前驱指针*\\\/ char c,s[6]; \\\/*s[6]用来存放学号,c用来输入字母*\\\/ system(cls); printf(请输入要删除的学号 Please enter the mydeleted num: ); scanf(%s,s); p1=p2=head; \\\/*给p1和p2赋初值头指针*\\\/ while(strcmp(p1->num,s) && p1 != NULL) \\\/*当记录的学号不是要找的,或指针不为空时*\\\/ {p2=p1; \\\/*将p1指针值赋给p2作为p1的前驱指针*\\\/ p1=p1->next; \\\/*将p1指针指向下一条记录*\\\/ } if(strcmp(p1->num,s)==0) \\\/*学号找到了*\\\/ {printf(**************************************FOUND************************************\\\ ); printf(-------------------------------------------------------------------------------\\\ ); printf(| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\\\ ); printf(-------------------------------------------------------------------------------\\\ ); printf(| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\\\ , p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->sum,p1->average,p1->order); printf(-------------------------------------------------------------------------------\\\ ); printf(***************************************END**************************************\\\ ); printf(\\\ 是否要删除,输入Y删除,N则退出\\\ Are you sure to mydelete the student Y\\\/N ?); \\\/*提示是否要删除,输入Y删除,N则退出*\\\/ for(;;) {scanf(%c,&c); if(c=='n'||c=='N') break; \\\/*如果不删除,则跳出本循环*\\\/ if(c=='y'||c=='Y') { if(p1==head) \\\/*若p1==head,说明被删结点是首结点*\\\/ head=p1->next; \\\/*把第二个结点地址赋予head*\\\/ else p2->next=p1->next; \\\/*否则将一下结点地址赋给前一结点地址*\\\/ n=n-1; printf(\\\ 学号为(Num): %s 学生以被删除(student have been mydeleted.)\\\ ,s); printf(别忘了保存. Don't forget to save.\\\ );break; \\\/*删除后就跳出循环*\\\/ } } } else printf(\\\ 没有这个学生在表上\\\ There is no num %s student on the list.\\\ ,s); \\\/*找不到该结点*\\\/ return(head); } \\\/*排序函数*\\\/ STUDENT *sort(STUDENT *head) {int i=0; \\\/*保存名次*\\\/ STUDENT *p1,*p2,*t,*temp; \\\/*定义临时指针*\\\/ temp=head->next; \\\/*将原表的头指针所指的下一个结点作头指针*\\\/ head->next=NULL; \\\/*第一个结点为新表的头结点*\\\/ while(temp!=NULL) \\\/*当原表不为空时,进行排序*\\\/ { t=temp; \\\/*取原表的头结点*\\\/ temp=temp->next; \\\/*原表头结点指针后移*\\\/ p1=head; \\\/*设定移动指针p1,从头指针开始*\\\/ p2=head; \\\/*设定移动指针p2做为p1的前驱,初值为头指针*\\\/ while(t->averageaverage&&p1!=NULL) \\\/*作成绩平均分比较*\\\/ { p2=p1; \\\/*待排序点值小,则新表指针后移*\\\/ p1=p1->next; } if(p1==p2) \\\/*p1==p2,说明待排序点值大,应排在首位*\\\/ { t->next=p1; \\\/*待排序点的后继为p*\\\/ head=t; \\\/*新头结点为待排序点*\\\/ } else \\\/*待排序点应插入在中间某个位置p2和p1之间,如p为空则是尾部*\\\/ { t->next=p1; \\\/*t的后继是p1*\\\/ p2->next=t; \\\/*p2的后继是t*\\\/ } } p1=head; \\\/*已排好序的头指针赋给p1,准备填写名次*\\\/ while(p1!=NULL) \\\/*当p1不为空时,进行下列操作*\\\/ { i++; \\\/*结点序号*\\\/ p1->order=i; \\\/*将结点序号赋值给名次*\\\/ p1=p1->next; \\\/*指针后移*\\\/ } printf(排序成功 Sorting is sucessful.\\\ ); \\\/*排序成功*\\\/ return (head); } \\\/*插入记录函数*\\\/ STUDENT *insert(STUDENT *head,STUDENT *mynew) {STUDENT *p0,*p1,*p2; int n,sum1,i; p1=head; \\\/*使p1指向第一个结点*\\\/ p0=mynew; \\\/*p0指向要插入的结点*\\\/ printf(\\\ Please enter a mynew record.\\\ ); \\\/*提示输入记录信息*\\\/ printf(输入学号Enter the num:); scanf(%s,mynew->num); printf(输入名字Enter the name:); scanf(%s,mynew->name); printf(Please enter the %d scores.\\\ ,3); sum1=0; \\\/*保存新记录的总分,初值为0*\\\/ for(i=0;i<3;i++) { do{ printf(成绩score%d:,i+1); scanf(%d,&mynew->score[i]); if(mynew->score[i]>100||mynew->score[i]<0) printf(数据错误Data error,please enter again.\\\ ); }while(mynew->score[i]>100||mynew->score[i]<0); sum1=sum1+mynew->score[i]; \\\/*累加各门成绩*\\\/ } mynew->sum=sum1; \\\/*将总分存入新记录中*\\\/ mynew->average=(float)sum1\\\/3; mynew->order=0; if(head==NULL) \\\/*原来的链表是空表*\\\/ {head=p0;p0->next=NULL;} \\\/*使p0指向的结点作为头结点*\\\/ else {while((p0->averageaverage)&&(p1->next!=NULL)) {p2=p1; \\\/*使p2指向刚才p1指向的结点*\\\/ p1=p1->next; \\\/*p1后移一个结点*\\\/ } if(p0->average>=p1->average) {if(head==p1)head=p0; \\\/*插到原来第一个结点之前*\\\/ else p2->next=p0; \\\/*插到p2指向的结点之后*\\\/ p0->next=p1;} else {p1->next=p0;p0->next=NULL;} \\\/*插到最后的结点之后*\\\/ } n=n+1; \\\/*结点数加1*\\\/ head=sort(head); \\\/*调用排序的函数,将学生成绩重新排序*\\\/ printf(\\\ 学生Student %s 已被更新have been inserted.\\\ ,mynew->name); printf(不要忘了保存Don't forget to save the mynew file.\\\ ); return(head); } \\\/*保存数据到文件函数*\\\/ void save(STUDENT *head) {FILE *fp; \\\/*定义指向文件的指针*\\\/ STUDENT *p; \\\/* 定义移动指针*\\\/ char outfile[10]; printf(输出文件例如:c:\\\\\\\\score Enter outfile name,for example c:\\\\\\\\score\\\ ); scanf(%s,outfile); if((fp=fopen(outfile,w))==NULL) \\\/*为输出打开一个二进制文件,为只写方式*\\\/ { printf(打不开文件Cannot open the file\\\ ); return; \\\/*若打不开则返回菜单*\\\/ } printf(\\\ 保存中...Saving the file......\\\ ); p=head; \\\/*移动指针从头指针开始*\\\/ while(p!=NULL) \\\/*如p不为空*\\\/ { fwrite(p,LEN,1,fp); \\\/*写入一条记录*\\\/ p=p->next; \\\/*指针后移*\\\/ } fclose(fp); \\\/*关闭文件*\\\/ printf(保存成功....Save the file successfully!\\\ ); } \\\/* 从文件读数据函数*\\\/ STUDENT *load() {STUDENT *p1,*p2,*head=NULL; \\\/*定义记录指针变量*\\\/ FILE *fp; \\\/* 定义指向文件的指针*\\\/ char infile[10]; printf(倒入文件例如:c:\\\\\\\\score Enter infile name,for example c:\\\\\\\\score\\\ ); scanf(%s,infile); if((fp=fopen(infile,r))==NULL) \\\/*打开一个二进制文件,为只读方式*\\\/ { printf(打不开文件Can not open the file.\\\ ); return(head); } printf(\\\ 寻找文件...Loading the file!\\\ ); p1=(STUDENT *)malloc(LEN); \\\/*开辟一个新单元*\\\/ if(!p1) { printf(内存溢出!Out of memory!\\\ ); return(head); } head=p1; \\\/*申请到空间,将其作为头指针*\\\/ while(!feof(fp)) \\\/*循环读数据直到文件尾结束*\\\/ { if(fread(p1,LEN,1,fp)!=1) break; \\\/*如果没读到数据,跳出循环*\\\/ p1->next=(STUDENT *)malloc(LEN); \\\/*为下一个结点开辟空间*\\\/ if(!p1->next) { printf(Out of memory!\\\ ); return (head); } p2=p1; \\\/*使p2指向刚才p1指向的结点*\\\/ p1=p1->next; \\\/*指针后移,新读入数据链到当前表尾*\\\/ } p2->next=NULL; \\\/*最后一个结点的后继指针为空*\\\/ fclose(fp); printf(\\\ 你成功的从文件中读取了数据!\\\ You have success to read data from the file!\\\ ); return (head); }

急求 设计贪吃蛇实验报告

学生课程设计(论文)  题 目: 贪吃蛇游戏程序设计指导  学生姓名: 学 号:200910801001  所在院(系): 计算机学院  专 业: 计算机科学与技术  班 级: 2009级一班  指导教师: 何春燕 职称: 讲 师  2010年06月 18日  目录  摘要…………………………………………………………6  1、设计要求………………………………………………….7  2、所用仪器设备…………………………………………….7  3、具体设计过程…………………………………………….8.  3.1、程序功能……………………………………………8  3.2设计思想………………………………………………8  3.3.设计的具体实现……………………………………8.  3.4 总体流程图………………………………………….14  3.5、程序代码编写及注释………………………………..15  3.6调试问题及解决方法…………………………………21  3.7调试结果…………………………………………….22.  4设计心得体会………………………………………………25.  5、参考文献………………………………………………..26  摘 要  编写C语言程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。

作为一个完整的程序,尤其是一个完整的游戏,必须考虑人机交流与用户体验。

游戏的界面不能太丑,更不能连个简单的界面都没有。

游戏应该有个比较漂亮的界面,在有必要硬件支持和软件的支持下,游戏开发者必须最大限度的使游戏美观。

游戏的美观是一方面,游戏的内在素质是另一方面。

一个游戏的优劣,最终由玩家决定。

在游戏与玩家见面之前,游戏开发者要设计一种让玩家投入的游戏模式,并且在一定的游戏规则下进行。

  关键词 贪吃蛇 流程图 c语言 源程序 turbo C  贪吃蛇游戏程序设计  1、设计要求  通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。

  (1).收集资料,分析课题,分解问题,形成总体设计思路;  (2).深入分析各个小问题,列出大纲,编写各部分程序模块;  (3).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;  (4).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;  (5).完成课程设计报告,并进行答辩  C语言是一种易学易懂的通用程序设计语言,由于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“目标程序效率高”可移植性和能在各种系统上普遍实现等特点使它成为当今世界上的主流程序设计语言之一,同时被选作目前全世界广泛应用,同时也是大学生必修的科目。

作为一位当代的大学生更要很好的利用它,学好一门设计语言,实现学以至用。

  制作C程序报告,可以巩固和加深自己对C语言课程的基本知识的理解和掌握,并且能够掌握C语言编程和程序调试的基本技能。

  通过游戏程序的设计训练可以提高自己的基本技能,更好地掌握字符串的表示方法和字符串函数的功能、Tc图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高自己编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高运用C语言解决实际问题的能力,巩固C语言语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。

  2、所用仪器设备  1、能正常工作的计算机一台; 2、WindowsXP;  3、TC程序; 4、Microsoft Word2003;  3、具体设计过程  3.1、程序功能  贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体叉蛇头撞倒自己身体游戏结束。

  3.2 设计思想  程序关键在于表示蛇的图形及蛇的移动。

用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。

移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。

食物的出现与消失也是画矩形块和覆盖矩形块。

为了便于理解,定义两个结构体:食物与蛇。

  3.3.设计的具体实现  (1)函数定义  函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用  #define N 200  #include \\\/*图形头文件*\\\/  #include \\\/*包含rand等函数*\\\/  #include \\\/*包含bios函数*\\\/  #define LEFT 0x4b00\\\/*光标左键值*\\\/  #define RIGHT 0x4d00\\\/*光标右键值*\\\/  #define DOWN 0x5000\\\/*光标下键值*\\\/  #define UP 0x4800\\\/*光标上键值*\\\/  #define ESC 0x011b\\\/*ESC的ASCII码*\\\/  int i,key;\\\/*图形坐标变量及按键变量*\\\/  int score=0;\\\/*得分*\\\/  int gamespeed=10000;\\\/*游戏速度自己调整*\\\/  struct Food  {  int x;\\\/*食物的横坐标*\\\/  int y;\\\/*食物的纵坐标*\\\/  int yes;\\\/*判断是否要出现食物的变量*\\\/  }food;\\\/*食物的结构体*\\\/  struct Snake  {  int x[];\\\/*蛇的横坐标*\\\/  int y[];\\\/*蛇的纵坐标*\\\/  int node;\\\/*蛇的节数*\\\/  int direction;\\\/*蛇移动方向*\\\/  int life;\\\/* 蛇的生命,0活着,1死亡*\\\/  }snake;  void Init(void);\\\/*图形驱动*\\\/  void Close(void);\\\/*图形结束*\\\/  void DrawK(void);\\\/*画界面函数*\\\/  void GameOver(void);\\\/*结束游戏*\\\/  void GamePlay(void);\\\/*玩游戏具体过程*\\\/  void PrScore(void);\\\/*输出成绩*\\\/  void main(void)\\\/*主函数*\\\/  (2)主函数main( )  主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序  void main(void)\\\/*主函数*\\\/  {  Init();\\\/*图形驱动*\\\/  DrawK();\\\/*开始画面*\\\/  GamePlay();\\\/*玩游戏具体过程*\\\/  Close();\\\/*图形结束*\\\/  }  void Init(void)\\\/*图形驱动*\\\/  {  int gd=DETECT,gm;  initgraph(&gd,&gm,c:\\\\\\\c); \\\/*第一个参数表示图形适配器的类型,第二个为在该类型下图形的显示模式,第三个参数指定驱动程序所在目录。

*\\\/  cleardevice();  }  (3) 画界面函数DrawK( )  主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。

  void DrawK(void)\\\/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*\\\/  {  setbkcolor(0);\\\/*设置当前背景颜色*\\\/  setcolor(YELLOW);\\\/*设置当前画线颜色*\\\/  setlinestyle(SOLID_LINE,0,THICK_WIDTH);\\\/*设置线型*\\\/  for(i=50;i<=600;i+=10)\\\/*画围墙*\\\/  {  rectangle(i,40,i+10,49); \\\/*上边*\\\/  rectangle(i,451,i+10,460);\\\/*下边*\\\/  }  for(i=40;i<=450;i+=10)  {  rectangle(50,i,59,i+10); \\\/*左边*\\\/  rectangle(601,i,610,i+10);\\\/*右边*\\\/  }  }  (4)游戏具体过程函数GamePlay( )  这是游戏的主要组成部分,他采用将前一节的坐标赋给后一节,用背景颜色将最后节去除,当蛇头的坐标与食物的坐标相等时,表示食物被吃掉了。

  void GamePlay(void)\\\/*玩游戏具体过程*\\\/  {  randomize();\\\/*随机数发生器*\\\/  food.yes=1;\\\/*1表示需要出现新食物,0表示已经存在食物*\\\/  snake.life=0;\\\/*活着*\\\/  snake.direction=1;\\\/*方向往右*\\\/  snake.x[0]=100;snake.y[0]=100;\\\/*蛇头*\\\/  snake.x[1]=110;snake.y[1]=100;\\\/*蛇第二节*\\\/  snake.node=2;\\\/*节数*\\\/  PrScore();\\\/*输出得分*\\\/  while(1)\\\/*可以重复玩游戏,压ESC键结束*\\\/  {  while(!kbhit())\\\/*在没有按键的情况下,蛇自己移动身体*\\\/  {  if(food.yes==1)\\\/*需要出现新食物*\\\/  {  food.x=rand()%400+60;  food.y=rand()%350+60;  while(food.x%10!=0)\\\/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*\\\/  food.x++;  while(food.y%10!=0)  food.y++;  food.yes=0;\\\/*画面上有食物了*\\\/  }  if(food.yes==0)\\\/*画面上有食物了就要显示*\\\/  {  setcolor(GREEN);\\\/*食物的颜色*\\\/  rectangle(food.x,food.y,food.x+10,food.y-10);  }  for(i=snake.node-1;i>0;i--)\\\/*蛇的每个环节往前移动,贪吃蛇的关键算法*\\\/  {  snake.x[i]=snake.x[i-1];  snake.y[i]=snake.y[i-1];  }  switch(snake.direction) \\\/*定义1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*\\\/  {  case 1:snake.x[0]+=10;break;  case 2: snake.x[0]-=10;break;  case 3: snake.y[0]-=10;break;  case 4: snake.y[0]+=10;break;  }  for(i=3;i595||snake.y[0]<55||snake.y[0]>455)\\\/*蛇是否撞到墙壁*\\\/  {  GameOver();\\\/*本次游戏结束*\\\/  snake.life=1; \\\/*蛇死*\\\/  }  if(snake.life==1)\\\/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*\\\/  break;  if(snake.x[0]==food.x&&snake.y[0]==food.y)\\\/*吃到食物以后*\\\/  {  setcolor(0);\\\/*把画面上的食物东西去掉*\\\/  rectangle(food.x,food.y,food.x+10,food.y-10);  snake.x[snake.node]=-20;snake.y[snake.node]=-20; \\\/*-20表示尾巴长一节*\\\/  \\\/*新的一节先放在看不见的位置,下次循环就取前一节的位置*\\\/  snake.node++;\\\/*蛇的身体长一节*\\\/  food.yes=1;\\\/*画面上需要出现新的食物*\\\/  score+=10;  PrScore();\\\/*输出新得分*\\\/  }  setcolor(4);  for(i=0;i

kbhit)*\\\/  if(snake.life==1)\\\/*如果蛇死就跳出循环*\\\/  break;  key=bioskey(0);\\\/*接收按键*\\\/  if(key==ESC)\\\/*按ESC键退出*\\\/  break;  else  if(key==UP&&snake.direction!=4)  \\\/*判断是否往相反的方向移动*\\\/  snake.direction=3;  else  if(key==RIGHT&&snake.direction!=2)  snake.direction=1;  else  if(key==LEFT&&snake.direction!=1)  snake.direction=2;  else  if(key==DOWN&&snake.direction!=3)  snake.direction=4;  }\\\/*endwhile(1)*\\\/  }  (5)游戏结束函数GameOver( )  游戏结束,清除屏幕,输出分数,显示游戏结束信息。

  void GameOver(void)\\\/*游戏结束*\\\/  {  cleardevice();  PrScore();  setcolor(RED);  settextstyle(0,0,4);  outtextxy(200,200,guojian);  getch();  }  void PrScore(void)\\\/*输出成绩*\\\/  {  char str[10];  setfillstyle(SOLID_FILL, WHITE);  bar(50,15,200,35);  setcolor(6);  settextstyle(0,0,2);  sprintf(str,score:%d,score);  outtextxy(55,20,str);  }  void Close(void)\\\/*图形结束*\\\/  {  getch();  closegraph();  }  3.4 总体流程图  }  3.5、程序代码编写及注释  #define N 200  #include   #include   #include   #define LEFT 0x4b00  #define RIGHT 0x4d00  #define DOWN 0x5000  #define UP 0x4800  #define ESC 0x011b  int i,key;  int score=0;\\\/*得分*\\\/  int gamespeed=50000;\\\/*游戏速度自己调整*\\\/  struct Food  {  int x;\\\/*食物的横坐标*\\\/  int y;\\\/*食物的纵坐标*\\\/  int yes;\\\/*判断是否要出现食物的变量*\\\/  }food;\\\/*食物的结构体*\\\/  struct Snake  {  int x[N];  int y[N];  int node;\\\/*蛇的节数*\\\/  int direction;\\\/*蛇移动方向*\\\/  int life;\\\/* 蛇的生命,0活着,1死亡*\\\/  }snake;  void Init(void);\\\/*图形驱动*\\\/  void Close(void);\\\/*图形结束*\\\/  void DrawK(void);\\\/*开始画面*\\\/  void GameOver(void);\\\/*结束游戏*\\\/  void GamePlay(void);\\\/*玩游戏具体过程*\\\/  void PrScore(void);\\\/*输出成绩*\\\/  \\\/*主函数*\\\/  void main(void)  {  Init();\\\/*图形驱动*\\\/  DrawK();\\\/*开始画面*\\\/  GamePlay();\\\/*玩游戏具体过程*\\\/  Close();\\\/*图形结束*\\\/  }  \\\/*图形驱动*\\\/  void Init(void)  {  int gd=DETECT,gm;  initgraph(&gd,&gm,c:\\\\\\\c);  cleardevice();  }  \\\/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*\\\/  void DrawK(void)  {  \\\/*setbkcolor(LIGHTGREEN);*\\\/  setcolor(11);  setlinestyle(SOLID_LINE,0,THICK_WIDTH);\\\/*设置线型*\\\/  for(i=50;i<=600;i+=10)\\\/*画围墙*\\\/  {  rectangle(i,40,i+10,49); \\\/*上边*\\\/  rectangle(i,451,i+10,460);\\\/*下边*\\\/  }  for(i=40;i<=450;i+=10)  {  rectangle(50,i,59,i+10); \\\/*左边*\\\/  rectangle(601,i,610,i+10);\\\/*右边*\\\/  }  }  \\\/*玩游戏具体过程*\\\/  void GamePlay(void)  {  randomize();\\\/*随机数发生器*\\\/  food.yes=1;\\\/*1表示需要出现新食物,0表示已经存在食物*\\\/  snake.life=0;\\\/*活着*\\\/  snake.direction=1;\\\/*方向往右*\\\/  snake.x[0]=100;snake.y[0]=100;\\\/*蛇头*\\\/  snake.x[1]=110;snake.y[1]=100;  snake.node=2;\\\/*节数*\\\/  PrScore();\\\/*输出得分*\\\/  while(1)\\\/*可以重复玩游戏,压ESC键结束*\\\/  {  while(!kbhit())\\\/*在没有按键的情况下,蛇自己移动身体*\\\/  {  if(food.yes==1)\\\/*需要出现新食物*\\\/  {  food.x=rand()%400+60;  food.y=rand()%350+60;  while(food.x%10!=0)\\\/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*\\\/  food.x++;  while(food.y%10!=0)  food.y++;  food.yes=0;\\\/*画面上有食物了*\\\/  }  if(food.yes==0)\\\/*画面上有食物了就要显示*\\\/  {  setcolor(GREEN);  rectangle(food.x,food.y,food.x+10,food.y-10);  }  for(i=snake.node-1;i>0;i--)\\\/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*\\\/  {  snake.x[i]=snake.x[i-1];  snake.y[i]=snake.y[i-1];  }  \\\/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*\\\/  switch(snake.direction)  {  case 1:snake.x[0]+=10;break;  case 2: snake.x[0]-=10;break;  case 3: snake.y[0]-=10;break;  case 4: snake.y[0]+=10;break;  }  for(i=3;i595||snake.y[0]<55||  snake.y[0]>455)\\\/*蛇是否撞到墙壁*\\\/  {  GameOver();\\\/*本次游戏结束*\\\/  snake.life=1; \\\/*蛇死*\\\/  }  if(snake.life==1)\\\/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*\\\/  break;  if(snake.x[0]==food.x&&snake.y[0]==food.y)\\\/*吃到食物以后*\\\/  {  setcolor(0);\\\/*把画面上的食物东西去掉*\\\/  rectangle(food.x,food.y,food.x+10,food.y-10);  snake.x[snake.node]=-20;snake.y[snake.node]=-20;  \\\/*新的一节先放在看不见的位置,下次循环就取前一节的位置*\\\/  snake.node++;\\\/*蛇的身体长一节*\\\/  food.yes=1;\\\/*画面上需要出现新的食物*\\\/  score+=10;  PrScore();\\\/*输出新得分*\\\/  }  setcolor(4);\\\/*画出蛇*\\\/  for(i=0;i

kbhit)*\\\/  if(snake.life==1)\\\/*如果蛇死就跳出循环*\\\/  break;  key=bioskey(0);\\\/*接收按键*\\\/  if(key==ESC)\\\/*按ESC键退出*\\\/  break;  else  if(key==UP&&snake.direction!=4)  \\\/*判断是否往相反的方向移动*\\\/  snake.direction=3;  else  if(key==RIGHT&&snake.direction!=2)  snake.direction=1;  else  if(key==LEFT&&snake.direction!=1)  snake.direction=2;  else  if(key==DOWN&&snake.direction!=3)  snake.direction=4;  }\\\/*endwhile(1)*\\\/  }  \\\/*游戏结束*\\\/  3.6调试问题及解决方法  将已改好的程序复制到Turbo C时,由于软件的内容过多会出现右移,以致大部分的内容无法复制到Turbo C的界面上,最后导致软件无法运行。

解决方法:在改程序时应该把格式设置好,注意左对齐,同时一行的语句尽量的短,最好是一个语句占一行。

  在将程序输入到TC中,对源程序进行编译、运行,发现程序存在的多处错误, 如下图所示:  可以按照程序运行的错误提示对原程序进行修改,在调试过程中有时也会遇到不懂的问题,我去图书馆或上网查阅一些资料或者是向老师请教也解决了对源程序一一修改直到运行成功。

  3.7调试结果  1. 下图为程序调试编译结果:  2下图为程序调试运行结果(即贪吃蛇游戏界面)  4设计心得体会  经过短短两星期的计算机软件技术实习,让我对C程序有了一个更深的了解,以前总认为C语言很枯燥,认为那些我们所设计的程序没有什么用处,但现在通过设计贪吃蛇游戏这个程序使我懂得了如何将所学的知识运用于生活当中。

虽然在刚开始设计程序时不太明白如何去设计这程序,但当我看完《C语言课程设计案例精编》并用C语言做出这个贪吃蛇程序后,让我深深感受到C程序的神奇。

  在设计这个程序中我主要学会了如何运用以下有关C语言的知识  1) 函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序  十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增  加了程序的可读性。

  2) 分析函数先从main()函数入手。

Main()函数是C源程序编译时的开始,  从main()函数开始读函数可将其他函数的功能理解得更透彻。

  3) 在做程序的时候先列框架,将这个程序所要达到的目的(功能)分析出  来,选择正确的数据结构然后在将程序模块化,按照模块编写函数更加简单合理。

  4) 我还了解了很多的库函数的作用,如字符串函数中有很多对字符串进行  处理的函数,起功能我都有所了解。

  同时我也获得了许多宝贵的经验:  1) 在设计程序之前,务必要对你所设计的题目和内容有一个系统的了解,  知道所设计的题目和内容包含那些资源。

  2) 设计程序采用什么编程语言并不是非常重要,关键要有一个清晰的思路  和一个完整的软件流程图,因而,要先把设计原理与思路搞清楚,再把流程图画出来,这样设计起来就简单多了。

  3) 在设计程序时,不能妄想一次就将整个程序设计好,“反复修改,不断改  进”是程序设计的必经之路,发现错误也是取得成绩的一种。

  4) 要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而  应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便。

  5、参考文献  1.郭翠英,《C语言课程设计案例精编》,中国水利水电出版社,2004.3  2徐金梧,杨德斌等,《TURBO C实用大全》,机械工程出版社,1996.5  3李丽娟 《C语言程序设计教程》 人民邮电出版社  4林华聪 《C语言程序设计思想与实践》 冶金工业出版社  5张继温 《C语言程序设计教程》 高等教育出版社  6 潘云鹤,董金祥等著.计算机图形学——原理、方法及应用.北京:高等教育出版社,2003.12  7 孙家广等,计算机图形学(第三版),清华大学出版社,2004  8 陈元琰编著.计算机图形学实用技术.北京:科学出版社,2000  9和青芳著.计算机图形学原理及算法教程.北京:清华大学出版社  10 陆润民.C语言绘图教程.北京:清华大学出版社,1996

急求一份C语言工资管理系统,求C语言高手帮助,有重谢

课程设计

努力吧。

网络资料丰富,完成不是难事,百分百让人编写的行为不可取

独立游戏开发如何入门?

对于一个大一的学生来说,目测你的基础已经不错了,坚持努力下去应该会有不错的成就。

独立游戏是个很大的话题,首先先明确想要自己一个人做还是找小团队一起合作。

自己一个人做的话,设计、程序、美术、音乐等等就都得会。

如果组团队做,可以重点攻坚其中1到2个方向。

我主要说说技术方面。

你在编程方面已经有所积累,至少算法方面应该是吧,这对于编程来说是个不错的开始。

开发游戏的话,对基本的数据结构和算法要求还是很高的,再有就是软件结构的设计,这个需要较长时间的积累,最好多看看其他的游戏类工程是怎么做的,游戏和那种业务流软件的一个不同在于,游戏程序对实时性要求很高,会有一些为了性能而出现的不同的代码模式。

最基本的一个东西,编程语言,看你希望的开发平台,不同平台会使用不同的开发语言,这个要熟练掌握(不是能写算法、玩具例子那么简单就行,需要知道如何用这种语言开发大型工程)。

关于开发平台,多说两句。

如果想要自己的程序便于大家在任何平台使用,推荐Web相关的技术,如HTML5\\\/JavaScript(用canvas元素,如果需要GPU加速的底层3D API,canvas有WebGL绘制环境(OpenGL ES 2.0的浏览器版))。

如果希望更方便开发,Unity3D是个很好的选择,是个集游戏引擎与运行平台于一体的东西,而且这个东西牛逼的地方在于所有平台都支持(PC、Mobile、Web)。

如果开发手机上的原生app,推荐学习cpp以及那个平台上官方语言,这样可以用cpp开发,然后用官方语言做一个壳。

如果是PC上的游戏,还是推荐cpp。

另一个就是数学\\\/物理,当然这个要看你要做什么游戏。

基本的东西是几何相关的东西,基本上是个游戏都用得到。

如果有不确定性(绝大部分游戏应该都需要)在里面,基本的概率分布要深刻的理解。

如果要自己做物理效果(碰撞,弹性,形变等),除了需要搞定相关的物理(刚体物理,柔体物理(这个通常很麻烦),流体物理(这个也很麻烦)等),还需要搞定数值计算方法,自己做物理这个水很深,不建议自己做,用现有的物理引擎最好。

如果想要做到很好的3D画面,还需要学习计算机图形学,这里会有很多的光学,很多的立体几何,一坨线性代数的东西还有各种形式的积分。

而且实时图形系统的开发对编程能力要求也非常高,除了普通程序的要求以外,还要能掌握高性能的数值密集型的代码开发(这个对于物理相关的开发也一样)。

另外还需要掌握至少一个GPU加速的图形接口的使用(OpenGL,Direct3D等)以及对应的shader代码的编写。

同样,如果想做到很好的画面效果,建议用现有的渲染引擎,自己做水也太深。

总体上来说,2D游戏和3D游戏所需的技能还有很大差别,2D游戏在技术上的要求相对简单很多。

还有就是,独立游戏可能有服务器端得比较少。

如果真的需要,这方面的开发相对来说和通常的业务流软件的服务端比较相似,所以不是太复杂。

不过会有很多游戏逻辑需要在服务端处理,多客户端的信息实时同步可能会成为一个比较有难度的问题。

还有就是各种客户端请求的验证,反作弊用,这个一开始应该不会涉及到,不扯了。

总的来说,游戏开发作为程序开发最难的一种形式之一,技术方面需要非常多的积累,这个需要时间去积累。

可以先从那种非常小的小游戏(先是扫雷、贪食蛇这类休闲游戏,然后做塔防类游戏不错……)做起,练手用。

基本功扎实了以后可以考虑进入3D。

游戏美术方面呢,2D和3D也是很不一样的。

3D游戏的美术很复杂,各种模型网格的创建,各种贴图纹理的绘制。

如果有人物,还需要人物动画,这又是一大块。

美术我不专业,不多说了,希望哪位专业的来补充一下。

2D的相对好很多,只要能画好画,基本上就能做了。

游戏音乐方面,主要是作曲,用mid的话也不错,但现在好像这么做的很少了。

演奏要看作的曲子的复杂度了。

除了音乐还有音效,这个我不懂,不说了。

设计嘛,这个是制作游戏的核心。

从你的表述来看,应该是玩过不少游戏了,那应该多少能体会到各种游戏的设计模式。

把自己的想法,参考现有的一些模式,规划好,做出来原型。

设计这里有一个很重要的细节:开发工具要能尽可能提供高效的迭代方式,游戏的完成度是一点一点打磨出来的,而这个打磨过程的长短很大程度上取决于工具是否好用。

满意请采纳

交互设计心得整理

交互心得整理以来有对几年来交互设计的心得进行总结整理的想法。

回到中亲身体会到不少同行,主要是交互设计师和视觉设计师对于交互设计的困惑,以及其他行业对于交互设计的误解和滥用。

后来我在小范围内开设了一个关于交互设计的讲座;现在把它整理成文,希望与同行切磋,共同进步。

这篇文章是我几年来在美国从事交互设计工作的一个经验总结。

当时我们遵循以用户为中心(User-Centered-Design,简称UCD)的设计原则,每一个项目都是不折不扣的按所有UCD的步骤进行。

下面总结的交互设计的方法,是从UCD的过程中提炼出来,也就是说,同样适用于任何非UCD的设计过程。

交互设计的流程如果一提到交互设计,你就想到画线框图或原型图,那你只对了五分之一。

交互设计是一个过程,从开始到结束有一套系统的流程。

原型图只是其中的一个环节。

当接到一个设计项目,怎么开始

都应该做哪些工作

怎样尽可能的保证交付物满足既定的功能以及用户体验层面的易用性

第一步,是任务分析,列出界面所要完成的所有任务。

第二步按各任务确定页面流程,建立信息架构。

接下来是创建统一的页面布局包括分区等。

然后在页面布局的基础上进行原型设计,可以是低保真和高保真的原型图。

最后编写设计说明。

下面以设计一款动感相册界面为例,逐步讲解各个环节。

1.任务分析第一步任务分析。

这里要做的是对于将要设计的这个新界面的所有任务的分析,也就是用户在界面上能进行的所有操作。

这个分析在功能

怎样解读塔罗牌

1】魔术师——创造(对应星象:水星) 牌面解    ①牌面为罗马神话的墨,有著的笑容和炯炯有神的眼睛。

牌的桌面摆了宇宙四要素∶生命树(火)、剑(风)、五芒星(土)、圣杯(水)、 魔术师头顶上有个无限的符号,腰带为一头尾相接的蛇,是精神永恒的象徵。

魔术师右手拿著权杖指向天空,左手指著地面,代表权力的交流和精神的赠与。

魔术师脚底下为玫瑰和百合,表示人类的动机,反映神的意志,指挥天地。

玫瑰代表生,百合代表死亡。

魔术师为第一张牌,也暗示著你本身也是个魔术师,自己能操纵宇宙的力量。

  ②白色长袍代表纯洁的内心,深红色斗篷代表魔术师的活动意义深远。

  【2】女祭司——智慧(对应星象:处女座)     牌面解读:   一个聪明的人或者女人,可能作出一个好决定。

这个圣洁的女祭司,端正的坐著,手中还拿著一卷书,证明她充满智慧,放心交给她去决定好了。

【3】皇后——丰收(对应星象:金星)   牌面解读:   美丽的女皇坐在优雅舒适的椅子上,四周一片茂密森林,令人有种无忧无虑,游闲自在的感觉,椅子旁还放著一颗心,似乎是她有心赐给你这些丰沃的土地和果子,圆满的爱,应该好好的谢恩了。

【4】皇帝——支配(对应星象:狮子座)   牌面解读:   宝座上端坐着至高无上的皇帝,他头戴镶嵌着宝石的皇冠,手中掌握着象征权力和地位的权杖。

阅历丰富的他面色凝重,即使已经是一国之君,但仍然身着铠甲,时刻准备为国家去迎接挑战。

  他统治着整个国家,拥有不容怀疑的权威,他是人民的领袖,是男性权威的象征。

然而在他威严的外表后却有着一颗亲切的心,他充满热情,愿意与求教的人分享他的成功秘诀。

他的秘诀就是依靠头脑,以及过去努力奋斗时所积累的经验。

他的建议也多来自那些宝贵的经验,正如他正直的人格一样值得你信赖。

  然而能够支配国家的皇帝就快乐吗

解牌时一定不要忽略这点,因为大多数问卜者所希望的,都是得到心灵的愉悦,即使他们自己可能都没有意识到。

威严的表象背后有着怎样的内心世界,往往才是关键之处。

  作为一国之君,更是父亲的榜样,否则如何教化他的子民

【5】教皇——援助(对应星象:木星)   牌面解读:   他是宗教和精神上的权威。

它总会为我们找到心灵上的出口,他的慈悲与德行,必能指示我们不会误入歧途,踏上认清良心,觉今是而昨非的道路。

【6】恋人——结合(对应星象:双子座)   牌面解读:   这是塔罗牌中解释爱情最好的一张牌,他代表这人生的青春期。

牌面中一对男女在天使的召唤下走到一起,成为恋人。

尽管阳光普照,充满了幸福的感受,但恋人的后面却有着很多考验在等着他们——希望之树和毒蛇盘踞的禁果之树。

  恋爱中的情侣可以彼此协助、支持,浪漫成了这段美好时光的主题。

但恋爱中的人必须面对感情上的抉择,就是在众多的异性中选择其中的一个作为伴侣,所以说爱情是既美丽又残酷的。

在解牌时一定要注意“结合”背后的“选择”,也就是要有所取舍。

【7】战车——胜利(对应星象:射手)   牌面解读:   这张牌描绘的是克服障碍、获得胜利的王者战车。

牌面上的胜利者以一种强有力的姿态站在战车上,展现他在人世间的丰功伟业。

拉动战车的一黑一白两只狮子,时刻准备继续前进。

  这张牌是强者的象征,它与力量息息相关,意味着由坚持而获得成功。

“永不放弃”是这张牌的主题,无论前途有多少艰难险阻,你都要继续走下去,同时也会由此掌控自己和周遭事物的命运。

战车上的胜利者象征人类的灵魂,控制着两只狮子象征人类意志与本能,在时间中穿行。

【8】力量——意志(对应星象:白羊座   牌面解读:   这张牌中胜利女神弯着腰正在抚摸一头凶猛的狮子,并用她的温柔与爱来安抚着怀中代表恐惧的狮子,它是爱与坚强意志的象征。

正是因为有了爱与意志,人类才能克服困难,在历史的长河中不断前进。

狮子代表人类的本能,而美女则象征爱情和服从,二者必须保持和谐,互相支持才能成为征服世界的力量。

此外它还意味着你有能力解决现在所面临的困难局面,并对自己内在的力量充满信心。

  解牌时要注意“刚柔并济”,人类本能是恐惧的,需要有理智来控制和安慰;而又不能失去本能的动力,理智还要给予鼓励。

由此可以看出“平衡”在塔罗牌的解释中是最重要的。

【9】隐者——探索(对应星象:天王星   牌面解读:   隐士身着长袍,提着一盏灯、拄着拐杖,在黑暗中孤独地摸索前进。

这张牌代表独处,隐士试图放弃外在的诱惑,而达到内心的平静,进而在寂静的环境里通过冥想得到真理。

寂静中只能听到自己内心发出的声音,所以才能够更好地理解自己的想法,寻找到一个真正属于自我的最终目标。

  解牌时应当注意隐士的特点,仔细查看面前的牌型,解释前再检查一遍,是否有某个细节被无意间遗漏了。

【10】命运之轮——轮回(对应星象:月亮   牌面解读:   牌面上命运之轮上面是象征天使的斯芬克斯,下面是魔鬼,四周围绕着象征命运中的各种境遇的女神、天鹅、毒蛇等。

你的命运有如那命运之轮在塔罗牌中不停的转动,时而好时而坏,这是一种公平的循环。

命运之轮也许会在你喜欢的角度停下来,这使你有不可思议的好运气;而它也会在你不喜欢的角度停下,你就会倒霉。

不管你愿意与否,命运就是如此无情,况且生命本身就是处在不断的变化之中,这就使你的生命中充满了挑战和刺激。

  解牌时,要抓住“命运”就要先理解什么是“变化”,相信没有绝对的事情就可以了。

不过,随着你学习的深入,就会发现“命运之轮”蕴藏的很多奥秘。

【11】正义——均衡(对应星象:天秤座)   牌面解读:   牌面描绘着冷酷的正义女神端坐在石椅上,右手拿着一柄正义之剑,左手拿着一架辨识善恶天平。

凭借这两样圣器正义女神能轻易地了解事情的来龙去脉与未来的发展,让她轻松面对眼前的一切。

同时也让世人知道因果循环的道理,警告人们要有宽容的心胸,遵守道德,坚持正义。

  这张牌的解释重点在“道德”与“平衡”,只要拥有这两点就抓住了事情的关键。

【12】倒吊者——牺牲(对应星象:双鱼座)   牌面解读:   这张牌象征自我牺牲,牌面描绘的是一个双手反绑,被倒吊起来的勇士,他头上已经出现了隐约的天使光环。

尽管旁人认为这无比痛苦,他却一脸的安详,因为他知道自己是为别人而牺牲,即使他的肉体毁灭了,但他的精神将永存。

  这张牌告诉我们,再糟糕的境遇也不过是对我们的一种磨练,厄运总会过去。

正如传说中的凤凰涅磐,又如北欧神话中的奥丁献身于绞架才学会魔法、文字、咒语以及诗歌。

忍耐眼前的厄运,接受命运的安排,好好反省过去的得失,为将来的再度崛起储备力量,才是最重要的。

【13】死神——结束(对应星象:冥王星)   牌面解读:   这是大阿卡纳中最容易被误解的牌。

数字十三一向被视为与死亡有关——正如塔罗牌的情形一样。

死神骑在白马上穿着铠甲,显示着他不可抵挡的力量。

有人已经倒下了,有人接受这残酷的现实,有人试图回避,也有人在做着无谓的反抗。

  根据古历法第十三个月份是死亡及重生的月份,所以你不必去从牌面理解,而是要从积极的意味上去解释。

接受眼前的事实,放弃一些到手的利益,你还可以得到更优厚的回报,正所谓“置之死地而后生”,经过磨难成功将更伟大。

 【14】节制——净化(对应星象:山羊座)   牌面解读:   牌面描述的是天使双手拿着两只圣杯,它们分别代表“物质”和“精神”,她在不停地用圣杯相互倒水,试图使两只圣杯的水保持平衡。

它告诫我们当面对各种各样的诱惑时,控制好自己的欲望是最重要的。

它不象其它牌一样有着快乐和成功,让我们感到种平淡的美,毕竟平淡的生活才是真正的幸福。

  它还代表人的能力是由掌握的知识与对知识的理解共同组成的,做任何事情都要有目的,通过这些事情让我们成熟,事业得到发展。

【15】恶魔——诱惑(对应星象:土星)   牌面解读:   牌面中,恶魔看着被铁链束缚的奴隶,发出得意的狞笑。

尽管奴隶们被铁链捆着,但只要他们互相帮助就可以摆脱恶魔,但他们已经被恶魔的诱惑蒙住了双眼,心甘情愿被其驱使,仔细看他们已经长出了和恶魔一样的犄角和尾巴。

  狰狞可怕的恶魔却有着如此动听的声音,他用金钱和所谓的安全引诱人们成为他的奴隶。

人们在他的控制下失去了互相沟通的能力,占据心灵的完全是赤裸裸的原始欲望。

为了追求金钱,否认生命中其它任何目标,人都变得自私和贪婪,可当生命结束时,这些物质就不再具有任何意义了。

  恶魔代表一种错误的观念——拥有物质财富就拥有了一切。

外在的干扰让人的冲动支配着理智,自我的精神上的要求不断消失,开始不愿意为自己的行为负责,因为他们可以把一切过错都推给恶魔。

这也可以看作是事业的成功,因为你的最终目标就是金钱。

【16】高塔——毁灭(对应星象:火星)   牌面解读:   这张牌是惟一一张没有好的意味的大阿卡纳,牌面描绘的是一座高耸入云的塔被闪电击毁了,两个人从坍塌中的高塔上跌落到地面上。

突然而又不可预料的强烈变化让人无法接受,再高傲的人类也无法与自然的强大相提并论,挑战自然只会引来神的怒火。

  尽管这巨大的变化无法让你适应,但这却是在教导你成长,尝试着接受它,它会让你在接下来的时间里走得更轻松。

接受对手强大的事实确实有些困难,但务实的面对它,用理性的方式解决它也是个巨大的进步。

【17】星星——希望(对应星象:水瓶座)   牌面解读:   这是一张充满希望的牌。

在希望之星——天狼星的照耀下,希望女神把圣水瓶中的希望圣水倒入象征潜意识的水池中。

她知道人们是如此地需要希望,所以当一瓶圣水倒完时,她又在倒另一瓶。

只要有希望人们才能有足够的动力去完成许多事,所以说希望就是人类的活力之源。

  让我们奉献出所有的爱,尽管是在黑夜但漫天的星星给我们指引方向,在星光的指引下走向光明的未来。

星星的含义中还有一点是很容易被忽略的,这就是“怀孕”的意思。

【18】月亮——不安(对应星象:巨蟹座)   牌面解读:   这是张代表迷惑和不安的牌。

在月光下龙虾从水中爬出,向月亮女神走去,它要选择远方的两座高塔中正确的一座,因为那座高塔是觐见月亮女神唯一途径。

岸上的狼和猎狗因为同样被月亮女神吸引着,暂时没有发觉近在咫尺的龙虾。

狗代表着小龙虾对旧世界的依赖,而狼代表着小龙虾的恐惧。

  月亮是与精神世界的桥梁,月赢月亏象征着转变,当满月出现时,人们知道它马上就要亏损了,心中的不安油然而生。

月亮越大就意味着离变小越近,在幸福时担心不幸的到来,使人们有不能有任何的懈怠感。

  月亮也是女性和情感的象征,在事业上则指具有艺术性或创造性的事业,它也暗示着欺骗。

解这张牌的关键,就在于“迷惑”。

【20】审判——复活(对应星象:天蝎座)   牌面解读:   牌面上描绘的是天使吹起号角,让听到这音乐的死者得到救赎。

天使的号角可以唤醒所有人的情感,即使是忏悔过的罪人也有到达天堂的希望。

天使的号音象征着旧观念已经死亡,人们正在音乐的召唤下拥抱新世界。

解牌时要注意决断和复原。

  你也在总结整理过去的经验,丢弃错误留下宝贵的知识。

在新世界的开始,你将发现你自己并不是孤独的,有很多朋友和你一起学习,尽管你们素昧平生,但圣堂天使让你们彼此互助,这使你们的生活更加愉快。

【21】 世界——达成(对应星象:金牛座)   牌面解读:   这是一张象征永久和持续成功的牌。

你已经到达了成功之门的前方,成功女神让你耐心等待,她会让你进入成功之门的,只不过是时间问题罢了。

成功之门周围是你经历过的幸福与哀伤,成功与失败,在到达乐土之前回忆一下过去的时光是很有必要的。

这张牌暗示只要你拥有一颗感恩的心,就必能在你为自己打造的美丽世界中,寻找到幸福与快乐。

  牌的本意是“达成”,它告诉我们所有的事情都可以达成,所有的梦想都可以成为现实,没有不可能得到的事物。

只要有耕耘,就能有相应的收获。

柏拉图<<法律篇>>书评!

作为知识与德性的法律―――评柏拉图《法律篇》 一 《法律篇》1是古希腊哲学家柏拉图生平所著《理想国》、《政治家篇》和《法律篇》三部曲中最后一部力作,可以说它集中反映了晚年柏拉图对其生平思想轨迹的反思成果。

无疑,通过研读《法律篇》,挖掘其中所涵摄隐寓的各种法律思想,对于理解古希腊法哲学的基础范畴与基本走向,对于正确评价柏拉图在西方法哲学史中的地位,具有非常重要的意义。

在对《法律篇》实质评价之前,有必要对该书的性质进行一番探讨。

可以说,虽然《法律篇》是西方第一部以法律为名的著作,但在很大程度上,我们很难将《法律篇》当做一部纯粹的法学著作来解读,主要原因在于,在柏拉图写作视野中,《法律篇》应当和《理想国》、《政治家篇》一样,是其关于理想国家政体模式探讨轨迹的最后一环。

如果我们把《法律篇》放在古希腊政治哲学和伦理学的学术脉络之中去理解其中的许多论断,意义可能更加丰富,也似乎符合作为思想家而不是政治家的柏拉图的写作初衷。

但是,《法律篇》对于什么是正义和关于立法、审判和惩罚等方面的细致探讨,无疑具有深刻的法学意味,甚至可能在政治哲学的探讨之中无意识地促进了古希腊法哲学的暗流涌动。

我们知道,古代希腊的哲学没有专门的法哲学的分支(这是我们现在的分类),因此,在古希腊,有意识的法哲学探讨是不存在的。

而大量的以法为关键词的论题都是以正义的形式被探讨着,比如什么是合法的,在古希腊哲学家的论著之中,可能被转化成了“什么是正义”的命题的探讨。

这大概是理解《法律篇》的一个基本立场,否则,你会觉得你的阅读陷入了一个极其丰富庞杂、范畴极广的空间里不能自拔。

因此,如果了解了古希腊的道德、政治、教育、法律与哲学的同构关系,将有助于我们在更广阔的视野之下评价《法律篇》的本身的价值及其在古希腊思想史中的意义。

下面主要结合《法律篇》的一些主要论述来展开评论。

《法律篇》主要围绕着三个人在公元前4世纪中叶一个夏日的讨论展开的。

一共分为十二卷,对话内容极广,涉及国家生活的各个方面,无微不至。

如果稍微留心的话,我们不难发现,在《法律篇》十二卷之间存在着一个论题上的递进关系。

根据我的阅读,这是一个从理论到实践,从思想到制度的过程。

非常精致或者巧妙的是,柏拉图的这个写作过程恰恰体现了他在书中对于一个良好立法的论述,就是每一法律的开头都应当要有一个序言,阐述立法的价值和宗旨(页132、页187、页281等),做到以理服人,从而使法律的遵守能够避免强制而得到自愿遵守。

无疑,柏拉图的这个写作顺序客观上包有了他对于良好立法的见解,这是否巧合,我们不得而知。

在《法律篇》的开头部分,辩论者们主要是围绕着关于立法的目的来展开辩论的。

在论辩对手看来,一个国家立法的目的皆是围绕备战而来,法律和政治服务的目的在于战争的胜利,甚至各种美德的排列顺序也根据战争需要来进行。

在某种程度上,胜利即是正义。

这种思想与斯巴达实际的政治、军事现状是相符合的。

在他们看来,没有战争的胜利就没有财产和国家生存(页3)。

对于这种观点,柏拉图通过一个精彩的法官的比喻对此进行了批驳(页5),他认为一个好的立法者应当保持国内的和平与善,战争不过是实现和平的工具,最大的善才是立法者立法的目的(页6)。

同时,柏拉图在该卷其后的论述甚至其后的几卷中多次强调了一个鲜明的观点,即立法者立法的时国外学者著作候,除了受最高的美德指导以外,不应考虑其他意见。

在许多古希腊哲学家的眼中,美德之间按照不同的标准也存在明显的秩序划分,这在亚里士多德的《尼各马可伦理学》中有着典型的论述。

这种对于美德秩序的划分,导致许多城邦的立法往往偏居一隅,着重强调某种美德,导致许多国家立法目的的差异和对立。

对于这个问题,柏拉图在《法律篇》中特别强调:立法者考虑的美德应当是美德的整体,而不是部分。

如果转化成现代话语,就是立法应当关涉到人民生活的方方面面,关系到人民综合美德的培养。

他非常详尽地列举了一个立法者应当关心的各种情形,面面俱到,无微不至,比如立法对于人民各个年龄段的具体情况都要具体考虑,要监督公民花钱的方法等等。

(页11)在柏拉图看来,立法是一个极度需要理性的事业,一部法典的胜利应当是理性的胜利。

(页15)需要指出的是,在理性问题上,柏拉图继承了乃师苏格拉底的观点,认为知识即美德以及专家治国,所以,在某种程度上,理性、神性和德性三者之间是辩证统一相互印证的关系。

柏拉图通过一个懂得航海知识但会晕船的人不适合做船长,以及一个有军事才能但临危而惧的人不适合指挥的例子,(页21)证明了仅仅具有专业知识而不具有德性和实践能力的人不适合做立法者。

柏拉图的这个观点,实际上是对苏格拉底的一个潜在批判或者纠正,因为苏格拉底的一生就是在为获得纯粹的知识而奋斗,不断与人辩论,念兹在兹,最后获罪。

柏拉图通过乃师的教训认识到了,认识真理和德性本身并不重要,重要的是实践德性。

在第四卷,柏拉图谈到对立法的目的时就指出:“我们始终在寻找哪些立法有助于美德,哪些立法无助于美德”(页262),“我希望公民们非常乐意遵循美德的指引,显然这是立法者试图通过立法来取得的效果。

”(页120) 二 如果我们理解了国家和法律的目的在于追寻美德,培育有德性的公民,那么我们就可以理解教育问题在《法律篇》中的重要性。

在《法律篇》的前面几卷之中,甚至间接地在所有章节里,柏拉图都非常详细地关注了教育的问题。

从这些关于教育的论述,我们可以清晰地看到《理想国》的熟悉的影子,因为理想的国家、理想的立法和理想的公民的产生与良好的教育密不可分。

但是,在《法律篇》之中,柏拉图关于教育的各种安排同样体现了现代政治哲学家深切指责的所谓极权主义路线。

在柏拉图看来,教育就是公民从小接受的美德教育,这是一种与其他身体训练和技艺训练相区别的训练,目的在于培养在品德和气质上完善的公民。

(页27)后来的亚里士多德就此提出过一个专门的概念,即训练美德。

按照柏拉图的观点,教育的主要手段就是“在游泳中学会游泳”,通过反复严格地训练让孩子体会快乐痛苦等各种情感,潜移默化,形成所谓正确的判断,最后达到“痛恨应当痛恨的东西,热爱应当热爱的东西”的道德直觉。

(页38)《法律篇》中关于教育的问题主要是通过文艺教育的争论来展开的。

柏拉图认为,在文艺教育中,需要有好的音乐和好的创作,但什么是好的必须由教育者来判断而不是由受教育者来判断,而不能屈从于大多数观众的举手表决。

(页47)无疑这是一种与柏拉图在政治观点上相似的反民主的思想。

而作为立法者,就应当通过立法来阐明各种正确的原则,说服创作者们创作体现各种美德的作品,来揭示创作原型的道德价值,(页61)“弘扬主旋律”,培养孩子们正确的审美观、价值观,形成“旋律”和“和声”,使整个国家就像一个“合唱队”。

(页54)总之,在文艺教育方面柏拉图推行的是一种“音乐贤人政体”,主张由有鉴赏力的人来指定优良与低劣的艺术标准,绝不赞同体现自由主义色彩由观众决定的艺术标准,对此,柏拉图将之贬为“邪恶的剧场政府”。

如果结合《理想国》的相关论述,我们就可以看到,柏拉图的教育思想表面上以真理为名,实质上是一个无微不至、无孔不入的规训过程,他假定了一些人在知识上和道德上高人一等,具有洞察绝对的真理和绝对的善的能力,从而天然地获得了教育者的地位和权力,对普通百姓实行强制教育,在观念和行动上使国家整齐划一,步调一致,缺乏自我,使整个国家像一个大学校或者军队,无疑,这是一些自由主义者批评柏拉图的重要原因。

而《法律篇》在关于教育上的论述与《理想国》的论调是一致的。

不同的是,在《法律篇》里面谈教育问题主要是要突出立法的宗旨和目的,即以立法来实国外学者著作现教育的目的。

《理想国》里的教育强调的是教育者本身来实施教育,两者的区别无疑体现了法治与人治的区别。

三 《法律篇》的第三卷和第四卷在逻辑上可以说是继承关系。

主要探讨了政治制度的最初来源和政治体制的形态问题。

在我阅读过程中,关注到了柏拉图论证过程中的一个非常醒目的理论预设,(页70)即他不是从发生学的角度来探讨政治制度的起源的,而是假设了一场洪水过后,政治制度在空白之处如何产生与演变的,无疑这是一种非常聪明的分析方法,虽然从方法论上,它可能是反历史的,至少是非历史的,但是它客观上为柏拉图的论证提供了一个坚实的逻辑起点,将自己的观察置于了一个理想的可以控制的背景之下,从而回避了对于历史与经验的琐碎与艰巨的考察,这种方法上的处理与西方政治哲学史中各种社会契约论中自然状态的处理是否具有源流关系,我们不得而知。

客观上,柏拉图假定在洪水之中幸免于难的人的各种状态,由此来推理政治制度是如何缓慢而合理的产生的。

柏拉图认为??“这个过程也许不是一蹴而就的,而是渐进的,经过了一个相当长的时期”。

(页72)这句话非常有趣,因为他体现了柏拉图在世界观和方法论上的一种矛盾,就是方法论上的非历史主义与世界观上的历史主义。

这使我想到哲学家卡尔波谱等人在柏拉图是否是历史主义者问题上的论辩,其实如果我们通过不同的角度来分析这个论题,得出的结论也许会不尽相同的。

当然,问题也许还不是那么简单。

但柏拉图客观上是基于这个起点来论证的:由于假定的原始人比较单纯善良,因此他们主要靠习惯和传统来保持秩序,立法的需要以及观念尚未产生。

(页75)在随后的发展中,我们可以看到一个在亚里士多德《政治学》里面详细阐述的熟悉的历史情景,即,假定的未来社会经历了一个从家庭到家庭联合到部落村落的组织演化过程(这显然是古希腊自然主义世界观的显著特征),其组织形式也走向了寡头制和君主制以及各种变体。

由于社会各种部落的联合,各种宗教和法律也开始混杂,导致有意识的立法成为可能。

在这个基础之上,柏拉图对于作为立法者的政治家提出了一些建议,比如前面所讲的要注意到把美德看做一个整体,并且特别要牢记立法者的第一种美德:判断力和智慧以及控制欲望的精神力量。

柏拉图认为,一个第一流的立法者的工作就是要有比例意识,他由此进一步提出了一个超越了《理想国》观点,即权力的限制也应当保持在合理的比例之上(页92),这使某种程度上的权力分立思想也隐约可见。

因此,在《法律篇》一书中,柏拉图认为政权形式应当是一种正确要素的混合物以保持国家的稳定。

他以波斯和斯巴达(阿提卡)为例说明了单一的君主制和单一的民主制的各自缺点,从而提倡了一种中等程度的独裁和中等程度的自由,清晰地提出了一种建立混合政体的设想。

在《法律篇》关于理想国家的各种条件的设想之中,柏拉图体现了他在《理想国》中丰富的想像力,这些设计是否有现实模型,值得我们进一步参考。

比如理想的国家应当离海80斯坦特,产生的谷物数量不要太大等等。

但是,在这么一个国家中,重要的问题是由谁来管理才是最为妥当的

柏拉图在《法律篇》中给了我们一个非常明确的答案,就是这个国家要在一个独裁者的绝对控制下,这个独裁者要年轻、记忆力强,学得快、勇敢、具有天生的崇高品格,并且自制力强。

(页116)重要的是,还要有运气,就是他必须是一个与出色的立法者同时代的人,并且有幸与这个立法者有接触。

后面这个条件使我们可以松一口气,因为毕竟柏拉图已经考虑到他在《理想国》中经常受人质疑的“哲学王”如何找到的问题。

在《法律篇》中通过一种较为可行的条件设定即运气解决了这个问题,从而实现在权力与知识的现实结合。

客观上来讲,柏拉图在假设上的进一步完善似乎使自己的“哲学王”具有了实践上的可行性,但是我们认为这种可行性依旧只是理论上的,十分勉强。

尽管如此,沿着这个思路,柏拉图继续设想了自己心目中的优良政体等级。

(页116)他认为理想的政体是独裁制,次好的政体是立宪君主制,第三等好的政体是某种民主制,第四种是寡头政制。

柏拉图强调道:不管政府的形式怎样,道理都是一样的:哪里掌握最高权力的一个人把明智的判断和自制力结合起来,哪里你就可以看到与法律相配合的最好的政治制国外学者著作度。

(页117)这个论断具有特别的涵义,因为从这个论断之中,我们不难发现,柏拉图特别强调了统治者与法律的配合,突出了政治统治中的法治观念。

这种思想在随后的论述中也体现出来了,如柏拉图认为,“为众神服务的最高职位必须授予最善于服从已制定的法律并在城邦中取得此种成就的人”。

(页122)但是,我们同时也应当清楚地看到,无论是在《理想国》还是在《法律篇》之中,柏拉图的观念之中都呈现出一种根深蒂固的等级意识,自觉不自觉地在人与人之间划分不同的等级(金银铜铁),不同的等级之间在知识和德性上呈现差异,在政治上存在统治关系。

(页122)这种等级关系在柏拉图的心目中应当是先在的、宿命的。

而所谓正义就是各个等级“各尽其职,各守其位”,这个统治秩序的顶点就是知识与德性并重的“哲学王”。

柏拉图正义观是和他的平等观紧密结合的,正如他曾经在《高尔吉利亚篇》里面提到的,“正义即平等”,但是我们应当注意的是,在《法律篇》中柏拉图对平等做了一个细致的划分,区分了数字的平等和自然的平等。

所谓数字上的平等,按照柏拉图的说法,就是简单地用抽签来分配的平等,是撞运气的平等或者绝对的平等。

对于数字的平等,柏拉图是不赞成的,认为“对一切人的不加区别的平等就等于不平等”。

(页168)而自然的平等也就是柏拉图所谓的政治正义,类似亚里士多德的分配正义,自然的平等主张对不同的人给予不同的对待,它考虑的标准是“每个人的真正品质”的高低和受教育的多少,如果结合柏拉图对人的等级的划分,那么自然的平等就是“给大人物多些,给小人物少些。

”(页169)而这才是“最真正的平等,并且是最好的平等”。

从中我们不难看到,在柏拉图等级森严的理想国之中,正义原来是一种维护等级的正义,他轻视数字的平等的后面,涌动的是一种反民主的情绪,其精英意识跃然纸上。

四 就《法律篇》与《理想国》的题旨而言,最引人注目的是,在《法律篇》中,晚年柏拉图对自己的理想国进行了一番重大的修正与改进,将法治引入了统治,从而至少在统治外观上将理想国转化成了法治国。

在柏拉图与对手论辩的过程中,他鲜明地将统治者称为“法律的仆人”,认为法律应当是至高无上的,并指出,“在法律服从于其他某种权威,而他自己一无所有的地方,我看,这个国家的崩溃已为时不远了,但如果法律是政府的主人,并且政府是它的奴仆,那么形势就充满了希望”。

(页123)无疑,《法律篇》的基本题旨在此一目了然了。

但有一点值得指出,在《法律篇》的许多细微之处,我们可以清晰地看到柏拉图的法律观充满着神学的色彩。

正如前述,在柏拉图的视野中,甚至在当时的许多哲学家视野之中,理性、德性与神性是同构的,互相印证的,因此,作为促进国家与人民美德的法律,必然要体现出这种同构关系,这是毋庸置疑的。

而且这种神学色彩的法律观也应当属于古希腊自然法思想的范畴,在亚里士多德的经验主义法哲学观念产生之前,在古希腊人心目中,“全面控制人类事务的是神”,(页114)法律是神的意志的体现,它应当是神圣的、普遍的、不变的。

这导致在古希腊,有意识的立法和修改法律比较罕见或者是以后的事。

据说在意大利半岛的洛克里斯人就有这么一种做法,任何提出修改法律的人必须在提议之时把绳子套上脖子,一旦提议被否决,绳子就要收紧。

这反映了古希腊人对于修改法律的态度。

但是,随着各种条件的变迁,在柏拉图的理想国家里,法律的修改逐渐变得可能,但是修改的条件和程序极其严格。

柏拉图指出,如果环境的压力已经变得不可抵抗,法律维护者应当与全体官员、全市市民和全部神进行协商,如果结论一致同意,才修改法律,而在其他任何情况下绝不可以。

(页186)但即使是这艰难的修改,其合法性基础依旧是神学的,柏拉图对此一语道破:“既然人们对神的一般社会观念已经发生了变化,那么法律也不得不作出相应的变革”。

(页399)既然柏拉图在《法律篇》中强调了法律、德性、神性的协调与同构关系。

那么,以法律的形式来实现这些神圣的目的,促进人民的福祉,显得特别重要。

对此柏拉图作了阐述,认为,“我们的立法的全部要害,是让公民们在尽可能相互友好的环境中过最幸福的生活”。

(页154)因此,国家的立法应当对于人民生活的各个方面都作出详尽的制度安排,以实现这些目的。

自然而然,国外学者著作在阅读《法律篇》的过程中,我们几乎要面对与《理想国》同样琐碎而又细致入微的种种制度安排,这些制度安排在今天的人看来简直向集中营一样令人窒息。

在许多方面,柏拉图笔下的统治者像牧羊人与园丁一样,对于人民承担着全面教育和规训的任务,这种福柯意义上的知识/权力通过各种制度安排渗透到社会和身体的各个部分,以微观的形式规训着人民。

与《理想国》不同,《法律篇》的意义在于规训和教育是通过法律来实现的,是以法治国。

但从这种具有高度弥漫性、渗透性、无微不至的国家治理里面,我们不难产生出一些关于法西斯法律的联想,两者可能的区别在于,柏拉图的法律是反映和遵从神性的法律,但什么是反映神性的法律,柏拉图认为只有专家才有资格判别,而专家从哪里来、怎么去认定,这又在某种程度上取消了关于法律品格的防线。

这显示了柏拉图《法律篇》中的法治思想的粗糙和内在矛盾。

总之,为了“过一种有德性的生活”,柏拉图设想了许多制度安排,是非常细致而有趣的。

比如他在婚姻关系上,法律规定一个男子在30岁到35岁之间必须结婚(女从16岁到20岁),否则要处以罚金和不名誉罪,罚金按照等级不同而有区别;(页188)婚姻的目的应当有利于国家,而不是寻找个人认为最有魅力的;并且有效的订婚权首先属于新娘的父亲,其次祖父,再次同父诸兄弟等等。

婚宴上,男女双方邀请的男女朋友不得超过5位。

另外还从优生的角度出发,法律禁止婚礼酒宴上醉酒。

而婚姻的目的在于把能生的最好的孩子献给国家,如果夫妻在十年内没有生育,他们必须离婚。

(页201)另外,国家还规定了严格的财产申报制度,每个人都必须申报自己的财产总额,如果有人的财产超过登记数目,超过部分由国家没收。

(页166)为了维护法律的执行,国家还通过某种形式的民主方式选举出由37人组成的法律维护团体,他们的年龄必须在50岁与70岁之间。

印象特别深刻的是,柏拉图还对出国问题作了非常详细的论述,(页402)比如不满40岁的不管任何场合,都不允许出国;如果有必要出国从事调查活动的,必须年过五旬,而且二十年内必须回国,回国后必须向联合委员会汇报心得体会。

如果从外国进入该国,也必须过50岁,并且目的均在于欣赏本国超过其他国家的优秀方面或将本国出色方面介绍给他国,等等。

还有许多类似的琐碎的规定,这些规定展示柏拉图的丰富的想像力,具有某种社会学色彩,属于一种系统的社会工程。

但在现代人看来,这种乌托邦的设计无疑是可笑的,按照哈耶克的说法,这是一种“致命的自负”。

另外,重要的是,我们可以在《法律篇》对社会生活的各种规制中发现,虽然在统治策略上从单纯的人治转向了法治,但是柏拉图对于法律的目的以及如何实施法律等方面的立场,内在继承了《理想国》的思想与方法。

一般认为,柏拉图的《法律篇》与《理想国》比较而言,在表达和行文上比较晦涩和枯燥。

但是,由于译者的努力,我们依旧能够较为流畅地阅读到《法律篇》的精彩论述,并清晰把握其中的思想脉络。

阅读就是阐释,《法律篇》论域极为广泛,蕴涵的阐释空间也极为丰富。

在某种程度上,我们可以将《法律篇》作为一部文艺作品来加以细细揣摩,认真推敲,从中也许可以发掘出许多更为深刻的思想资源,这无疑有利于我们更全面准确地理解柏拉图的贡献

如何提升服务感知和服务体验

一、客户体验是衡量服务质量的终极标准进入移动互联网时代,客户主体结构、消费习惯等发生了本质性的变化。

客户屌丝化、终端智能化、上网碎片化等趋势明显。

移动互联网正在推动一场以客户感知和需求为核心的“客户体验革命”,一切不重视客户体验的企业或产品都将黯然失色

在此形势下,打造卓越客户体验已成为移动互联网时代俘获客户、提升服务差异化竞争力的不二法门,对客户体验的重视达到了空前的高度。

站在电信运营商的角度来说,从语音经营时代进入流量经营时代,客户服务质量的管控模式也需要与时俱进。

传统的满意度模型是服务管控的常用手段,今天来看它仅仅能发挥KPI考核的作用,对于提升客户体验基本上没有实质性的指导作用。

因为客户满意度模型本身是站在短板改进的思路来找路径提升服务质量的,但是,事实上客户不满意的地方不一定是客户感受最强烈的地方,即使电信运营商在客户最不满意的地方下大力气来改进了,结果可能对提升客户感知毫无用处,只是瞎子点灯白费蜡而已。

根据峰-终定律,我们应集中资源在最能影响客户体验的峰点或终点做好服务,这样才是提升客户感知的途径。

而客户满意度作为衡量服务质量的标准,自有其固有的优势:比如测量的连续性、与竞争对手的可比性、作为KPI考核的易用性等,但其本身的缺陷也是显而易见的,比如测量的时效性、对服务提升的操作指导性等方面均存在不足。

服务的终极目标是适应客户的人性、满足客户的需求,在移动互联网时代,服务质量的衡量标准不能再局限在客户满意度了,只有客户体验才最能为客户心声做“代言”,才最能反映客户真实的需求,应当将客户体验作为衡量服务的终极标准。

二、服务设计是提升客户体验的必由之路笔者长期观察发现,国内运营商在客户服务管理上普遍缺乏服务设计意识。

特别在服务交付界面的缺乏系统性的服务体验设计,鲜见能给客户留下深刻印象的服务亮点。

虽然运营商近几年都在提“客户导向”、“以客户为中心”、“客户为根、服务为本”等口号,但是在服务管理方面的“去电信化”仍然有很多不足,例如重“流程管理”,轻“客户感知”,没有完全站在客户角度来交付服务,服务流程的制定只考虑内部管理的方便,而不注重如何去迎合客户的需求、符合客户的消费习惯。

在某次客户调查中,询问客户对个服务渠道的评价,结果客户普遍对10086、客户经理和营业厅三大服务界面的满意度较高,都答曰:“都还好”、“差不多“、“马马虎虎”,但是大部分客户说不出让他们印象深刻的服务亮点,这就说明移动公司的服务是没有识别度的,只能做到满足基本需求,还没有给客户一个良好的体验。

但是,我们的服务管理者应当充分认识到:客户体验为王的时代,差不多其实就是差很多

那么,到底该如何提升客户体验呢

如前所言,我们要做的就是倾听客户的心声、洞察客户的人性,从客户感知的角度出发,重构客户服务模型、设计我们的服务模式。

服务设计是提升客户体验的必由之路。

三、应用峰终定律和服务蓝图技术进行服务设计在说提升客户体验的方法和路径之前,先有必要澄清一下什么是客户体验。

所谓“客户体验”从字面上来解析即“以身体之、以心验之”,指个人印象深刻或者对个人产生深刻影响的互动事件或过程,是通过亲身的实践来认识周围事物,亲身的经历或亲身的感受,侧重于在实践中从感性方面认识事物。

ISO定义对客户体验的补充说明有着如下解释:客户体验,即客户在使用一个产品或系统之前、使用期间和使用之后的全部感受,包括情感、信仰、喜好、认知印象、生理和心理反应、行为和成就等各个方面。

由此可见,客户体验是一种纯主观的在客户使用产品过程中建立起来的感受,与客户感知还是有一定差异的,客户感知是客户从关注产品、使用产品、接受产品售后服务等全过程中的心理感受,更侧重于事后的评价。

客户体验有三个特点:其一,客户体验是主观的,客户体验是主观的,且其注重实际应用;其二,客户体验是可识别的,对于一个界定明确的客户群体来讲,其体验的共性能够经由良好设计实验来认识到;其三,客户体验是情境化的,客户体验离不开具体的场景,客户自身和使用环境等因素都对其体验产生影响。

谈到服务设计说到底是服务提供者要发自内心的让接受服务的人能感受到自己的独具匠心、一番心思与情意的。

这一番心思就包含着设计、规划的意思在里面。

所谓“服务设计”就是体系化的思考服务的过程,有效的计划和组织一项服务中所涉及的人、基础设施以及物料等相关因素,从而提高客户体验和服务质量的设计活动。

服务设计不仅关注产品本身,也需要将关注点扩展到与客户发生交互的各个触点(touch-point)上,用户体验的范畴已经从“产品”扩展到“以产品为中心的整个服务过程”,通过形式各样的触点与客户产生联系,从而形成服务体验。

那么,如何开展服务设计呢

常见的方法有:服务路径走察、日志法、背景访谈,头脑风暴,形象辅助,联合创造,原型走察,人物角色分析,服务设计蓝图,角色扮演,故事版等。

在这里,笔者重点推荐峰-终定律和服务蓝图技术。

峰-终定律是用来发现服务场景下的峰-终时刻的理论依据,而服务蓝图技术则是将服务设计点融合、体现出来的一种可视化的服务显性化工具。

先说峰-终定律。

2002年诺贝尔经济学奖得主丹尼尔.卡恩曼(Danny Kahneman)将源于心理学的综合洞察力应用于经济学的研究,他提出了著名的“ Peak-End Rule ”(峰.终规则),指出影响人们体验的是所谓的“峰”和“终”两个关键时刻的经验在峰”(peak)和“终”(end)时的体验,主宰了我们对一段体验的好或者坏的感受,而跟好坏感受的总的比重以及体验长短无关。

峰-终定律指出了如何判断客户体验的核心环节及各环节的核心需求,要注重客户每个关键时刻的”峰”和”终”体验。

服务蓝图是一种准确地描述服务体系的工具,它借助于流程图,通过持续地描述服务提供过程,服务接触、员工和客户的角色以及服务的有形证据来直观地展示服务。

经过服务蓝图的描述,服务不仅被合理地分解成:服务提供过程的步骤、任务、完成服务的方法,识别客户同企业及服务人员的接触点,从而可以从这些接触点出发来改进服务质量。

它是一种有效描述服务传递过程的可视技术。

流程再造的概念、主要内容及作用

概念  流程再造由美国的Michael Hammer 和Jame Champy提出,在20世纪90年代达到了全盛的一种管理思想。

  企业再造是一种企业活动,内容为从根本重新而彻底地去分析与设计企业程序,并管理相关的企业变革,以追求绩效,并使企业达到戏剧性的成长。

企业再造的重点在于选定对企业经营极为重要的几项企业程序加以重新规划,以求其提高营运之效果。

目的在为了对于成本、品质、对外服务和时效上达到重大改进。

  主要内容  流程再造的核心是面向顾客满意度的业务流程,而核心思想是要打破企业按职能设置部门的管理方式,代之以业务流程为中心,重新设计企业管理过程,从整体上确认企业的作业流程,追求全局最优,而不是个别最优。

  随着互联网对重构完整的价值链的要求越来越高,品牌之间的竞争和对抗将日益淡化,取而代之的是关于公司价值链的强度和效率之间的竞争。

公司必须大量投资、谨慎管理、保护和持续对资产进行改良。

拥有能够保持第一位的客户关系、快速反应并参与客户需求的动态价值链的公司将成为赢家。

  流程合作就是将业务流程作为一套离散的任务在多个资源(人、商业组织、公司)之间共享,这些任务的分配既可以在事先达成一致,也可以根据规则和资源能力实时协商完成。

流程合作涉及反复进行的协商式业务流程的两方或更多方,该流程在本质上更具关系性,而非交易性。

  企业的管理应该是流程驱动的管理,一贯实施流程管理,而且管理得比较得当的企业,确实可以在日常的管理过程中,适时对流程进行修正、调适,所以,这种企业的流程往往适应性比较强,流程的设置和运行也要科学得多,但这并不意味着,它们就不需要对流程进行再造。

如果客户的需求和市场发生了巨大的变化,企业的生意模式要实现根本性的变革,流程就必须要再造。

例如,戴尔公司推行的直销模式,如果在IBM公司的传统流程上套用,恐怕就难以产生预期效果,但是IBM公司的传统流程对于自身奉行的生意模式却是有效的。

另外,流程再造的目的也是要通过对企业和产业流程的梳理、精简,来实施流程化管理。

  作用  现代商业社会的发展日新月异,市场信息瞬息万变,顾客需求日益增高,市场竞争异常激烈。

在这样的市场背景下,业务流程再造的思想应运而生,并迅速成为席卷全球的一种重要的管理学理论和实践方法。

它主要是强调对企业现有的核心业务流程进行颠覆性的再思考和设计,从而使得企业的资源得以实现以流程为中心进行再次整合,最终达到提高企业的运营效率和经营业绩的目的。

  附:迈克尔·哈默的八原则  迈克尔·哈默在他的开篇之作“再造不是自动化,而是重新开始”一文中为流程再造总结了八条原则:  一是要围绕结果进行组织,而不是围绕任务进行组织。

企业应当围绕某个目标或结果,而不是单个的任务来设计流程中的工作。

  二是要让利用流程结果的人执行流程。

基于计算机的数据和专门技能越来越普及,部门、事业部和个人可以自行完成更多的工作。

那些用来协调流程执行者和流程使用者的机制可以取消。

  三是要将信息处理工作归入产生该信息的实际工作流程。

  四是要将分散各处的资源视为集中的资源。

企业可以利用数据库、电信网络和标准化处理系统,在获得规模和合作的益处的同时,保持灵活性和优良的服务。

  五是要将平行的活动连接起来,而不是合并它们的结果。

将平行职能连接起来,并在活动进行中,而不是在完成之后,对其进行协调。

  六是要将开展工作的地方设定为决策点,并在流程中形成控制。

让开展工作的人员决策,把控制系统嵌入流程之中。

  七是要从源头上一次获取信息。

当信息传递难以实现时,人们只得重复收集信息。

如今,当我们收集到一份信息时,可以把它储存到在线数据库里,供所有需要它的人查阅。

  八是领导层要支持。

流程再造要获得成功必须具备一个条件:领导层真正富有远见。

除非领导层支持该工作,并能经受住企业内的冷嘲热讽,否则人们不会认真对待流程再造。

为了赢得安于现状的人的支持,领导层必须表现出投入和坚持──可能再带一点狂热。

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片