免费java游戏代码大全(编程一个最简单游戏代码)

本文实例为大家分享了Java实现方块赛跑小游戏的具体代码,供大家参考,具体内容如下

在一个图形界面上构造两个位于同一起跑线方块,起跑线位于界面靠左位置, A 方块先开始运动,向右移动 50 像素后停止,B 方块开始运动,向右移动 100 像素后停 止,A 方块继续向右运动 100 像素后停止,B 方块开始运动,如此循环接替执行,直至 某一个方块到达终点,界面显示该方块胜利信息。

1) 自定义一个threadA,ThreadB, ThreadFrame类(均继承自Thread)。

2) 定义全局变量,方块的位置,总长度,冠军,睡眠时间等,布尔值方块等待变量、游戏继续变量、绘图变量

3) ThreadA(ThreadB):等待waitA(waitB)变量释放,即:等待另一个方块更新完位置;然后随机产生要移动的长度,检查运动后位置与总长度的关系,以此判断游戏是否结束。更新位置信息,更改绘图变量,通知绘图线程重绘。自锁本身,释放另一个方块线程。

4) ThreadFrame:创建类对象,重写run函数,等待绘图变量的命令。接到绘图命令,重绘,判断游戏释放结束,重置绘图命令。

5) 构造函数,paint函数绘制,并进行游戏是否结束的判断,若结束,则打印冠军是谁,退出

6) 主函数,定义threadA,ThreadB, ThreadFrame类的对象,运行。用jion函数等待子线程的结束。

import java.awt.*;
import javax.swing.*;

public class four3 extends JFrame {
 // 全局变量
 static int positionA = 50, positionB = 50, distanceAll = 1600;
 static int RecWidth = 50, RecHeight = 50;
 static char winner;
 static long sleeptime = 300;
 static boolean waitA = true, waitB = true, gaming = true, unrepaint = true;

 //构造函数
 public four3() {
 setTitle("多线程:方块赛跑");
 setBackground(Color.WHITE);
 setSize(1600, 500);
 setLocation(0, 200);
 setResizable(false);
 setVisible(true);
 setDefaultCloseOperation(EXIT_ON_CLOSE);
 }

 //绘图函数
 public void paint(Graphics g) {
 // TODO Auto-generated method stub
 g.clearRect(0, 0, 1600, 900);
 g.setColor(Color.RED);
 g.fillRect(positionA - 50, 100, RecWidth, RecHeight);
 g.setColor(Color.BLUE);
 g.fillRect(positionB - 50, 300, RecWidth, RecHeight);

 if (!gaming) {
  g.setFont(new Font("宋体", ALLBITS, 50));
  if (winner == 'A') {
  g.setColor(Color.RED);
  g.drawString(new String("Winner Is The Red One!"), 550, 250);
  } else if (winner == 'B') {
  g.setColor(Color.BLUE);
  g.drawString(new String("Winner Is The Blue One!"), 550, 250);
  }
 }
 }

 public static void main(String[] args) {
 waitA = false;
 waitB = true;
 unrepaint = false;

 threadframe tf = new threadframe();
 threadA tA = new threadA();
 threadB tB = new threadB();

 tf.start();
 tA.start();
 tB.start();

 try {
  tf.join();
  tA.join();
  tB.join();
 } catch (Exception e) {
  // TODO: handle exception
 }
 return;
 }

 //红色方块线程
 public static class threadA extends Thread {

 public void run() {
  while (gaming) {

  while (waitA) {
   if (!gaming)return;
   System.out.print("");
  }

  try {
   sleep(sleeptime);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  int distance = (int) (Math.random() * 100000) % 100;
  positionA += distance;
  if (positionA >= distanceAll) {
   positionA = distanceAll;
   unrepaint = false;
   gaming = false;
   winner = 'A';
  }
  unrepaint = false;
  waitA = true;
  waitB = false;
  }
 }
 }

 //蓝色方块线程
 public static class threadB extends Thread {

 public void run() {
  while (gaming) {

  while (waitB) {
   if (!gaming)return;
   System.out.print("");
  }

  try {
   sleep(sleeptime);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  int distance = (int) (Math.random() * 100000) % 100;
  positionB += distance;

  if (positionB >= distanceAll) {
   positionB = distanceAll;
   unrepaint = false;
   gaming = false;
   winner = 'B';
  }
  unrepaint = false;
  waitB = true;
  waitA = false;
  }
 }
 }

 //框架刷新线程
 public static class threadframe extends Thread {
 four3 jiemian = new four3();

 public void run() {
  while (gaming) {
  while (unrepaint) {
   if (!gaming)return;
   System.out.print("");
  }
  jiemian.repaint();
  unrepaint = true;
  }
 }
 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(5)

大家都在看

  • 苹果6忘记密码怎么恢复出厂设置(苹果6s忘记密码了怎么解开)

    1、第1步打开手机中的设置,第2步在设置中我们找到通用点击打开,第3步在最下方我们找到还原; 2、第4步这里我们可以还原所有设置,或者是抹掉所有内容和设置,进行选择 还原所有设置,…

    2022年5月29日
  • 圆周率100位(圆周率100位口诀表)

    圆周率是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。 1、圆周率前一百位速记顺口溜 π=3.14159 26535 89793 23846…

    2022年5月18日
  • 推荐十大顶级复刻手表工厂,看看哪个做得最好

    给大家科普顶级复刻手表最靠谱的商家,看看哪个最好?顶级复刻手表在哪里买,复刻手表向生产厂商购买,向手表商购买,这是常见的购买方法。手表专卖店、专柜或者正规的复刻手表店铺都可以买到复…

    2022年7月5日 投稿
  • 高血压怎么调理才能彻底根除(单纯性高血压怎么治疗好)

    高血压发病率、致残率和死亡率极高,若一直放任不管可引发脑梗、心肌梗死和血管瘤以及血管破裂等,甚至会威胁生命。现如今,没有任何方法能彻底根治高血压,只能通过服用药物和生活干预的方式来…

    2022年6月22日
  • 宋朝诗人有哪些(宋朝最伟大的10位诗人)

    宋词以姹紫嫣红、千姿百态的风貌神情,与唐诗争奇,与元曲斗妍,历来与唐诗并称双绝,都代表一代文学之胜。 在古代文学的阆苑里,它是一块芬芳绚丽的园圃。 那些令人心旷神怡的词句,读来唇齿…

    2022年5月23日
  • 异火排行榜(大主宰异火排行榜)

    《斗破苍穹》漫画的进度相对于动画来说,那是快了非常多。截止至目前为止,漫画中已出现9种异火,分别在不同人的手中。拥有最多异火的人是萧炎,身怀4种异火。萧薰儿拥有的异火排名最高,在异…

    2022年6月10日 投稿
  • 雷克萨斯越野车报价(雷克萨斯越野车报价570)

    众所周知,无论是丰田的普拉多还是丰田的陆巡,都与雷克萨斯有着不解之缘,其实小伙伴们都知道,后者都有前者的精装版,比如普拉多与GX450,在比如丰田陆巡和LX570,两者都是相辅相成…

    2022年3月19日 投稿
  • 什么鱼最贵(世界上最贵的鱼是什么鱼)

    你喜欢吃鱼吗? 你吃过最贵的鱼有多贵? 今天,我们就来聊聊世界上最贵的那些食用鱼,看看哪些鱼是你吃过的吧! 蓝鳍金枪鱼 蓝鳍金枪鱼是迄今为止世界上最贵的鱼。 蓝鳍金枪鱼的高价和日本…

    2022年5月25日 投稿
  • 如何给文件夹加密(给文件夹加密最简单的方法)

    电脑使用久了,肯定有很多文件是不想给别人看到的,如果从事特殊行业的,某些机密文件也是需要加密起来的。如果你也有这些只希望自己能看到并使用,不希望别人访问的文件夹,那么就需要一个好用…

    2022年6月10日 投稿
  • 1米是多少毫米(1分米是多少毫米)

    认识多位数笔记 1、怎样读数。 一、先分级,再从最高级开始读起,读完亿级加上亿,读完万级加上万,最后读个级。 二、关于0的读法,每级末尾的0都不读,每级开头的0、每级中间的0都要读…

    2022年5月28日
品牌推广 在线咨询
返回顶部