「java制作字母游戏思路」打字母游戏设计思路

博主:adminadmin 2022-11-27 18:51:07 71

本篇文章给大家谈谈java制作字母游戏思路,以及打字母游戏设计思路对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

程序设计:简单字母打字游戏(JAVA编写)

/*

游戏开始,从天上掉下10个有标号(字母)的炸弹,

下面有10颗子弹(就是可以按10个字母).

如果所按字母包含在炸弹中,就找到相应的炸弹并

消灭它,消灭后返回继续利用.如果没有就一直飞到天上最后才返回.

*/

import java.net.*;

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

import javax.swing.*;

public class paodan extends Applet implements Runnable,KeyListener

{

private Image bgImage;

private Graphics bg;

static Thread myThread;

static AudioClip ac1,ac2;

static JFrame md;

String Zi26="";

String pd[]={"a","a","a","a","a","a","a","a","a","a"}; //用来存储10个字母做落下的炮弹

String fj[]={"","","","","","","","","",""}; //用来存储10个字母做反击的防空

int x[]=new int[10];

int y[]=new int[10];

//炸弹的坐标

int x1[]=new int[10];

int x2[]=new int[10];

int y1[]=new int[10];

//火箭的坐标

int life=100; //生命

Toolkit KIT=this.getToolkit();

Image paodan=KIT.createImage("paodan.jpg");

Image huojian=KIT.createImage("huojian.jpg");

public paodan() //用来生成一个包含26个英文字母的字符串Zi26

{for (int i=0;i26;i++)

Zi26+=(char)((int)'A'+i);

}

public void cushi() //初始各种数据,如炮弹与火箭的坐标.

{

try

{URL u1=this.getClass().getResource("huishou.wav");

URL u2=this.getClass().getResource("lanjie.wav");

ac1=Applet.newAudioClip(u1);

ac2=Applet.newAudioClip(u2);

}catch(Exception e){}

for (int i=0;i10;i++)

{pd[i]=noRepeat();

x[i]=noHit(i,10);

if (i=5)

y[i]=5+(int)(Math.random()*50);

else

y[i]=60+(int)(Math.random()*50);

x1[i]=220+i*32+1; y1[i]=550;

x2[i]=x1[i];

}

}

public void panduan() //用来判断pd[i]的y值是否要到达屏幕下边,如果是就把Y值变为5,并把所有Y值加3.

{ for(int i=0;i10;i++)

{ if (y[i]=500)

{life--;ac1.play();y[i]=5;}

y[i]+=3;

if (life==0) System.exit(0);

}

y[9]+=3;

md.setTitle("打字训练室 你的生命为"+life+" 提示:白色的字母表示未按,粉红色的表示已按.");

}

public void fk() //防空程序,用来击毁落下的炸弹

{ int i=0,j=0;

for (i=0;i10;i++)

{ if (!fj[i].equals(""))

{

for (j=0;j10;j++)

if (fj[i].equals(pd[j]))

{ if (!(x1[i]=x[j] x1[i]=x[j]+32 || x1[i]+32=x[j] x1[i]+32=x[j]+32))

if (x1[i]x[j])

x1[i]-=4;

else x1[i]+=4;

if (!(y1[i]=y[j] y1[i]=y[j]+32 || y1[i]+32=y[j] y1[i]+32=y[j]+32))

if (y1[i]y[j])

y1[i]-=3;

else y1[i]+=4;

if (y[j]=380 Math.abs(x[j]-x1[i])5)

if (x[j]x1[i]) x1[i]+=5;

else if (x[j]x1[i]) x1[i]-=5;

if (y[j]=380 Math.abs(y[j]-y1[i])5)

if (y[j]y1[i]) y1[i]+=5;

else if (y[j]y1[i]) y1[i]-=5;

if ((x1[i]=x[j] x1[i]=x[j]+32 || x1[i]+32=x[j] x1[i]+32=x[j]+32) (y1[i]=y[j] y1[i]=y[j]+32 || y1[i]+32=y[j] y1[i]+32=y[j]+32))

{life++;ac2.play();pd[j]=noRepeat(); x[j]=noHit(i,10); y[j]=5; x1[i]=x2[i];y1[i]=550;fj[i]="";}

break;

}

if (j==10) y1[i]-=3;

if (y1[i]=5) {y1[i]=550; fj[i]="";}

}

}

}

public void paint(Graphics g)

//根据相应的坐标在屏幕上画炸弹和吃炸弹的娃娃,并保证白色的字母表示未按,粉红色的表示已按

{int i=0,j=0;

g.setFont(new Font("Vrinda",1,21));

for(;ipd.length;i++)

{ for (j=0;jfj.length;j++)

if (pd[i].equals(fj[j]))

{g.setColor(new Color(255,93,55));

g.drawImage(paodan,x[i],y[i],this);

g.drawString(pd[i],x[i]+11,y[i]+20);

break;

}

if (j==fj.length)

{g.setColor(new Color(255,255,255));

g.drawImage(paodan,x[i],y[i],this);

g.drawString(pd[i],x[i]+11,y[i]+20);

}

g.setColor(new Color(255,93,55));

g.drawImage(huojian,x1[i],y1[i],this);

g.drawString(fj[i],x1[i]+10,y1[i]+22);

}

}

//没有按的显红色,按了的显白色

public void keyPressed(KeyEvent k) //当用户按的是字母时,就生成一个防空字母.

{char z=k.getKeyChar();

int i=0,j=0;

if ((z='A' z='Z') || (z='a' z='z'))

{ if (z-32=65) z-=32;

String zc=""+z;

for(;ifj.length;i++)

{ if (zc.equals(fj[i])) break;

} //保证字母不重复

if (i==fj.length)

for(i=0;ifj.length;i++)

if (fj[i].equals("")) {fj[i]=zc;break;}

}

}

public void keyReleased(KeyEvent k){}

public void keyTyped(KeyEvent k){}

public String noRepeat() //生成一个不重复的字母.

{int zc,i;

String xinx;

while(true)

{zc=(int)(Math.random()*26);

xinx=Zi26.substring(zc,zc+1);

for(i=0;i10;i++)

if (pd[i].equals(xinx)) break;

if(i==10) return xinx;

}

}

int noHit(int i,int langth) //让字母保持车距.

{int tmpX,j,k,width=32;

while (true)

{ tmpX=(int)(Math.random()*768)+1;

for(j=0;j10;j++)

{ if (tmpX+widthx[j] || tmpXx[j]+width) continue; //如果欲生成的位置不与当前J所占的位置相交就判断下一个J.

if ((tmpX=x[j] tmpX=x[j]+width) || (tmpX+width=x[j] tmpX+width=x[j]+width)) break;

//如果欲生成的位置与当前x[j]所占据的范围相交就结束循环,重新生成一个起始位置.

}

if (j==10) {return tmpX;}

}

}

public void update(Graphics g)

{if (bgImage==null)

{bgImage=createImage(this.getSize().width,this.getSize().height);

bg=bgImage.getGraphics();

}

bg.setColor(getBackground());

bg.fillRect(0,0,this.getSize().width,this.getSize().height);

//bg.setColor(getForeground());

paint(bg);

g.drawImage(bgImage,0,0,this);

}

public void run() //用线程循环更改Y值,并根据新的坐标在屏幕上重画pd[I];

{

while(true)

{fk();

panduan();

repaint();

try{ myThread.sleep(50); }catch(Exception e) {}

}

}

public static void main(String args[])

{paodan m=new paodan();

md=new JFrame("打字训练室");

md.setSize(800,600);

md.addKeyListener(m);

md.getContentPane().add(m);

m.cushi();

md.setVisible(true);

md.setResizable(false);

myThread=new Thread(m);

myThread.start();

}

}

注:源代码取自编程中国

本人一点建议:其实你这样学Java是没用的,你应该知道你做的项目思想,先做什么后做什么,然后在亲自动手去敲代码!一点建议!

用java写猜字母的小游戏;随机生成几个字母,玩家输入几个数与随机生成的数进行比较。

这个行不 ????

package zhouhu12;

import java.util.Arrays;

import java.util.Scanner;

/**

* 1.难度选项选择;

* 2.随机生成相应数量的字符,并装入数组;

* 3。接受控制台输入的字符并加以比较。输出比较的结果。

* toUpperCase 转换为大写字母 toLowerCase 转换为小写。

*/

public class GuessABC {

public static void main(String[] args) {

int num;

do{

guessGame(generate());

System.out.println("1. 重新开始游戏,2.退出游戏");

Scanner sc=new Scanner(System.in);

num=sc.nextInt();

}while(num==1);

System.out.print("游戏结束,欢迎下次来玩。");

}

public static char[] generate(){

Scanner sc=new Scanner(System.in);

int g;

do{

System.out.println("欢迎进入猜字母游戏,请选择游戏难度等级:1.初级 2.中级 3.高级");

g=sc.nextInt();

}while(g1 || g4);

char arr[]=new char[g];

for(int i=0;ig;i++){

arr[i]=(char)(int)(Math.random()*26+97);

}

return arr;

}

public static void guessGame(char arr[]){

int count=0;

char arr1[]=new char[arr.length];

do{

System.out.println("请输入"+arr.length+"个字母:(输入 0 退出)");

Scanner sca=new Scanner(System.in);

String A=sca.next();

System.out.println(A);

char arr2[]=A.toCharArray();

arr1=Arrays.copyOf(arr2,3);

if(arr1[0]=='0')

break;

System.out.print("答案:");

for(int i=0;iarr.length;i++){

if(arr[i]==arr1[i]){

count++;

System.out.print(arr[i]);

}

else{

System.out.print("*");

}

}

System.out.println();

if(count==arr.length){

System.out.println("恭喜你猜对了");

break;

}

else{

System.out.println("猜对"+count+"个,继续加油。");

}

count=0;

}while(arr1[0]!='0');

}

}

JAVA猜字母游戏

public class GuessingGame {

    public static char[] generate(int level){

     char[] letters = {'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'};

     char[] chs = new char[level];

     boolean[] flag  = new boolean[26];

     for(int i=0;ichs.length;i++){

     int index;

     do{

     index = (int)(Math.random()*26);

     }while(flag[index]);

     chs[i] = letters[index];

     flag[index] = true;

     }

     return chs;

    }

    public static int[] check(char[] chs,char[] input){

     int[] result= new int[2];

     for(int i=0;ichs.length;i++){

     for(int j=0;jinput.length;j++){

     if(chs[i]==input[j]){

     result[0]++;

     if(i==j){

     result[1]++;

     }

     break;

     }

     }

     }

     return result;

    }

public static void main(String[] args) {

int level;

int score;

int count=0;

Scanner scanner = new Scanner(System.in);

System.out.println("请选择游戏等级");

level = scanner.nextInt();

        char[] chs = generate(level);

        System.out.println(Arrays.toString(chs)+"\n猜吧");

        while(true){

         String inputStr = scanner.next().trim().toUpperCase();

         char[] input = inputStr.toCharArray();

         do {

          System.out.println("个数不对,请重新输入");

          inputStr = scanner.next().trim().toUpperCase();

               input = inputStr.toCharArray();

          }while(input.length!=level);

         int[] result = check(chs,input);

         if("EXIT".equals(inputStr)){

         System.out.println("谢谢");

         break;

         }

         if(result[1]==level){

         score = 500-count*10;

         System.out.println("恭喜全对!得分"+score);

         break;

         }else{

         count++;

         System.out.println("总次数"+count+"猜对字母个数"+result[0]+"猜对位置个数"+result[1]);

         }

        

        }

}

}

java打字游戏思路

把在屏幕上出现的字母放进一个Map里

Key和Value都是那个字母

敲键盘时得到那个键

然后到map里去get

非null就是敲对了

至于移动出现那是多线程里的常见功能了,应该没什么难的

用JAVA编写打字游戏

//头文件stdio.h,conio.h,time.hintmain(){//首先打印信息getch();chara,b;intt,s;s=time();//获取系统时间,以秒为单位,存入s中for(;;){t=time();if(t-s=60)break;//假设规定时间是60秒a=(char)rand();//随机生成数字(返回int型,需要强制转换)/*rand每次生成的随机数相同,需要用系统时间初始化随机数生成器,相关内容可以到百度查*/for(a'z')a=(char)rand();//如果不是小写字母,重新生成printf("%c",a);b=getch();if(a==b);//正确elseprintf("\b_");//\b代表backspace,错误时打印_}getch();//结束}//当然,如有兴趣,可以定义两个int型变量,分别记录总字数和敲对的字数

java制作字母游戏思路的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于打字母游戏设计思路、java制作字母游戏思路的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。