设计一个GUI猜数字游戏程序
C高级语言程序设计猜数字游戏
《高级语言程序设计》课程设计说明书设计题目:猜数字游戏目录1.游戏说明、、、、、、、、、、、、、、、、、、、、、、、、、、12.程序的模块组成、、、、、、、、、、、、、、、、、、、、23.程序流程、、、、、、、、、、、、、、、、、、、、、、、、、、24.程序源清单、、、、、、、、、、、、、、、、、、、、、、、、25.课程设计总结、、、、、、、、、、、、、、、、、、、、、、、19课题:猜数字游戏说明:每次随机产生5个数字,提供10次机会,若猜中进入下一次猜数,每猜中一次奖励100分,可中途退出猜数游戏,可以累计分数,和产生积分榜基本功能:1.用户注册2.用户积分查看游戏流程设计思路:1设计思路:1.程序的模块组成:主函数、、、、、、、、、、、、int mian创立结构体、、、、、、、、struct record定义数组、、、、、、、、、、char name[ ]清除文本模式窗口、、system("cls")2.程序流程:分别用void定义开始界面display,操作函数sys(int a),记录文件recwrite(),浏览界面vdisplay(),读取文件recread() ,开始游戏newgame(),判断并增加记录addrec()。
在用int mian主函数调用。
srand( (unsigned)time( NULL ),以时间为种子,产生随机数,更具有代表性,这样避免了随机出显的数字服从正太分布。
3程序源清单:#include <stdlib.h>#include <stdio.h>#include <time.h>#include<windows.h>#include<string.h> 2struct record{char name[10];int sorce;}rec;int num; //输入的数字void display(); //开始界面void xuanze(); //选择函数void sys(int a); //操作函数void zhuce(); //用户注册void newgame(); //新游戏void vdisplay(); //浏览记录界面int qushu(); //取数函数int tishi(int aa); //提示函数void addrec(); //判断并且增加记录void recread(); //读取记录文件void recwrite(); //写入记录文件void main() 3 {display();}void display() //开始界面{system("cls"); //清屏printf("============================================\n"); printf(" ================数字竞猜游戏================\n");printf("============================================\n"); printf("\n");printf(" 1: 新游戏\n");printf("\n");printf(" 2: 注册用户\n"); printf("\n");printf(" 3: 用户积分查看\n");printf("\n"); 4 printf(" 4: 退出\n");printf("\n");printf("============================================\n"); xuanze();}void xuanze() //选择函数{int a;printf("请输入你所选择的操作数:\n");scanf("%d",&a);if(a==1||a==2||a==3||a==4){sys(a);}//选择相应的操作数执行函数else{printf("错误的操作数!\n");;printf("\n");printf("请按任意键继续...\n");getchar(); 5 getchar();display();}}void sys(int a) //操作函数{switch(a){case 1:newgame();break;case 2:zhuce();break;case 3:vdisplay();break;case 4:exit(0);break; //退出}}void zhuce(){system("cls");printf("请输入你的名字\n");scanf("%s",&); 6 recwrite(); //写入printf("恭喜!注册成功!\n");printf("请按任意键继续...\n");getchar();getchar();display();}void recwrite() //写入记录文件{FILE *fp;fp=fopen("E:\\rec.rec","wb");if(fp==NULL)printf("写入失败!\n");fwrite(&rec,sizeof(struct record),1,fp);fclose(fp);}void vdisplay() //浏览记录界面{ 7 system("cls"); //清屏printf("============================================\n"); printf(" ================数字竞猜游戏================\n");printf(" ====================积分====================\n");recread();printf("\n");printf(" 姓名:%s : 分数%d\n",,rec.sorce); printf("\n");printf("请按任意键继续...\n");getchar();getchar();display();}void recread() //读取记录文件{FILE *fp; 8 L: fp=fopen("E:\\rec.rec","rb");if(fp==NULL){recwrite();goto L; //初始化}if(fread(&rec,sizeof(record),1,fp)==1){}else{printf("文件读取失败!");}fclose(fp);}void newgame() //新游戏{recread();system("cls"); //清屏9 printf("\n");if (==0){ printf(" 请先注册用户\n");printf("请按任意键继续...\n");getchar();getchar();vdisplay();}/////////////////////////////////////////////////////////////////////////////int snum; //输入的数字int sn=10; //机会次数num=qushu(); //取数L: system("cls"); //清屏printf("============================================\n");printf("============================================\n"); printf(" ================数字竞猜游戏================\n");printf("============================================\n"); printf("\n");printf("===========================================\n"); printf(" 姓名:%s : 分数%d\n",,rec.sorce); printf("\n");printf(" 按1: 终止游戏,显示答案\n");printf("============================================\n"); printf("\n");printf("请输入你猜想的五个数字(格式为99999样式)你还有%d 次机会:\n",sn);scanf("%d",&snum);if(snum<100000 && snum>10000 || snum==1){if(snum==1){printf("你放弃了本局游戏!该五个数字是: %d\n",num); 11 printf("\n");printf("请按任意键继续...\n");getchar();getchar();display() ;}elseint flag=tishi(snum);if(flag!=0 && sn!=0){sn--;if(sn==0){printf("真是遗憾!十次机会没有了!没有关系!下次继续!\n"); printf("\n");printf("请按任意键继续...\n");getchar();getchar();newgame() ; 12 }printf("请按任意键继续猜...\n");getchar();getchar();goto L;}elseif(sn!=0)addrec();else{printf("请按任意键继续...\n");getchar();getchar();newgame();}}}}else{ 13 printf("错误的操作数!\n");;printf("\n");printf("请按任意键继续...\n");getchar();getchar();goto L;}int tishi(int aa) //提示函数{ int a,b,c,d,e;int af,bf,cf,df,ef;if(aa==num){printf("恭喜!你猜对了!五个数就是:%d\n",num);return(0);14 }else{ a=num/10000;b=num/1000%10;c=num/100%100%10; //获取输入的四个数字d=num/10%1000%100%10;e=num%10000%1000%100%10;af=aa/10000;bf=aa/1000%10;cf=aa/100%100%10; //获取输入的四个数字df=aa/10%1000%100%10;ef=aa%10000%1000%100%10;if(af>a)printf("\n第一个数应该比%d 小一点!\n",af);if(af==a)printf("恭喜!第一个数字对了!应该是: %d\n",af); //数字比较if(af<a)printf("第一个数应该比%d 大一点!\n",af);if(bf>b)printf("第二个数应该比%d 小一点!\n",bf);if(bf==b)printf("恭喜!第二个数字对了!就是: %d\n",bf); //数字比较if(bf<b)printf("第二个数应该比%d 大一点!\n",bf); 15if(cf>c)printf("第三个数应该比%d 小一点!\n",cf);if(cf==c)printf("恭喜!第三个数字对了!就是: %d\n",cf); //数字比较if(cf<c)printf("第三个数应该比%d 大一点!\n",cf);if(df>d)printf("第四个数应该比%d 小一点!\n",df);if(df==d)printf("恭喜!第四个数字对了!就是: %d\n",df); //数字比较if(df<d)printf("第四个数应该比%d 大一点!\n\n",df);if(ef>e)printf("第五个数应该比%d 小一点!\n",ef);if(ef==e)printf("恭喜!第五个数字对了!就是: %d\n",ef); //数字比较if(ef<e)printf("第五个数应该比%d 大一点!\n\n",ef);return(1);}}16void addrec() //判断并且增加记录{int a; //标志位a=100;recread();rec.sorce= rec.sorce+a;recwrite();printf("请按任意键继续...\n");getchar();getchar();newgame();}int qushu( ) //取数函数{int a=0;int i=0;17srand( (unsigned)time( NULL ) ); //随机数种子设置while(i==0){i=rand(); //这样做就是为了增加随机性i=i%100;}L: for(int j=0;j<i;j++){a=a+rand(); //判断随机数是否是五位数如果不是继续取数}a=(a/i+rand())%100000;if(a<10000)goto L;return(a);}18 3.课程设计总结这次的课程设计总算是告一段落,虽然源程序不是自己亲自全部完成,但是毕竟也花费了自己的很多精力,从开始的到网上查找资料,然后自己一点点的改正,调试,中间的好多问题自己都没有办法解决,也看不懂,也让自己知道光靠书本的那点知识是无法解决的,书本的知识毕竟是有限的。
接口课程设计猜数字游戏
接口课程设计猜数字游戏一、课程目标知识目标:1. 学生能理解接口的概念,掌握其在编程中的应用。
2. 学生能运用所学编程语言实现猜数字游戏的接口设计。
3. 学生了解猜数字游戏的算法原理,并能运用数学知识进行合理的猜测。
技能目标:1. 学生能运用编程工具,如Python,进行接口的设计与实现。
2. 学生通过编写代码,培养解决问题的能力,提高逻辑思维能力。
3. 学生能通过小组合作,提高沟通协调能力,共同完成接口设计与游戏开发。
情感态度价值观目标:1. 学生对编程产生兴趣,增强学习信息技术的积极性。
2. 学生在游戏设计中,树立正确的竞争意识,培养团队合作精神。
3. 学生通过编程实践,认识到编程与日常生活的联系,提高对信息技术的认识。
课程性质:本课程为信息技术课程,通过设计猜数字游戏,让学生在实践中掌握编程知识,提高编程技能。
学生特点:五年级学生对信息技术有一定的了解,具备基本的计算机操作能力,好奇心强,喜欢游戏。
教学要求:结合学生特点,注重启发式教学,引导学生主动探究,培养编程兴趣和团队合作精神。
教学过程中,关注学生个体差异,因材施教,确保每个学生都能在课程中取得进步。
通过课程目标的分解,使学生在完成具体学习成果的过程中,达到课程目标的要求。
二、教学内容1. 接口概念与原理- 接口定义及其在编程中的应用- 接口的作用和优势2. 编程语言基础- Python编程语言的基本语法- 变量、数据类型、运算符的使用3. 猜数字游戏算法- 猜数字游戏的规则与流程- 随机数生成与比较- 算法优化与调试4. 接口设计与实现- 设计猜数字游戏接口的需求分析- 接口框架的搭建与实现- 参数传递与返回值处理5. 编程实践与团队合作- 学生分组进行猜数字游戏接口设计- 小组讨论、协作完成代码编写与调试- 成果展示与评价教学内容安排与进度:第一课时:接口概念与原理,Python编程语言基础第二课时:猜数字游戏算法,接口设计需求分析第三课时:接口框架搭建,参数传递与返回值处理第四课时:编程实践,小组合作完成猜数字游戏接口设计第五课时:成果展示,评价与总结教材关联:本教学内容与教材《信息技术》五年级下册第四章“编程初步”相关,涉及接口设计、Python编程、算法等知识点。
JAVA课程设计猜数字游戏
南阳师范学院物理与电子工程学院《JAVA语言程序设计》课程设计报告完成人:班级:学号:专业:摘要猜数字是一款非常经典的脑力游戏,游戏规则简单,但是玩起来难度较大,是消磨时间、锻炼脑力的好选择。
这个课程设计可以更加深入的了解字符界面的编程过程,更熟练的掌握Java程序框架的搭建和类的创建格式。
在分析阶段,要进行面向对象的需求分析、系统设计、画出相应的需求分析图、系统设计模型图,这些工作更能锻炼逻辑思维,更能培养思考的全面性。
一.概要设计1.1 设计任务与要求功能要求:该程序用图形界面实现下面功能:用计算机产生一个100以内的随机数,游戏者进行猜数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜对为止。
1.2 选题目的与意义通过猜数游戏这个课题我可以学到文本框、标签框、按钮、布局、对话框方面的知识和应用,达到设计登陆界面、加入图像显示功能以及设计按钮的目的,让我更加的掌握和理解java面向对象语言的需求分析、系统设计,所以我选择猜数游戏这个课题。
1.3程序结构图二.详细设计2.1总体设计分析1随机数的获取:玩家输入一个数字,数字的范围在1-100之间,系统获取随机数。
2 输入输出模块:对玩家输入的数字进行判断和提示。
如果玩家输入的不是系统要求的数字,系统将提示您,您输入的不是数字请重新输入.。
如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示您,数字太小请您重新输入。
如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示您,数字太大请您重新输入。
3 判断模块:算出所用时间在玩家猜中时给出其所用时间,系统给出对其水平的判断和是否继续的提示;对玩家要求判断执行。
4 自动计数模块:系统根据您猜数字的次数,自动计数.5 结果输出模块:直到用户猜到数字为止,提示信息是否继续猜数字,如果继续将进入下一次游戏,如果退出将退出游戏系统.2.2源程序import java.awt.Color;import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.Box;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JTextField;class WindowButton extends JFrame implements ActionListener{ /****/private static final long serialVersionUID = 1L;int number;JTextField inputNumber;JLabel feedBack;JButton buttonGetNumber,buttonEnter;WindowButton(String s){super("猜数字小游戏");buttonGetNumber=new JButton("得到一个随机数");feedBack=new JLabel("无反馈信息",JLabel.CENTER);feedBack.setBackground(Color.green);inputNumber=new JTextField("0",5);buttonEnter=new JButton("确定");buttonEnter.addActionListener(this);buttonGetNumber.addActionListener(this);buttonGetNumber.addActionListener(this);Box boxH1=Box.createHorizontalBox();boxH1.add(new JLabel("获取1-100之间的随机数:")); boxH1.add(buttonGetNumber);Box boxH2=Box.createHorizontalBox();boxH2.add(new JLabel("输入您的猜测: "));boxH2.add(inputNumber);Box boxH3=Box.createHorizontalBox();boxH3.add(new JLabel("单击确定按钮: "));boxH3.add(buttonEnter);Box boxH4=Box.createHorizontalBox();boxH4.add(new JLabel("反馈信息: "));boxH4.add(feedBack);Box baseBox=Box.createVerticalBox();baseBox.add(boxH1);baseBox.add(boxH2);baseBox.add(boxH3);baseBox.add(boxH4);Container con=getContentPane();con.setLayout(new FlowLayout());con.add(baseBox);con.validate();setBounds(120,125,279,200);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100,100,150,150);setVisible(true);validate();}public void actionPerformed(ActionEvent e){if(e.getSource()==buttonGetNumber){number=(int)(Math.random()*100)+1;}else if(e.getSource()==buttonEnter){int guess=0;try{guess=Integer.parseInt(inputNumber.getText());if(guess==number){JOptionPane.showMessageDialog(this,"恭喜您,猜对了");}else if(guess>number){JOptionPane.showMessageDialog(this,"您猜的太大了,请继续猜");inputNumber.setText(null);}else if(guess<number){JOptionPane.showMessageDialog(this,"您猜的太小了,请继续猜");inputNumber.setText(null);}}catch(NumberFormatException event){JOptionPane.showMessageDialog(this,"请输入数字字符");}}}}public class 猜数字游戏 {public static void main(String args[]){new WindowButton("猜数字小游戏");三. 运行调试与分析讨论3.1 系统测试方案1点击运行程序后,显示出图形界面。
猜数字游戏程序设计
课程设计任务书学生姓名:专业班级:自动化1004班指导教师:工作单位:自动化学院题目要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.猜数字游戏程序设计随机产生一个0至149的数字(不显示),输入猜测数字,程序提示和所猜数字大小,直至正确,猜数正确后显示猜数的次数,程序采用汇编语言在PC机上完成。
2.画出简要程序流程图,编写程序。
3.撰写课程设计说明书。
内容包括:摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:2012年12月30日----- 12月31日查阅资料及方案设计2013年01月01日----- 01月05日编程2013年01月06 日----- 01月08日调试程序2013年01月09 日----- 01月10日撰写课程设计报告指导教师签名:20 年01 月11 日系主任(或责任教师)签名:年月日目录摘要 (1)1 汇编语言基础 (2)1.1汇编语言简介 (2)1.2汇编语言特点 (2)2 设计原理分析 (3)2.1随机数的产生 (3)2.2子模块 (3)2.3设计流程图 (4)3 子程序分析 (5)3.1RAN的主要算法 (5)3.2INPUT的主要算法 (5)3.3ENTER的主要算法 (6)4源程序 (7)4.1程序代码 (7)4.2程序运行截图 (13)心得体会 (15)参考文献 (16)摘要该程序为玩家提供猜数字游戏的基本功能。
当用户选择开始游戏时,系统会在内部产生对应范围内的随机数,以供用户进行猜测,用户每次猜数字后系统会给出本次猜数字的结果提示,先比较用户猜测数字是否等于系统产生的随机数,若相等则提示用户猜数字成功。
如果用户猜测数字不等于系统产生的随机数,则提示该数字与随机数比较时大了还是小了,并输出比较结果,同时记录当前用户猜测的次数。
猜数字游戏python课程设计
猜数字游戏python课程设计一、教学目标本课程旨在通过猜数字游戏的项目,让学生掌握Python编程的基本语法、逻辑思维能力以及问题解决能力。
知识目标要求学生了解Python的数据类型、控制结构、函数定义等基本概念;技能目标要求学生能够运用Python编写简单的程序,并具备调试和运行程序的能力;情感态度价值观目标则是培养学生的团队合作意识,提高他们对编程学习的兴趣和自信心。
二、教学内容本课程的教学内容主要包括Python基础语法、猜数字游戏的编写和调试。
教学大纲将按照以下顺序进行:首先,介绍Python的基本数据类型和变量;其次,讲解控制结构,包括条件判断和循环;然后,介绍函数的定义和调用;接着,讲解如何使用Python编写猜数字游戏的代码,并对其进行调试;最后,进行课堂讨论和总结。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用讲授法、讨论法和实验法等多种教学方法。
在讲授基本语法和概念时,教师会通过生动的案例和实际操作进行讲解;在编写猜数字游戏的过程中,教师将引导学生进行讨论,鼓励他们提出问题和解决问题;在实验环节,学生可以在教师的指导下,亲自动手编写和调试代码,增强实践操作能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:教材《Python编程:从入门到实践》,供学生学习和参考;多媒体教学课件,帮助学生更好地理解和记忆知识点;在线编程平台,方便学生进行实验和练习;以及相关的参考书籍和网络资源,为学生提供更多的学习材料。
五、教学评估本课程的评估方式将包括平时表现、作业和考试三个部分。
平时表现主要评估学生的课堂参与度和合作程度,包括发言、讨论和团队项目等;作业则主要评估学生的编程能力和理解程度,包括猜数字游戏的编写和调试;考试则是对学生综合运用Python知识解决问题能力的评估。
评估方式将尽量客观、公正,全面反映学生的学习成果。
六、教学安排本课程的教学安排将共计30课时,每周两次课,每次课2小时。
Python游戏设计案例实战第4章 Tkinter图形界面设计——猜数字游戏
4.4 Tkinter字体
4.4.1 通过元组表示字体 通过3个元素的元组,可以表示字体: (font family,size,modifiers) 作为一个元组tuple的第一个元素font family是字体名,size为 字体大小单位为point;modifiers为包含粗体、斜体、下划线 的样式修饰符。
4.2.11 Frame框架组件
• Frame组件是框架组件,在进行分组组织其他组件的过程 中是非常重要的,负责安排其他组件的位置。Frame组件 在屏幕上显示为一个矩形区域,作为显示其他组件的容 器。
4.2.12 Scrollbar滚动条组件
• Scrollbar组件是滚动条组件,Scrollbar组件用于滚动一些 组件的可见范围,根据方向可分为垂直滚动条和水平滚 动条。Scrollbar 组件常常被用于实现文本、画布和列表框 的滚动。
• 组件标准属性也就是所有组件(控件)的共同属性,如 大小,字体和颜色等等。常用的标准属性如表4-5所示。
4.2.3 Label标签组件
• Label组件用于在窗口中显示文本或位图。常用属性如表 4-6所示。
4.2.4 Button按钮组件
• Button组件(控件)是一个标准的Tkinter部件,用于实现各种 按钮。按钮可以包含文本或图像,您可以通过command属性 将调用Python函数或方法关联到按钮上。Tkinter的按钮被按 下时,会自动调用该函数或方法。该按钮可以只显示一个单 一字体的文本,但文本可能跨越多行。此外,一个字符可以 有下划线,例如标记的键盘快捷键。Tkinter Button按钮属性 和方法如表4-7和4-8所示。
java猜数小游戏课程设计
java猜数小游戏课程设计一、课程目标知识目标:1. 学生能够理解Java基本语法和程序结构,掌握猜数游戏的基本逻辑。
2. 学生能够运用循环、条件判断等基本控制结构编写简单的Java程序。
3. 学生了解并能使用Random类生成随机数,实现游戏中的随机数生成。
技能目标:1. 学生通过编写和调试Java猜数游戏,培养问题分析和程序设计能力。
2. 学生能够运用所学知识,独立完成一个简单的Java程序,提高编程实践能力。
3. 学生学会使用集成开发环境(IDE)进行Java程序开发,掌握基本的调试技巧。
情感态度价值观目标:1. 学生在合作开发猜数游戏过程中,培养团队协作能力和沟通能力。
2. 学生通过解决编程中的问题,锻炼克服困难的意志,增强自信心。
3. 学生认识到编程学习的乐趣,激发对计算机科学的兴趣和求知欲。
4. 学生遵循编程规范,养成良好的编程习惯,培养责任感和敬业精神。
本课程针对初中年级学生设计,结合学生好奇心强、求知欲旺盛的特点,以趣味性的猜数游戏为载体,引导学生掌握Java编程基础知识。
在教学过程中,注重培养学生的实际操作能力和团队协作能力,使学生在实践中提高编程技能,同时关注学生的情感态度培养,激发学生的学习兴趣和内在动力。
通过本课程的学习,为学生进一步学习计算机编程打下坚实基础。
二、教学内容1. Java基本语法与程序结构- 变量、数据类型及运算符- 程序控制结构:顺序结构、分支结构(if-else)、循环结构(for、while)2. 随机数生成- Random类的基本使用方法- 生成指定范围的随机数3. 猜数游戏逻辑设计- 游戏规则与流程设计- 用户输入与输出处理- 循环结构与条件判断的运用4. 编程实践- 使用IDE(如Eclipse或IntelliJ IDEA)创建和运行Java项目- 调试与优化程序- 编写符合编程规范的代码5. 团队协作与沟通- 分组讨论与分工合作- 成果分享与评价教学内容依据课程目标进行选择和组织,确保学生能够系统地学习和掌握Java 编程基础知识。
Python编程实例:猜数字游戏
用户输入:用户输 入一个数字,尝试 猜测目标数字
判断结果:比较用 户输入和目标数字 ,判断是否猜中
游戏结束:如果用 户猜中,游戏结束 ;否则,继续游戏
游戏测试与调试
测试目标:确保游戏功能正常,无明显漏洞 测试方法:手动测试、自动化测试、边界值分析等 调试工具:Python调试器、日志记录、断言等 常见问题:逻辑错误、语法错误、性能问题等 解决方案:根据问题类型,采取相应措施,如修改代码、优化算法等
06
模块与包:导入、使 用、自定义等
07
面向对象编程:类、 对象、属性、方法等
Python数据类型
• 整数:表示整数,如123、-456 • 浮点数:表示小数,如3.14、-5.67 • 字符串:表示文本,如'Hello, World!'、"Python is fun!" • 列表:表示有序的集合,如[1, 2, 3, 4, 5]、['a', 'b', 'c'] • 元组:表示不可变的有序集合,如(1, 2, 3)、('a', 'b', 'c') • 字典:表示无序的集合,如{'name': 'Alice', 'age': 30}、{'city': 'Beijing',
'country': 'China'} • 集合:表示无序的集合,如{1, 2, 3}、{'a', 'b', 'c'} • 布尔值:表示真或假,如True、False
02
Python编程进阶
猜字数游戏程序设计方案
猜字数游戏程序设计方案1 、程序设计描述1.1 程序设计目的:综合使用所学过的C语言程序设计知识,掌握结构化程序设计的基本思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。
1.2 程序设计要求:1、巩固和加强《C语言程序设计》课程的理论知识。
2、掌握C语言的基本概念、语法、语义和数据类型的使用特点。
3、掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。
4、进一步理解和运用结构化程设计的思想和方法;学会利用流程图。
5、掌握调试程序的基本方法及上机操作方法。
6、掌握书写程设计开发文档的能力,学会撰写课程设计总结报告。
课程设计的思想和方法还可以作为做毕业论文时的参考资料。
7、通过查阅手册和文献资料,培养独立分析问题和解决问题的能力。
为做毕业设计打好基础。
8、培养自己的创新能力和创新思维。
可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。
9、培养自己良好的程序设计风格。
在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。
在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。
1.3、猜数字游戏的简介:猜数字游戏(又称Bulls and Cows )是一种大概于20世纪中期兴起于英国的益智类小游戏。
一般由两个人玩,也可以由一个人和电脑玩,在纸上、在网上都可以玩。
这种游戏规则简单,但可以考验人的严谨和耐心。
2 、程序设计内容:2.1、游戏主要框架图:该模块为玩家提供猜数字游戏的主体功能,即开始游戏、继续游戏、最佳排行、操作说明、退出游戏。
给用户一个清晰明了的操作界面!流程图如下:系统模块结构图2.2、开始游戏框架:开始游戏①单人游戏由系统产生4个随机数,并按任意顺序排列,作为游戏的原始数字供玩家进行猜数字游戏。
②双人游戏有主用户知己定义输入输入,再用另一用户猜测!③单人、双人游:提示用户数值和位置全对的数字个数,和只有数值但位置不对的数字个数。
《C语言程序设计》课程设计---猜数字游戏
设计题目:猜数字游戏目录目录目录........................................................... - 1 - 1 程序分析与设计. (2)1.1 功能分析与任务分配 (2)功能分析 (2)1.2流程图 (2)1.3 数据结构 (4)2 详细设计 (4)3 参考文献 (5)4 附录 (5)5总结.............................................. 错误!未定义书签。
1 程序分析与设计1.1 功能分析与任务分配功能分析此游戏程序通过不断输入以及逐渐数位对应的方法,一步步的缩小猜测范围,最终猜出机内已存储数字,达到健脑益智的效果。
此数字游戏没有设置猜测次数的上限.简单策略这种策略非常直接——每次都猜可能答案中的第一个。
例如,首先猜测1234,如果得到的反馈是2A2B,那可能的答案包括1256,1257,5236,等等。
根据简单策略,下一次就猜1256,因为1256是所有可能答案中最小的数字。
简单策略的优点是速度非常快,缺点是所需猜测次数很多。
启发式策略这类策略是猜数字游戏最常用的解法。
其算法步骤如下:a. 首先猜1234,得到第一个反馈(xAyB)。
b. 从所有数字中,筛选出满足已知反馈的所有可能数字,称之为“可能集”。
c. 对于所有数字(而不仅限于筛选出来的可能集),逐一评估每个数字的“好坏”,并给其打分。
选取得分最高的那个数字猜。
如果有多个数字的评分一样高,则优先选取可能集中的数字。
d. 重复步骤b-c,直到猜出4A4B为止。
(2)任务分配李晓飞和谭程方同学:实现猜测数据后的*A*B编写功能,即规则c.王璐和王爽同学:实现统计每次猜对数字个数的功能,即规则d.王鹏宇同学:实现统计每次猜对的数字并且位置也对的数字个数,即规则e.(备注:在实际操作中由于每位同学所用变量习惯以及掌握程度不同,所以此程序任务分配可能会部分的与上不符,最后还要对任课老师魏玉芬以及指导老师丁艳清表示衷心的感谢,感谢两位老师给予我们的帮助!)1.2流程图1.3 数据结构k 猜测的次数b 一次猜测后用来判断是否继续进行新的猜测n1 猜对的数字数n2 猜对并且位置也对的数字数i、j 用来表示两个数组的对应数位数x[4]={2,5,6,9} 定义将要被猜测的数字为2569 y[4] 从键盘输入的四位数2 详细设计通过逐步减少范围来猜测正确结果3 参考文献[1]谭浩强著《C语言程序设计》北京:清华大学出版社 2005[2]百度知道4 附录#include <stdio.h>void main(){int k,n1,n2,b,x[4]={2,5,6,9},y[4]; //定义将要被猜测的数字为2569//int i=0,j=0;for(k=1;;k++) //只要不放弃,就可以使猜测无数次的进行下去//{n1=0;n2=0; //n1用来统计猜对的数字数,n2用来统计猜对并且位置也对的数字数//printf("请输入四个不同的数字:");for(j=0;j<4;j++)scanf("%d",&y[j]);//用来输入四个不同的数字//for(i=0;i<4;i++){for(j=0;j<4;j++)if(x[i]==y[j]) n1++; //统计n1//}for(i=0;i<4;i++)if(y[i]==x[i]) n2++; //统计n2//printf("%dA%dB\n",n1,n2);printf("n1=%d,n2=%d\n",n1,n2); //给出本轮猜测的结果//if(n2==4) break;printf("如果想放弃,请输入0;如果不想放弃,请输入任意非零数字\n");scanf("%d",&b);if(b==0)printf("正确答案是:2569");else printf("请继续猜测\n");}if(n2==4)printf("恭喜你答对了!");}5总结C语言是我们在大学学习中接触的第一种计算机语言,将其作为我们学生学习程序设计技术的入门课程,我想这与C语言的特点是分不开的。
基于 UCGUI 的“猜数字”游戏设计
Amiga 计算机公司于 1985 年研究一款运用 GUI 的电脑, 叫 Intuition。 Amiga GUI 在当时独一无二,因为在那时候 GUI 还不能提供足够的控制功能,AMIga 就 已经能使用弹出式的命令行界面(CLI)了。 1986 年 GEM GEM 是基于 IBM 电脑系统上运行而发明的一种可选择性视窗系统, 也可以在 MS-Dos(像微软视窗)或者 CPM-86 上运行。GEM 在 PC 领域只取得很小的成功,但 是后来做为本土 GUI 被应用到了 Atari ST 电脑之上。 1987 年 Apple Macintosh II 1987 年 3 月 APPLE 公司推出了 MAC II,是第一台有颜色的 MAC 苹果机. 1988 年 RISC OS RISC OS 是一种彩色 GUI 操作系统,其使用三键鼠标以及任务栏(也叫图标 栏) ,以及一个文件导航器(类似于 Mac OS) 。 GEOS GEOS 是另外一个非常早期的图形桌面系统。最开始是为了 8-bit 家庭电脑 Connodore 64 而制作的,后来转入到 IBM 的电脑系统。 1990 年 Microsoft Windows 3.0 第一个微软视窗版本在 1985 年发表,是基于 MAC OS 的 GUI 设计。Window 1.0 是基于 MS-DOS 操作系统的图形化用户界面 (GUI) , Windows 2.0 是后续版本。 后来的一系列 GUI 视窗版本都基本类似于 windows 3.0 的界面。 1992 年 Amiga Workbench 3 1993 年 Windows NT 1994 年 QNX Photon Microgui QNXr 软件系统发布了第一个嵌入式微核的视窗系统. 1995 年 Windows 95 1995 年 8 月 24 日,微软发布了 Windows 95. 1996 年 IBM Releases OS/2 Warp 4 1997 年 Mac OS 8: 1997 年 7 月,MAC OS 8 发布,成为当时热销的一个软件. 1998 年 Windows 98 1999 年 APPLE Mac OS X 2000 年 APPLE AQUA 2000 年 1 月 5 日,APPLE 发布了 AQUA, 是 MacOS X 的新界面. 2001 年 Windows XP 2003 年 Windows Server 2003
猜数字游戏代码课程设计
猜数字游戏代码课程设计一、教学目标本课程旨在通过猜数字游戏代码的学习,让学生掌握Python编程的基础知识,包括变量、循环、条件语句和函数等,培养学生的计算思维和解决问题的能力。
具体目标如下:1.理解Python编程语言的基本概念和语法。
2.掌握变量、数据类型、运算符和表达式的使用。
3.理解循环、条件语句和函数的基本原理和应用。
4.能够编写简单的Python程序,实现基本的输入输出操作。
5.能够使用循环和条件语句处理复杂的问题。
6.能够编写函数,实现代码的模块化和复用。
情感态度价值观目标:1.培养学生对编程的兴趣和热情,提高学生的自我学习能力。
2.培养学生解决问题的能力和团队合作的精神。
3.培养学生对计算机科学和技术的认知和理解,提高学生的创新意识。
二、教学内容本课程的教学内容主要包括Python编程语言的基本概念和语法、变量、数据类型、运算符和表达式的使用,循环、条件语句和函数的基本原理和应用。
具体安排如下:1.Python编程基础:介绍Python语言的基本概念和语法,包括变量、数据类型、运算符和表达式的使用。
2.输入输出操作:学习如何使用Python进行输入输出操作,包括打印输出和用户输入。
3.循环:学习循环的概念和原理,掌握for循环和while循环的使用。
4.条件语句:学习条件语句的概念和原理,掌握if语句和elif语句的使用。
5.函数:学习函数的概念和原理,掌握函数的定义、调用和参数传递。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:通过讲解和演示,向学生传授Python编程的基本概念和语法。
2.讨论法:通过小组讨论和分享,培养学生的团队合作精神和解决问题的能力。
3.案例分析法:通过分析实际案例,让学生理解和应用循环、条件语句和函数等编程技巧。
4.实验法:通过编写和运行Python程序,让学生亲手实践,加深对编程知识的理解和掌握。
实训二编写猜数字游戏程序
"数字偏大"; return; }
{ 第" + count + "次尝试,你猜的" +
"数字偏小"; return; }
DialogResult result; 恭喜您,猜中了!共尝试了"+count+"次";
result = MessageBox.Show("再玩一次?","猜数字小游戏", MessageBoxButtons.YesNo);
实训二编写猜数字游戏程序
任务描述
1、随机产生0~100的整数作为谜底 2、用户在文本框填写所猜数字 3、单击试试手气按钮,显示猜测数字与 谜底关系。 4、猜测值与谜底关系: 1)大于:“第某次尝试,你猜的数字偏大!〞 2)小于:“第某次尝试,你猜的数字偏小!〞 3)等于:“恭喜你,猜中了!共尝试了某次!〞
MessageBox函数
MessageBox.Show(“要显示的消息〞,消息 框标题〞, MessageBoxButtons.YesNo)
显示YesNo按钮
控件设置
控件名 属性名
属性值
Frm
StartPosition CenterScreen
Text
猜数字
label1 Font
宋体、三号、粗体
程序执行过程
开始
CenterScreen
BorderStyle {
Form的Load事件初始化“谜底”
//产生0-100的随机整数
Show("再玩一次?","猜数字小游戏", 第" + count + "次尝试,你猜的"+
设计一个GUI猜数字游戏程序
设计一个GUI猜数字游戏程序设计一个GUI猜数字游戏程序该游戏可以由程序随机产生四个0到9之间的整数,且不重复。
玩游戏者通过由用户输入四个数字来匹配上面所产生的数字。
A表示位置正确且数字正确,B表示数字正确而位置不正确。
假设随机数据为3792 时,分析如下数据:3792输入:1234 0A2B输入:5678 0A1B输入:0867 0A1B输入:9786 1A1B输入:1794 2A0B输入:2793 2A2B输入:3792 4A0B1、设计一个GUI猜数字游戏程序:package cn.scelong.guessnum;//可以删除掉import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Random;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JTextField;public class GuessNumberGUI extends JFrame{private JTextField inputTxt;private JTextField dispTxt;private JButton okButton;private JButton resetBtn;private int randomNum; //随机产生的随机数private Random randGenerator; //随机数生成器public GuessNumberGUI() {super("Guess Number Game");this.randGenerator = new Random(9999);this.randomNum = generateRandomNum(); System.out.println("Construtor"+this.randomNum); initComponent();componentAddListener();}private int generateRandomNum() {int guessNum = this.randGenerator.nextInt(9999); if(guessNum >= 1000){return guessNum;}return generateRandomNum();}private void initComponent() {setLayout(new FlowLayout());this.inputTxt = new JTextField();this.dispTxt = new JTextField();this.okButton = new JButton("确定");this.resetBtn = new JButton("重新开始");this.inputTxt.setColumns(6);this.dispTxt.setColumns(6);this.dispTxt.setText("显示结果");add(inputTxt);add(dispTxt);add(okButton);add(resetBtn);pack();}private void componentAddListener(){this.okButton.addActionListener(new ActionListener() { @Overridepublic void actionPerformed(ActionEvent e) {String input = inputTxt.getText();generateNumber(input);}});this.resetBtn.addActionListener(new ActionListener() { @Overridepublic void actionPerformed(ActionEvent e) {randomNum = generateRandomNum();System.out.println("ResetNumber="+randomNum); //test code output }});}private void generateNumber(String input) {if("".equals(input) || input == null) {JOptionPane.showMessageDialog(this, "请输入数字");return ;}String result = "";int aCnt = 0;int bCnt = 0;String randNumStr = String.valueOf(this.randomNum);for(int i=0; i<="" p="">char ch = input.charAt(i);for(int j=0; j<="" p="">char jch = randNumStr.charAt(j);if(jch == ch){bCnt++;if(i == j){aCnt++;bCnt--;}}}}result += aCnt+"A"+bCnt+"B";System.out.println(result);dispTxt.setText(result);}public void showMe(){setLocation(200, 100);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }//运行主函数public static void main(String[] args){new GuessNumberGUI().showMe();}}。
Python实现图形界面猜数字游戏(GUI)
Python实现图形界⾯猜数字游戏(GUI)Python实现图形界⾯猜数字游戏(GUI) ⼤家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:,B站昵称为:亓官劼,地址为本⽂原创为,请⼤家⽀持原创,部分平台⼀直在盗取博主的⽂章 本⽂为使⽤Python做个⼀个图形化的猜数字⼩游戏。
可以设置每次可以尝试猜测的范围以及可以尝试的次数。
效果图为:import tkinter as tkimport randomnumber = random.randint(0,1024)running =Truenum =0nmaxn =1024nminn =0def eBtnClose(event):root.destroy()def eBtnGuess(eent):global nmaxnglobal nminnglobal numglobal runningif running:var_a =int(entry_a.get())if var_a == number:labelqval("恭喜你答对了!")num +=1running =FalsenumGuess()elif var_a < number:if var_a > nminn:nminn = var_anum +=1labelqval("⼩了哦,请输⼊"+str(nminn)+"到"+str(nmaxn)+"之间任意整数:") else:if var_a < nmaxn:nmaxn = var_anum +=1labelqval("⼤了哦,请输⼊"+str(nminn)+"到"+str(nmaxn)+"之间任意整数:") else:labelqval('你已经答对啦。
JAVA程序设计——猜数字游戏
JAVA程序设计——猜数字游戏1.实训项目的内容程序运行时自动产生一个1-100之间的随机数,让游戏者来猜这个数。
当从键盘接收到游戏者输入的数据后,程序给出的相应的提示信息,游戏者根据提示不断从键盘输入数据,直到猜中。
另外程序还提供了“重新开始”和“退出”的功能,可供游戏者重复进行游戏。
2.实训项目要求1.建立Java程序,使用键盘输入流提供用户输入所猜数据;2.使用Math.random()产生一个100以内的随机数;3.使用一个循环从键盘输入数据,并和产生的随机数判断是否大小关系,给出相应提示,循环结束条件为猜中产生的随机数;4.判断是否继续游戏;要求用户输入信息;5.添加外层循环判断是否继续游戏;6.在项目报告中说明键盘输入的基本语句。
7.在项目报告中写出for语句的执行过成。
8.在项目报告中分析while与do-while之间的区别和联系3.实训项目的具体实现(本页不够可以另加页)import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;public class GuessNumberFrame extends Frame implementsActionListener,WindowListener,KeyListener{Button buttonGetNumber,buttonEnter;Label labelShow;TextField textInput;int realNumber;public GuessNumberFrame() {super("猜数字游戏");this.setSize(200,180);this.setLocation(300,300);this.setBackground(Color.lightGray);int width=Toolkit.getDefaultToolkit().getScreenSize().width;int height=Toolkit.getDefaultToolkit().getScreenSize().height;this.setLocation((width-300)/2,(height-310)/2);this.setResizable(false);this.setLayout(new FlowLayout(1,5,15));buttonGetNumber=new Button("得到一个随机数");this.add(buttonGetNumber);buttonGetNumber.addActionListener(this);labelShow=new Label("欢迎使用,猜数字游戏:",Label.CENTER);labelShow.setBackground(Color.orange);this.add(labelShow);textInput=new TextField(10);this.add(textInput);textInput.addKeyListener(this);buttonEnter=new Button("确定");this.add(buttonEnter);buttonEnter.addActionListener(this);this.addWindowListener(this);this.setVisible(true);}public void actionPerformed(ActionEvent e) {if(e.getSource()==buttonGetNumber){realNumber=(int)(Math.random()*100)+1;labelShow.setText("请输入你的猜测");textInput.requestFocus();}if(e.getSource()==buttonEnter){try{int guess=Integer.parseInt(textInput.getText());if(guess==realNumber){labelShow.setText("猜对了");}else if (guess>realNumber) {labelShow.setText("猜大了");textInput.requestFocus();}else if (guess<realNumber) {labelShow.setText("猜小了");textInput.requestFocus();}}catch (NumberFormatException e1) {labelShow.setText("请重新输入数字");}}}public void keyPressed(KeyEvent e) {if(e.getKeyCode()==KeyEvent.VK_ENTER){try{int guess=Integer.parseInt(textInput.getText());if(guess==realNumber){labelShow.setText("猜对了");}else if (guess>realNumber) {labelShow.setText("猜大了");textInput.requestFocus();}else if (guess<realNumber) {labelShow.setText("猜小了");textInput.requestFocus();}}catch (NumberFormatException e1) {labelShow.setText("请重新输入数字");}}}public void windowClosing(WindowEvent e) {System.exit(0);}public void windowActivated(WindowEvent e) {}public void windowClosed(WindowEvent e) {}public void windowDeactivated(WindowEvent e) {}public void windowDeiconified(WindowEvent e) {}public void windowIconified(WindowEvent e) {}public void windowOpened(WindowEvent e) {}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}}class GuessNumberFrame_ex{public static void main(String[] args){new GuessNumberFrame(); }。
Python游戏设计案例实战第4章 Tkinter图形界面设计——猜数字游戏
4.5.1 事件类型
事件类型的通用格式: <[modifier-]…type[-detail]> 事件类型必须放置于尖括号<>内。type描述了类型,例如 键盘按键、鼠标单击。 modifier用于组合键定义,例如Control、Alt。detail用于明确 定义是哪一个键或按钮的事件,例如1表示鼠标左键、2表 示鼠标中键、3表示鼠标右键。 举例:
4.2.11 Frame框架组件
• Frame组件是框架组件,在进行分组组织其他组件的过程 中是非常重要的,负责安排其他组件的位置。Frame组件 在屏幕上显示为一个矩形区域,作为显示其他组件的容 器。
4.2.12 Scrollbar滚动条组件
• Scrollbar组件是滚动条组件,Scrollbar组件用于滚动一些 组件的可见范围,根据方向可分为垂直滚动条和水平滚 动条。Scrollbar 组件常常被用于实现文本、画布和列表框 的滚动。
4.1.1 创建Windows窗口
【例4-1】Tkinter创建一个Windows窗口的GUI程序。
import tkinter
#导入Tkinter模块
win = ()
#创建Windows窗口对象
win.title('我的第一个GUI程序') #设置窗口标题
win.mainloop() #进入消息循环,也就是显示窗口
4.2.8 菜单组件Menu
图形用户界面应用程序通常提供菜单,菜单包含各种按照主题分 组的基本命令。图形用户界面应用程序包括2种类型的菜单。 主菜单:提供窗体的菜单系统。通过单击可下拉出子菜单,选择 命令可执行相关的操作。常用的主菜单通常包括:文件、编辑、 视图、帮助等。 上下文菜单(也称为快捷菜单):通过鼠标右击某对象而弹出的菜 单,一般为与该对象相关的常用菜单命令。例如:剪切、复制、 粘贴等。
猜数字小游戏JAVA程序报告
JAVA程序设计报告——猜数字小游戏目录一、猜数字小游戏简介 (4)二、用户需求分析 (4)三、问题描述 (4)1.课程设计的任务2.课程设计的要求四、模块设计 (5)1.课程设计的要求2.功能模块设计3.流程图五、功能设计 (7)1 . 随机数的产生模块2 . 输入判断模块3 . 记录猜测次数模块4.计时模块5.输入输出模块6.成绩判断模块六、异常处理 (9)七、调试分析 (10)八、不足之处 (11)九、总结 (12)十、程序附页 (13)摘要猜数字是一款非常经典的脑力游戏,游戏规则简单,是消磨时间、锻炼脑力的好选择。
通过选择猜数字游戏这个题目,可以让我掌握Java中的包和类,并且可以灵活的使用my eclipse软件。
同时更加深入的了解字符界面的编程过程。
使我更熟练的掌握Java程序框架的搭建和类的创建格式。
在分析阶段,要进行面向对象的需求分析、系统设计、画出相应的需求分析图、系统设计模型图,这些工作更能锻炼我的逻辑思维,更能培养我思考的全面性。
让我学会了多角度思考问题,对我以后的编程奠定了更好的基础。
一、猜数字小游戏简介系统随机产生任意一个1—100的自然数,玩家输入数字,若输入的数字比随机生成数小,系统将提示,数字太小请您重新输入;如果输入的数字比随机生成数大,系统将提示,数字太大请您重新输入;若输入的字符不是合法字符,系统将提示,您输入的数字不合法,请从新输入,游戏开始时,系统自动记录您猜数字的时间和次数,结束后显示游戏共花费的次数和时间及对游戏结果的评价。
二、用户需求分析设计一个猜数字游戏程序,要求具体如下特性:a.输入任意一个数字。
数字的要求是1—100的自然数即可。
b.系统对您输入的数字进行判断。
如果玩家输入的数字与计算机随机生成数相比较,输入的数字比随机生成数小.系统将提示您,数字太小请您重新输入。
如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生成数大。
系统将提示您,数字太大请您重新输入。
Pythontkinter版猜数游戏
Pythontkinter版猜数游戏import randomimport tkinterimport tkinter.messageboximport tkinter.simpledialogroot = ()#窗⼝标题root.title('猜数游戏--by董付国')#窗⼝初始⼤⼩和位置root.geometry('280x80+400+300')#不允许改变窗⼝⼤⼩root.resizable(False, False)#⽤户猜的数varNumber = tkinter.StringVar(root, value='0')#允许猜的总次数totalTimes = tkinter.IntVar(root, value=0)#已猜次数already = tkinter.IntVar(root, value=0)#当前⽣成的随机数currentNumber = tkinter.IntVar(root, value=0)#玩家玩游戏的总次数times = tkinter.IntVar(root, value=0)#玩家猜对的总次数right = tkinter.IntVar(root, value=0)lb = bel(root, text='请输⼊⼀个整数:')lb.place(x=10, y=10, width=100, height=20)#⽤户猜数并输⼊的⽂本框entryNumber = tkinter.Entry(root, width=140, textvariable=varNumber)entryNumber.place(x=110, y=10, width=140, height=20)#只有开始游戏以后才允许输⼊entryNumber['state'] = 'disabled'#关闭程序时提⽰战绩def closeWindow():message = '本次共玩游戏 {0} 次,猜对 {1} 次!\n欢迎下次再玩!'.format(times.get(), right.get())tkinter.messagebox.showinfo('战绩', message)root.destroy()root.protocol('WM_DELETE_WINDOW', closeWindow)#按钮单击事件处理函数def buttonClick():if button['text']=='Start Game':#每次游戏时允许⽤户⾃定义数值范围#玩家必须输⼊正确的数while True:try:start = tkinter.simpledialog.askinteger('允许的最⼩整数', '最⼩数', initialvalue=1)breakexcept:passwhile True:try:end = tkinter.simpledialog.askinteger('允许的最⼤整数', '最⼤数', initialvalue=10)breakexcept:pass#在⽤户⾃定义的数值范围内⽣成随机数currentNumber.set(random.randint(start, end))#⽤户⾃定义⼀共允许猜⼏次#玩家必须输⼊正确的整数while True:try:t = tkinter.simpledialog.askinteger('最多允许猜⼏次?', '总次数', initialvalue=3)totalTimes.set(t)breakexcept:pass#已猜次数初始化为0already.set(0)button['text'] = '剩余次数:' + str(t)#把⽂本框初始化为0varNumber.set('0')#允许⽤户开始输⼊整数entryNumber['state'] = 'normal'#玩游戏的次数加1times.set(times.get() + 1)else:#⼀共允许猜⼏次total = totalTimes.get()#本次游戏的正确答案current = currentNumber.get()#玩家本次猜的数try:x = int(varNumber.get())except:tkinter.messagebox.showerror('抱歉', '必须输⼊整数')returnif x == current:tkinter.messagebox.showinfo('恭喜', '猜对啦')button['text'] = 'Start Game'#禁⽤⽂本框entryNumber['state'] = 'disabled'right.set(right.get() + 1)else:#已猜次数加1already.set(already.get()+1)if x > current:tkinter.messagebox.showerror('抱歉', '猜的数太⼤了')else:tkinter.messagebox.showerror('抱歉', '猜的数太⼩了')#可猜次数⽤完了if already.get()==total:tkinter.messagebox.showerror('抱歉', '游戏结束了,正确的数是:'+str(currentNumber.get())) button['text'] = 'Start Game'#禁⽤⽂本框entryNumber['state'] = 'disabled'else:button['text'] = '剩余次数:' + str(total-already.get())#在窗⼝上创建按钮,并设置事件处理函数button = tkinter.Button(root, text='Start Game', command=buttonClick)button.place(x=10, y=40, width=250, height=20)#启动消息主循环root.mainloop()有时间更改⼀下,感觉还不错哈import tkinterimport mathimport tkinter.messageboximport randomroot =()root.minsize(350,260)root.title('猜数字游戏')number=random.randint(1,20)def say_hello():print('hello,world!')def send_low():tkinter.messagebox.showinfo("messagebox","Your guess is too low.")def check_num():guess=text_guess.get()guess=int(guess)if guess>number:tkinter.messagebox.showinfo("height","Your guess is too height.")if guess < number:tkinter.messagebox.showinfo("low","Your guess is too low.")if guess == number:tkinter.messagebox.showinfo("good","Good job!")def btn_confirm():myName=text_name.get()tkinter.messagebox.showinfo("name",'Well,'+myName+',I am thinking of a number between 1 and 20.') #namelabel=bel(root,text="Wellcome to our game!")label.pack()label_name=bel(root,text="What's your name?")label_name.place(x=10,y=60)text_name=tkinter.Entry(root,width=20)text_name.place(x=10,y=90)btnOK=tkinter.Button(root,text="OK",command=btn_confirm)btnOK.place(x=200,y=90,height=28)#inputlabel_guess=bel(root,text='Take a guess:')label_guess.place(x=10,y=150)text_guess=tkinter.Entry(root,width=10)text_guess.place(x=90,y=150)btnCheck=tkinter.Button(root,text='Guess',command=check_num)btnCheck.place(x=200,y=150,width=45,height=28)root.mainloop()计算2。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计一个GUI猜数字游戏程序
该游戏可以由程序随机产生四个0到9之间的整数,且不重复。
玩游戏者通过由用户输入四个数字来匹配上面所产生的数字。
A表示位置正确且数字正确,B表示数字正确而位置不正确。
假设随机数据为3792 时,分析如下
数据:3792
输入:1234 0A2B
输入:5678 0A1B
输入:0867 0A1B
输入:9786 1A1B
输入:1794 2A0B
输入:2793 2A2B
输入:3792 4A0B
1、设计一个GUI猜数字游戏程序:
package cn.scelong.guessnum;//可以删除掉
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class GuessNumberGUI extends JFrame{
private JTextField inputTxt;
private JTextField dispTxt;
private JButton okButton;
private JButton resetBtn;
private int randomNum; //随机产生的随机数
private Random randGenerator; //随机数生成器
public GuessNumberGUI() {
super("Guess Number Game");
this.randGenerator = new Random(9999);
this.randomNum = generateRandomNum();
System.out.println("Construtor"+this.randomNum);
initComponent();
componentAddListener();
}
private int generateRandomNum() {
int guessNum = this.randGenerator.nextInt(9999);
if(guessNum >= 1000){
return guessNum;
}
return generateRandomNum();
}
private void initComponent() {
setLayout(new FlowLayout());
this.inputTxt = new JTextField();
this.dispTxt = new JTextField();
this.okButton = new JButton("确定");
this.resetBtn = new JButton("重新开始");
this.inputTxt.setColumns(6);
this.dispTxt.setColumns(6);
this.dispTxt.setText("显示结果");
add(inputTxt);
add(dispTxt);
add(okButton);
add(resetBtn);
pack();
}
private void componentAddListener(){
this.okButton.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
String input = inputTxt.getText();
generateNumber(input);
}
});
this.resetBtn.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
randomNum = generateRandomNum();
System.out.println("ResetNumber="+randomNum); //test code output }
});
}
private void generateNumber(String input) {
if("".equals(input) || input == null) {
JOptionPane.showMessageDialog(this, "请输入数字");
return ;
}
String result = "";
int aCnt = 0;
int bCnt = 0;
String randNumStr = String.valueOf(this.randomNum);
for(int i=0; i<input.length(); i++){
char ch = input.charAt(i);
for(int j=0; j<randNumStr.length(); j++){
char jch = randNumStr.charAt(j);
if(jch == ch){
bCnt++;
if(i == j){
aCnt++;
bCnt--;
}
}
}
}
result += aCnt+"A"+bCnt+"B";
System.out.println(result);
dispTxt.setText(result);
}
public void showMe(){
setLocation(200, 100);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//运行主函数
public static void main(String[] args){
new GuessNumberGUI().showMe();
}
}。