java代码猜拳游戏相关代码请教

java代码猜拳游戏相关代码请教,第1张

comp是电脑产生的随机数字(电脑出的拳),people 是人出的拳。 因为剪刀石头布只有 1 2 3

。如果电脑的数字比的你刚好大1,就是它比你的大。 如2>1,3>2对应就是(石头大于剪刀,布大于石头)。 但也有可能是剪刀大于布 。 那么剪刀的位子是1 ,布的位子是3 所以当电脑数字减你的数字等于2时 就是(电脑出的布 ,你出的石头这样的情况了)。

所以是if((comp-people)==-1||(comp-people)==2) 这两者结合就是你赢的时候

import javaappletApplet;

import javaappletAudioClip;

import javaawtDimension;

import javaawtFont;

import javaawtToolkit;

import javaxsoundsampledAudioFileFormat;

import javaxsoundsampledAudioSystem;

import javaxswingJFrame;

import javaxswingJPanel;

import javaawtRectangle;

import javaxswingBorderFactory;

import javaxswingJButton;

import javaxswingJOptionPane;

import javaxswingJSlider;

import javaxswingJLabel;

import javaxswingSwingUtilities;

import javaxswingUIManager;

import javaxswingeventChangeEvent;

import javaxswingeventChangeListener;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaawteventKeyAdapter;

import javaawteventKeyEvent;

import javaioFile;

import javautilVector;

public class Frame extends JFrame implements Runnable {

JPanel contentPane;

JPanel jPanel1 = new JPanel();

JButton jButton1 = new JButton();

JSlider jSlider1 = new JSlider();

JLabel jLabel1 = new JLabel();

JButton jButton2 = new JButton();

JLabel jLabel2 = new JLabel();

int count = 1, rapidity = 80; // count 当前进行的个数, rapidity 游标的位置

int zhengque = 0, cuowu = 0;

int rush[] = { 10 ,20 ,30 }; //游戏每关的个数 可以自由添加列 { 10 ,20 ,30 ,40,50}

int rush_count = 0; //记录关数

char list[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',

'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',

'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; //随机出现的数字 可以自由添加

Vector number = new Vector();

String paiduan = "true";

AudioClip Musci_anjian, Music_shibai, Music_chenggong;

public Frame() {

try {

setDefaultCloseOperation(EXIT_ON_CLOSE);

//-----------------声音文件---------------------

Musci_anjian = AppletnewAudioClip(new File("sounds//anjianwav")

toURL());

Music_shibai = AppletnewAudioClip(new File("sounds//shibaiwav")

toURL());

Music_chenggong = AppletnewAudioClip(new File(

"sounds//chenggongwav")toURL());

//---------------------------------------

jbInit();

} catch (Exception exception) {

exceptionprintStackTrace();

}

}

/

Component initialization

@throws javalangException

/

private void jbInit() throws Exception {

contentPane = (JPanel) getContentPane();

contentPanesetLayout(null);

setSize(new Dimension(588, 530));

setTitle("Frame Title");

jPanel1setBorder(BorderFactorycreateEtchedBorder());

jPanel1setBounds(new Rectangle(4, 4, 573, 419));

jPanel1setLayout(null);

jButton1setBounds(new Rectangle(277, 442, 89, 31));

jButton1setText("开始");

jButton1addActionListener(new Frame1_jButton1_actionAdapter(this));

jSlider1setBounds(new Rectangle(83, 448, 164, 21));

jSlider1setMaximum(100);

jSlider1setMinimum(1);

jSlider1setValue(50);

jLabel1setText("速度");

jLabel1setBounds(new Rectangle(35, 451, 39, 18));

jButton2setBounds(new Rectangle(408, 442, 89, 31));

jButton2setText("结束");

jButton2addActionListener(new Frame1_jButton2_actionAdapter(this));

jLabel2setText("第一关:100个");

jLabel2setBounds(new Rectangle(414, 473, 171, 21));

contentPaneadd(jPanel1);

contentPaneadd(jButton2);

contentPaneadd(jButton1);

contentPaneadd(jSlider1);

contentPaneadd(jLabel1);

contentPaneadd(jLabel2);

thisaddKeyListener(new MyListener());

jButton1addKeyListener(new MyListener());

jSlider1addKeyListener(new MyListener());

jSlider1addChangeListener(new ChangeListener() {

public void stateChanged(ChangeEvent e) {

rapidity = jSlider1getValue();

}

});

}

public void run() {

numberclear();

zhengque = 0;

cuowu = 0;

paiduan = "true";

while (count <= rush[rush_count]) {

try {

Thread t = new Thread(new Tthread());

tstart();

count += 1;

Threadsleep(1000 + (int) (Mathrandom() 2000)); // 生产下组停顿时间

// 最快1快最慢2秒

} catch (InterruptedException e) {

eprintStackTrace();

}

}

while (true) { // 等待最后一个字符消失

if (numbersize() == 0) {

break;

}

}

if (zhengque == 0) { // 为了以后相除如果全部正确或者错误就会出现错误 所以

zhengque = 1;

}

if (cuowu == 0) {

cuowu = 1;

}

if (paiduanequals("true")) { // 判断是否是自然结束

if (zhengque / cuowu >= 2) {

JOptionPaneshowMessageDialog(null, "恭喜你过关了");

rush_count += 1; // 自动加1关

if (rush_count < rushlength) {

if (rapidity > 10) { // 当速度大于10的时候在-5提加速度怕速度太快

rapidity -= 5; // 速度自动减10毫秒

jSlider1setValue(rapidity); // 选择位置

}

Thread t = new Thread(this);

tstart();

} else {

JOptionPaneshowMessageDialog(null, "牛B你通关了");

rush_count = 0;

count = 0;

}

} else {

JOptionPaneshowMessageDialog(null, "请再接再励");

rush_count = 0;

count = 0;

}

} else {

rush_count = 0;

count = 0;

}

}

public void jButton1_actionPerformed(ActionEvent e) {

Thread t = new Thread(this);

tstart();

}

public void jButton2_actionPerformed(ActionEvent e) {

count = rush[rush_count] + 1;

paiduan = "flase";

}

class Tthread implements Runnable {

public void run() {

boolean fo = true;

int Y = 0, X = 0;

JLabel show = new JLabel();

showsetFont(new javaawtFont("宋体", FontPLAIN, 33));

jPanel1add(show);

X = 10 + (int) (Mathrandom() 400);

String parameter = list[(int) (Mathrandom() listlength)] + "";

Bean bean = new Bean();

beansetParameter(parameter);

beansetShow(show);

numberadd(bean);

showsetText(parameter);

while (fo) {

// ---------------------数字下移--------------------

showsetBounds(new Rectangle(X, Y += 2, 33, 33));

try {

Threadsleep(rapidity);

} catch (InterruptedException e) {

eprintStackTrace();

}

if (Y >= 419) {

fo = false;

for (int i = numbersize() - 1; i >= 0; i--) {

Bean bn = ((Bean) numberget(i));

if (parameterequalsIgnoreCase(bngetParameter())) {

cuowu += 1;

jLabel2setText("正确:" + zhengque + "个,错误:" + cuowu

+ "个");

numberremoveElementAt(i);

Music_shibaiplay();

break;

}

}

}

}

}

}

class MyListener extends KeyAdapter {

public void keyPressed(KeyEvent e) {

String uu = egetKeyChar() + "";

for (int i = 0; i < numbersize(); i++) {

Bean bean = ((Bean) numberget(i));

if (uuequalsIgnoreCase(beangetParameter())) {

zhengque += 1;

numberremoveElementAt(i);

beangetShow()setVisible(false);

jLabel2setText("正确:" + zhengque + "个,错误:" + cuowu + "个");

Music_chenggongplay();

break;

}

}

Musci_anjianplay();

}

}

public static void main(String[] args) {

try {

UIManagersetLookAndFeel(UIManagergetSystemLookAndFeelClassName());

} catch (Exception exception) {

exceptionprintStackTrace();

}

Frame frame = new Frame();

Dimension screenSize = ToolkitgetDefaultToolkit()getScreenSize();

Dimension frameSize = framegetSize();

if (frameSizeheight > screenSizeheight) {

frameSizeheight = screenSizeheight;

}

if (frameSizewidth > screenSizewidth) {

frameSizewidth = screenSizewidth;

}

framesetLocation((screenSizewidth - frameSizewidth) / 2,

(screenSizeheight - frameSizeheight) / 2);

framesetVisible(true);

}

}

class Frame1_jButton2_actionAdapter implements ActionListener {

private Frame adaptee;

Frame1_jButton2_actionAdapter(Frame adaptee) {

thisadaptee = adaptee;

}

public void actionPerformed(ActionEvent e) {

adapteejButton2_actionPerformed(e);

}

}

class Frame1_jButton1_actionAdapter implements ActionListener {

private Frame adaptee;

Frame1_jButton1_actionAdapter(Frame adaptee) {

thisadaptee = adaptee;

}

public void actionPerformed(ActionEvent e) {

adapteejButton1_actionPerformed(e);

}

}

class Bean {

String parameter = null;

JLabel show = null;

public JLabel getShow() {

return show;

}

public void setShow(JLabel show) {

thisshow = show;

}

public String getParameter() {

return parameter;

}

public void setParameter(String parameter) {

thisparameter = parameter;

}

}

public class ShuDu {

/存储数字的数组/

static int[][] n = new int[9][9];

/生成随机数字的源数组,随机数字从该数组中产生/

static int[] num = {1,2,3,4,5,6,7,8,9};

public static void main(String[] args) {

//生成数字

for(int i = 0;i < 9;i++){

//尝试填充的数字次数

int time = 0;

//填充数字

for(int j = 0;j < 9;j++){

//产生数字

n[i][j] = generateNum(time);

//如果返回值为0,则代表卡住,退回处理

//退回处理的原则是:如果不是第一列,则先倒退到前一列,否则倒退到前一行的最后一列

if(n[i][j] == 0){

//不是第一列,则倒退一列

if(j > 0){

j-=2;

continue;

}else{//是第一列,则倒退到上一行的最后一列

i--;

j = 8;

continue;

}

}

//填充成功

if(isCorret(i,j)){

//初始化time,为下一次填充做准备

time = 0;

}else{ //继续填充

//次数增加1

time++;

//继续填充当前格

j--;

}

}

}

//输出结果

for(int i = 0;i < 9;i++){

for(int j = 0;j < 9;j++){

Systemoutprint(n[i][j] + " ");

}

Systemoutprintln();

}

}

/

是否满足行、列和3X3区域不重复的要求

@param row 行号

@param col 列号

@return true代表符合要求

/

public static boolean isCorret(int row,int col){

return (checkRow(row) & checkLine(col) & checkNine(row,col));

}

/

检查行是否符合要求

@param row 检查的行号

@return true代表符合要求

/

public static boolean checkRow(int row){

for(int j = 0;j < 8;j++){

if(n[row][j] == 0){

continue;

}

for(int k =j + 1;k< 9;k++){

if(n[row][j] == n[row][k]){

return false;

}

}

}

return true;

}

/

检查列是否符合要求

@param col 检查的列号

@return true代表符合要求

/

public static boolean checkLine(int col){

for(int j = 0;j < 8;j++){

if(n[j][col] == 0){

continue;

}

for(int k =j + 1;k< 9;k++){

if(n[j][col] == n[k][col]){

return false;

}

}

}

return true;

}

/

检查3X3区域是否符合要求

@param row 检查的行号

@param col 检查的列号

@return true代表符合要求

/

public static boolean checkNine(int row,int col){

//获得左上角的坐标

int j = row / 3 3;

int k = col /3 3;

//循环比较

for(int i = 0;i < 8;i++){

if(n[j + i/3][k + i % 3] == 0){

continue;

}

for(int m = i+ 1;m < 9;m++){

if(n[j + i/3][k + i % 3] == n[j + m/3][k + m % 3]){

return false;

}

}

}

return true;

}

/

产生1-9之间的随机数字

规则:生成的随机数字放置在数组8-time下标的位置,随着time的增加,已经尝试过的数字将不会在取到

说明:即第一次次是从所有数字中随机,第二次时从前八个数字中随机,依次类推,

这样既保证随机,也不会再重复取已经不符合要求的数字,提高程序的效率

这个规则是本算法的核心

@param time 填充的次数,0代表第一次填充

@return

/

public static int generateNum(int time){

//第一次尝试时,初始化随机数字源数组

if(time == 0){

for(int i = 0;i < 9;i++){

num[i] = i + 1;

}

}

//第10次填充,表明该位置已经卡住,则返回0,由主程序处理退回

if(time == 9){

return 0;

}

//不是第一次填充

//生成随机数字,该数字是数组的下标,取数组num中该下标对应的数字为随机数字

int ranNum = (int)(Mathrandom() (9 - time));

//把数字放置在数组倒数第time个位置,

int temp = num[8 - time];

num[8 - time] = num[ranNum];

num[ranNum] = temp;

//返回数字

return num[8 - time];

}

}

贪吃蛇

import javaawt;

import javaawtevent;

public class GreedSnake //主类

{

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

new MyWindow();

}

}

class MyPanel extends Panel implements KeyListener,Runnable//自定义面板类,继承了键盘和线程接口

{

Button snake[]; //定义蛇按钮

int shu=0; //蛇的节数

int food[]; //食物数组

boolean result=true; //判定结果是输 还是赢

Thread thread; //定义线程

static int weix,weiy; //食物位置

boolean t=true; //判定游戏是否结束

int fangxiang=0; //蛇移动方向

int x=0,y=0; //蛇头位置

MyPanel()

{

setLayout(null);

snake=new Button[20];

food=new int [20];

thread=new Thread(this);

for(int j=0;j<20;j++)

{

food[j]=(int)(Mathrandom()99);//定义20个随机食物

}

weix=(int)(food[0]01)60; //十位60为横坐标

weiy=(int)(food[0]%10)40; //个位40为纵坐标

for(int i=0;i<20;i++)

{

snake[i]=new Button();

}

add(snake[0]);

snake[0]setBackground(Colorblack);

snake[0]addKeyListener(this); //为蛇头添加键盘监视器

snake[0]setBounds(0,0,10,10);

setBackground(Colorcyan);

}

public void run() //接收线程

{

while(t)

{

if(fangxiang==0)//向右

{

try

{

x+=10;

snake[0]setLocation(x, y);//设置蛇头位置

if(x==weix&&y==weiy) //吃到食物

{

shu++;

weix=(int)(food[shu]01)60;

weiy=(int)(food[shu]%10)40;

repaint(); //重绘下一个食物

add(snake[shu]); //增加蛇节数和位置

snake[shu]setBounds(snake[shu-1]getBounds());

}

threadsleep(100); //睡眠100ms

}

catch(Exception e){}

}

else if(fangxiang==1)//向左

{

try

{

x-=10;

snake[0]setLocation(x, y);

if(x==weix&&y==weiy)

{

shu++;

weix=(int)(food[shu]01)60;

weiy=(int)(food[shu]%10)40;

repaint();

add(snake[shu]);

snake[shu]setBounds(snake[shu-1]getBounds());

}

threadsleep(100);

}

catch(Exception e){}

}

else if(fangxiang==2)//向上

{

try

{

y-=10;

snake[0]setLocation(x, y);

if(x==weix&&y==weiy)

{

shu++;

weix=(int)(food[shu]01)60;

weiy=(int)(food[shu]%10)40;

repaint();

add(snake[shu]);

snake[shu]setBounds(snake[shu-1]getBounds());

}

threadsleep(100);

}

catch(Exception e){}

}

else if(fangxiang==3)//向下

{

try

{

y+=10;

snake[0]setLocation(x, y);

if(x==weix&&y==weiy)

{

shu++;

weix=(int)(food[shu]01)60;

weiy=(int)(food[shu]%10)40;

repaint();

add(snake[shu]);

snake[shu]setBounds(snake[shu-1]getBounds());

}

threadsleep(100);

}

catch(Exception e){}

}

int num1=shu;

while(num1>1)//判断是否咬自己的尾巴

{

if(snake[num1]getBounds()x==snake[0]getBounds()x&&snake[num1]getBounds()y==snake[0]getBounds()y)

{

t=false;

result=false;

repaint();

}

num1--;

}

if(x<0||x>=thisgetWidth()||y<0||y>=thisgetHeight())//判断是否撞墙

{

t=false;

result=false;

repaint();

}

int num=shu;

while(num>0) //设置蛇节位置

{

snake[num]setBounds(snake[num-1]getBounds());

num--;

}

if(shu==15) //如果蛇节数等于15则胜利

{

t=false;

result=true;

repaint();

}

}

}

public void keyPressed(KeyEvent e) //按下键盘方向键

{

if(egetKeyCode()==KeyEventVK_RIGHT)//右键

{

if(fangxiang!=1)//如果先前方向不为左

fangxiang=0;

}

else if(egetKeyCode()==KeyEventVK_LEFT)

{ if(fangxiang!=0)

fangxiang=1;

}

else if(egetKeyCode()==KeyEventVK_UP)

{ if(fangxiang!=3)

fangxiang=2;

}

else if(egetKeyCode()==KeyEventVK_DOWN)

{ if(fangxiang!=2)

fangxiang=3;

}

}

public void keyTyped(KeyEvent e)

{

}

public void keyReleased(KeyEvent e)

{

}

public void paint(Graphics g) //在面板上绘图

{

int x1=thisgetWidth()-1;

int y1=thisgetHeight()-1;

gsetColor(Colorred);

gfillOval(weix, weiy, 10, 10);//食物

gdrawRect(0, 0, x1, y1); //墙

if(t==false&&result==false)

gdrawString("GAME OVER!", 250, 200);//输出游戏失败

else if(t==false&&result==true)

gdrawString("YOU WIN!", 250, 200);//输出游戏成功

}

}

class MyWindow extends Frame implements ActionListener//自定义窗口类

{

MyPanel my;

Button btn;

Panel panel;

MyWindow()

{

super("GreedSnake");

my=new MyPanel();

btn=new Button("begin");

panel=new Panel();

btnaddActionListener(this);

paneladd(new Label("begin后请按Tab键选定蛇"));

paneladd(btn);

paneladd(new Label("按上下左右键控制蛇行动"));

add(panel,BorderLayoutNORTH);

add(my,BorderLayoutCENTER);

setBounds(100,100,610,500);

setVisible(true);

validate();

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

Systemexit(0);

}

});

}

public void actionPerformed(ActionEvent e)//按下begin按钮

{

if(egetSource()==btn)

{

try

{

mythreadstart(); //开始线程

myvalidate();

}

catch(Exception ee){}

}

}

}

以上就是关于java代码猜拳游戏相关代码请教全部的内容,包括:java代码猜拳游戏相关代码请教、求java小游戏源代码、Java数独游戏代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9361577.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存