From ec285a5bff46a50b78647718fb08becaed9326ab Mon Sep 17 00:00:00 2001 From: zyc <767022462@qq.com> Date: Fri, 7 Feb 2020 14:44:10 +0800 Subject: [PATCH] =?UTF-8?q?1.bed=20=E4=BF=AE=E6=AD=A3=E6=B3=A8=E9=87=8A=20?= =?UTF-8?q?2.Hospital=20=E6=96=B0=E5=A2=9E=E6=80=A5=E9=9C=80=E7=97=85?= =?UTF-8?q?=E5=BA=8A=E7=BB=9F=E8=AE=A1=E6=95=B0=203.MyPanel=20update=20bef?= =?UTF-8?q?ore=20fillOval=204.Person=20update=EF=BC=8C=E9=9A=94=E7=A6=BB?= =?UTF-8?q?=E4=B8=AD=E4=BB=8D=E9=9C=80=E5=A4=84=E7=90=86=EF=BC=8CdieMoment?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E5=8C=85=E6=8B=AC=E9=9A=94=E7=A6=BB=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Bed.java | 2 +- src/Hospital.java | 6 ++++-- src/MyPanel.java | 15 ++++++++------- src/Person.java | 10 +++++++--- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/Bed.java b/src/Bed.java index 28d1478..f1cd3d9 100644 --- a/src/Bed.java +++ b/src/Bed.java @@ -13,7 +13,7 @@ public Bed(int x, int y) { } /** - * 是否占用了该床位 + * 是否空闲 */ private boolean isEmpty = true; diff --git a/src/Hospital.java b/src/Hospital.java index 629789a..0886091 100644 --- a/src/Hospital.java +++ b/src/Hospital.java @@ -15,6 +15,7 @@ public class Hospital extends Point { public static final int HOSPITAL_X = 720; public static final int HOSPITAL_Y = 80; + public static int bedInNeed = 0; private int width; private int height = 600; @@ -93,10 +94,11 @@ public Bed pickBed() { * @param bed * @return */ - public Bed returnBed(Bed bed) { + public void returnBed(Bed bed) { if (bed != null) { + beds.remove(bed); bed.setEmpty(true); + beds.add(bed); } - return bed; } } diff --git a/src/MyPanel.java b/src/MyPanel.java index b12c0fa..ac6f989 100644 --- a/src/MyPanel.java +++ b/src/MyPanel.java @@ -37,6 +37,8 @@ public void paint(Graphics g) { return; } for (Person person : people) { + person.update();//对各种状态的市民进行不同的处理 + switch (person.getState()) { case Person.State.NORMAL: { //健康人 @@ -62,11 +64,10 @@ public void paint(Graphics g) { case Person.State.DEATH: { //死亡患者 - g.setColor(new Color(0x000000)); + g.setColor(new Color(0x808080)); break; } } - person.update();//对各种状态的市民进行不同的处理 g.fillOval(person.getX(), person.getY(), 3, 3); } @@ -77,7 +78,7 @@ public void paint(Graphics g) { //显示数据信息 g.setColor(Color.WHITE); - g.drawString("城市总人数:" + Constants.CITY_PERSON_SIZE, captionStartOffsetX, captionStartOffsetY); + g.drawString("城市总人数:" + (Constants.CITY_PERSON_SIZE - PersonPool.getInstance().getPeopleSize(Person.State.DEATH)), captionStartOffsetX, captionStartOffsetY); g.setColor(new Color(0xdddddd)); g.drawString("健康者人数:" + PersonPool.getInstance().getPeopleSize(Person.State.NORMAL), captionStartOffsetX, captionStartOffsetY + captionSize); g.setColor(new Color(0xffee00)); @@ -91,11 +92,11 @@ public void paint(Graphics g) { g.setColor(new Color(0xE39476)); //暂定急需病床数量为 NEED = 确诊发病者数量 - 已隔离住院数量 // - int needBeds = PersonPool.getInstance().getPeopleSize(Person.State.CONFIRMED) - - PersonPool.getInstance().getPeopleSize(Person.State.FREEZE); + /*int needBeds = PersonPool.getInstance().getPeopleSize(Person.State.CONFIRMED) + - PersonPool.getInstance().getPeopleSize(Person.State.FREEZE);*/ - g.drawString("急需病床:" + (needBeds > 0 ? needBeds : 0), captionStartOffsetX, captionStartOffsetY + 6 * captionSize); - g.setColor(new Color(0xccbbcc)); + g.drawString("急需病床:" + Hospital.bedInNeed , captionStartOffsetX, captionStartOffsetY + 6 * captionSize); + g.setColor(new Color(0x808080)); g.drawString("病死人数:" + PersonPool.getInstance().getPeopleSize(Person.State.DEATH), captionStartOffsetX, captionStartOffsetY + 7 * captionSize); g.setColor(new Color(0xffffff)); g.drawString("世界时间(天):" + (int) (worldTime / 10.0), captionStartOffsetX, captionStartOffsetY + 8 * captionSize); diff --git a/src/Person.java b/src/Person.java index 9966830..e3bd46a 100644 --- a/src/Person.java +++ b/src/Person.java @@ -1,3 +1,4 @@ +import javax.net.ssl.HostnameVerifier; import java.util.List; import java.util.Random; @@ -195,12 +196,12 @@ private void action() { public void update() { //@TODO找时间改为状态机 - if (state == State.FREEZE || state == State.DEATH) { - return;//如果已经隔离或者死亡了,就不需要处理了 + if (state == State.DEATH) { + return;//如果已经死亡,就不需要处理了 } //处理已经确诊的感染者(即患者) - if (state == State.CONFIRMED && dieMoment == 0) { + if ((state == State.CONFIRMED || state == State.FREEZE) && dieMoment == 0) { int destiny = new Random().nextInt(10000) + 1;//幸运数字,[1,10000]随机数 if (1 <= destiny && destiny <= (int) (Constants.FATALITY_RATE * 10000)) { @@ -223,6 +224,9 @@ public void update() { if (bed == null) { //没有床位了,报告需求床位数 + if(Hospital.bedInNeed < PersonPool.getInstance().getPeopleSize(State.FREEZE)) { + Hospital.bedInNeed++; + } } else { //安置病人