欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-10 12:51:52
本文实例为大家分享了java实现方块赛跑小游戏的具体代码,供大家参考,具体内容如下在一个图形界面上构造两个位于同一起跑线方块,起跑线位于界面靠左位置, a 方块先开始运动,向右移动 50 像素后停止,...

本文实例为大家分享了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;
  }
 }
 }

}

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