好几天没有好好学习了!~~今儿个要崛起了...
实验三 警察抓小偷
(一)、实验目的要求
要求学生熟悉多线程编程,并能使用多线程实现程序,进一步了解和使用awt图形界面。充分的理解多线程的思想。
(二)、实验设备
(三)、实验步骤与内容
定义小偷和警察类,可以用不同的图形来标示警察和小偷,初始化小偷和警察的位置。利用多线程同时调整警察和小偷的坐标,并根据坐标的变化在画面上显示小偷和警察移动路线,当他们之间的距离小于一定的值时,程序终止。
利用多线程模拟警察抓小偷的游戏。使用AWT图形界面模仿警察抓小偷的过程。在图形界面上画出小偷逃跑的路线。警察按小偷逃跑的方向调整追击路线。
代码如下:
1/** *//**
2*title 警察抓小偷(多线程小测试)
3*@author realsmy
4*date 2006-11-1 16:56
5*/
6
7import java.awt.*;
8import javax.swing.*;
9import java.util.*;
10
11//创建警察类
12class Police implements Runnable{
13 private int px,py;
14 public static int zhua = 0;
15 Test t;
16 Police(Test t){
17 this.t = t;
18 px = 30;
19 py = 30;
20 }
21 public void run(){
22 while(true){
23 //synchronized(t){
24 if(zhua == 0){
25 px++;
26 py++;
27 }
28 else{
29 if(px < t.thief.getTx()){
30 px++;
31 }
32 if(py < t.thief.getTy()){
33 py++;
34 }
35 }
36 try{
37 Thread.sleep(50);
38 }catch(InterruptedException e){}
39 //}
40 t.repaint();
41 }
42 }
43 public int getPx(){
44 return px;
45 }
46 public int getPy(){
47 return py;
48 }
49}
50
51//创建小偷类
52class Thief implements Runnable{
53 private int tx,ty;
54 public static int tao = 0;
55 Test t;
56 Thief(Test t){
57 this.t = t;
58 tx = 300;
59 ty = 300;
60 }
61 public void run(){
62 while(true){
63 //synchronized(t){
64 if(tao == 0){
65 tx--;
66 ty--;
67 }
68 else{
69 tx++;
70 }
71 try{
72 Thread.sleep(100);
73 }catch(InterruptedException e){}
74 //}
75 t.repaint();
76 }
77 }
78 public int getTx(){
79 return tx;
80 }
81 public int getTy(){
82 return ty;
83 }
84}
85
86//测试类
87public class Test extends JFrame{
88 private Container c;
89 public Police police;
90 public Thief thief;
91 Thread p,t;
92 int a =0;
93 private Vector vt;
94 Test(){
95 super("老鹰抓小鸡");
96 c = getContentPane();
97
98 vt = new Vector(); //用来存储小偷逃跑坐标
99 police = new Police(this);
100 thief = new Thief(this);
101 p = new Thread(police);
102 t = new Thread(thief);
103 p.start();
104 t.start();
105
106 setSize(400,400);
107 setLocation(200,200);
108 setVisible(true);
109 }
110
111 public void paint(Graphics g){
112 g.setColor(new Color(255, 255, 255));
113 g.fillRect(0, 0, 400, 400);
114 draw_police();
115 draw_thief();
116 draw_guiji();
117 if(Math.hypot(police.getPx()-thief.getTx(), police.getPy()-thief.getTy()) < 80){
118 police.zhua = 1;
119 thief.tao = 1;
120 }
121 if(police.getPx() == thief.getTx() && police.getPy() == thief.getTy()){
122 p.stop();
123 t.stop();
124 try{
125 JOptionPane.showMessageDialog(null,"警察:小样,被我逮到了吧!~哈哈哈哈~");
126 }catch(HeadlessException e){}
127 System.ex
分享到:
相关推荐
这是我大四上学期选修的课程编译原理的实验代码,即使用Java实现PL/0语言的编译器. 功能还不是很完善,但是大体框架已经有了,在添加些代码,多使用一些符合PL/0语法的程序测试一下,修改一些bug,那么它就是一个完美的PL/...
《山东大学软件工程大四编译原理实验报告》是一份深度探讨编译器设计与实现的学术性工作,主要针对PL/0语言进行。在大四这个关键的学习阶段,学生通常需要将理论知识与实际应用相结合,以提高其专业技能。这份实验...
计算机技术+Java+基于Springboot技术的实验室管理系统+适用于毕设。 项目资源适用于大三、大四的同学,可用于毕设参考和练习,也可用于商用。 spring+struts2+hibernate+jquery+js+css等技术 ,项目含有源码、文档、...
【描述】中提到,该Java聊天室是为大四TCP/IP课程设计的实验项目,它实现了基本的聊天功能,包括用户之间的私聊,同时支持多用户在线聊天。当用户上线或下线时,系统会发送通知,还有在线用户列表显示,这些都是网络...
'经实验室功能测试和4S:店实体店试运行,结果表明,系统的客户端和4S店管理后 台均能达到预期功能效果且运行稳定。减少了软件的安装或PC端的使用不便,实现线上线下相结合,销售 与服务分离的模式。 适用群体:大四...
"大三"和"大四"通常指的是大学的年级,可能意味着这个实验是在大学的某个课程中进行的,涉及到对技术稳定性的讨论或者研究。"大"字的重复可能是在强调这个实验的重要性或者规模。 【标签】"jet" 重复的标签再次确认...
10. 实验报告撰写:计科09_WEB实验报告.doc可能包含对以上所有内容的实践总结,包括遇到的问题、解决方法、优化策略以及项目经验分享。 这些知识点构成了一个完整的Web开发学习路径,学生通过理论学习与实践,能...
首先,文档提出了构建“三维四层次”的立体化实验实践教学体系。该体系通过校内实训基地的建立,增设软件开发生产实习环节,模拟企业项目的整个研发流程,包括需求分析、系统设计、详细设计、编码以及项目管理等环节...
大学是java专业,比起后台的工作更喜欢前端,基本上大四开始断断续续的自学前端,毕业之后开始前端开发的工作 大家不要以为我是一个前端大牛,我只是一个小菜鸟罢了现在正处于前端狂热的爱好者所以可能会有些高产 大...
毕业设计开题报告是大四学生进行本科毕业设计的重要步骤,它包括选题基本依据、设计方案等多个部分,旨在详细阐述项目的意义、当前状况以及实施计划。本报告针对的机房课程管理系统是计算机科学与技术专业的一个典型...
在大四毕业设计中使用这样的系统,学生不仅可以学习到实际的软件开发经验,还能深入了解高校科研管理的流程和需求,提升问题解决和项目管理能力。此类项目通常涉及数据库设计、前端界面开发、后端逻辑实现等多个技术...
更新:到这里就结束了,因为疫情原因我们大三下并没有在学校上课,所以诸如硬件实验都取消了,最后考试都只是写了一篇文章说明就交上去了,所以这个仓库就到这里就结束了 更新2:大四基本上就是没课了,有的话也是写...
课程体系则围绕软件开发的生命周期,包括基础理论课程(如计算机科学基础、数据结构、算法设计)、核心技术课程(如Java编程、数据库技术、Web开发)、专业选修课(如人工智能、移动应用开发)和实践课程(如软件...
,个人大四的毕业设计、经导师指导并认可通过的高分设计项目,评审分98.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 1. 实验目标 本项目希望基于...