2024-04-01 02:32:53 | 我爱编程网
贪吃蛇游戏 望采纳
import java.awt.Button;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.*;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Snake extends JFrame implements KeyListener{
int Count=0;
Button[][] grid = new Button[20][20];
ArrayList
Point bean=new Point(-1,-1);//保存随机豆子【坐标】
int Direction = 1; //方向标志 1:上 2:下 3:左 4:右
//构造方法
public Snake()
{
//窗体初始化
this.setBounds(400,300,390,395);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout f=new GridLayout(20,20);
this.getContentPane().setBackground(Color.gray);
this.setLayout(f);
//初始化20*20个按钮
for(int i=0;i<20;i++)
for(int j=0;j<20;j++)
{
grid[i][j]=new Button();
this.add(grid[i][j]);
grid[i][j].setVisible(false);
grid[i][j].addKeyListener(this);
grid[i][j].setBackground(Color.blue);
}
//蛇体初始化
grid[10][10].setVisible(true);
grid[11][10].setVisible(true);
grid[12][10].setVisible(true);
grid[13][10].setVisible(true);
grid[14][10].setVisible(true);
//在动态数组中保存蛇体按钮坐标【行列】信息
snake_list.add(new Point(10,10));
snake_list.add(new Point(11,10));
snake_list.add(new Point(12,10));
snake_list.add(new Point(13,10));
snake_list.add(new Point(14,10));
this.rand_bean();
this.setTitle("总分:0");
this.setVisible(true);
}
//该方法随机一个豆子,且不在蛇体上,并使豆子可见
public void rand_bean(){
Random rd=new Random();
do{
bean.x=rd.nextInt(20);//行
bean.y=rd.nextInt(20);//列
}while(snake_list.contains(bean));
grid[bean.x][bean.y].setVisible(true);
grid[bean.x][bean.y].setBackground(Color.red);
}
//判断拟增蛇头是否与自身有碰撞
public boolean is_cross(Point p){
boolean Flag=false;
for(int i=0;i
if(p.equals(snake_list.get(i) )){
Flag=true;break;
}
}
return Flag;
}
//判断蛇即将前进位置是否有豆子,有返回true,无返回false
public boolean isHaveBean(){
boolean Flag=false;
int x=snake_list.get(0).x;
int y=snake_list.get(0).y;
Point p=null;
if(Direction==1)p=new Point(x-1,y);我爱编程网
if(Direction==2)p=new Point(x+1,y);
if(Direction==3)p=new Point(x,y-1);
if(Direction==4)p=new Point(x,y+1);
if(bean.equals(p))Flag=true;
return Flag;
}
//前进一格
public void snake_move(){
if(isHaveBean()==true){//////////////有豆子吃
Point p=new Point(bean.x,bean.y);//【很重要,保证吃掉的是豆子的复制对象】
snake_list.add(0,p); //吃豆子
grid[p.x][p.y].setBackground(Color.blue);
this.Count++;
this.setTitle("总分:"+Count);
this.rand_bean(); //再产生一个豆子
}else{///////////////////无豆子吃
//取原蛇头坐标
int x=snake_list.get(0).x;
int y=snake_list.get(0).y;
//根据蛇头坐标推算出拟新增蛇头坐标
Point p=null;
if(Direction==1)p=new Point(x-1,y);//计算出向上的新坐标
if(Direction==2)p=new Point(x+1,y);//计算出向下的新坐标
if(Direction==3)p=new Point(x,y-1);//计算出向左的新坐标
if(Direction==4)p=new Point(x,y+1);//计算出向右的新坐标
//若拟新增蛇头碰壁,或缠绕则游戏结束
if(p.x<0||p.x>19|| p.y<0||p.y>19||is_cross(p)==true){
JOptionPane.showMessageDialog(null, "游戏结束!");
System.exit(0);
}
//向蛇体增加新的蛇头坐标,并使新蛇头可见
snake_list.add(0,p);
grid[p.x][p.y].setVisible(true);
//删除原蛇尾坐标,使蛇尾不可见
int x1=snake_list.get(snake_list.size()-1).x;
int y1=snake_list.get(snake_list.size()-1).y;
grid[x1][y1].setVisible(false);
snake_list.remove(snake_list.size()-1);
}
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_UP && Direction!=2) Direction=1;
if(e.getKeyCode()==KeyEvent.VK_DOWN && Direction!=1) Direction=2;
if(e.getKeyCode()==KeyEvent.VK_LEFT && Direction!=4) Direction=3;
if(e.getKeyCode()==KeyEvent.VK_RIGHT && Direction!=3) Direction=4;
}
@Override
public void keyReleased(KeyEvent e) { }
@Override
public void keyTyped(KeyEvent e) { }
public static void main(String[] args) throws InterruptedException {
Snake win=new Snake();
while(true){
win.snake_move();
Thread.sleep(300);
}
}
}
第一题:
import java.util.Scanner;
public class CountDate {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("解放军战士连续作战的小时数:");
int hours = s.nextInt();
System.out.print("解放军战士连续作战");
if(hours <= 0)
System.out.println("解放军战士没奋战啊。。。。。");
if(hours / 24 > 0)
System.out.print((hours / 24) + "天");
if(hours % 24 > 0)
System.out.print((hours % 24) + "小时");
}
}
第二题
import java.util.Scanner;
public class GetNumResult {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = s.nextInt();
for(int i = 1; i <= 10; i ++){
System.out.println(num + " * " + i + " = " + (i * num));
}
}
}
我理解的你的要求就是说~~“客户端输入账户名信息和转账数额信息,然后服务端可以接收到”这样就可以了,不知道有没有理解错。我编了一个最简单、最基本的聊天程序,可以实现基本的聊天功能,所以,当然也能满足你的要求了。
程序中有一个包“aaa”,包中有三个文件:主类liaotian.java,线程xcfasong.java,线程xcjianting.java。
在这里贴出其中的liaotian.java的代码,你如果觉得需要的话可以百度HI联系我,我将剩余的内容都给你(在这里贴的话可能不能全贴上。但你放心,真的是一个非常简单的程序而已,你绝对会用的)。
liaotian.java的代码如下:
package aaa;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JTextArea;
import java.awt.Rectangle;
import java.awt.ComponentOrientation;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JButton;
import java.net.*;
import java.io.*;
public class liaotian extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JTextArea jTextArea = null;
private JScrollPane jScrollPane = null;
private JLabel jLabel = null;
private JLabel jLabel1 = null;
private JTextArea jTextArea1 = null;
private JScrollPane jScrollPane1 = null;
private JButton jButton = null;
////以下为自定义变量:
public static liaotian lt1;
public String strfa=new String(""); ///注意区分=“”和new String("")的区别!!后者才创建了具体的对象!前者没有!
public String strshou=new String(""); // @jve:decl-index=0:
/**
* This is the default constructor
*/
public liaotian() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(459, 443);
this.setResizable(false);
this.setContentPane(getJContentPane());
this.setTitle("番薯聊天");
this.setVisible(true);
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
public void windowOpened(java.awt.event.WindowEvent e) {
xcjianting xjt=new xcjianting();
Thread tjt=new Thread(xjt);
tjt.start();
}
});
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(15, 300, 76, 26));
jLabel1.setFont(new Font("Dialog", Font.BOLD, 18));
jLabel1.setText("我要说:");
jLabel = new JLabel();
jLabel.setBounds(new Rectangle(15, 10, 95, 26));
jLabel.setFont(new Font("Dialog", Font.BOLD, 18));
jLabel.setText("聊天记录:");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJScrollPane(), null);
jContentPane.add(jLabel, null);
jContentPane.add(jLabel1, null);
jContentPane.add(getJScrollPane1(), null);
jContentPane.add(getJButton(), null);
}
return jContentPane;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setRows(0);
jTextArea.setColumns(0);
jTextArea.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
jTextArea.setEnabled(true);
jTextArea.setFont(new Font("Dialog", Font.BOLD, 14));
jTextArea.setEditable(false);
jTextArea.setLineWrap(true);
}
return jTextArea;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new Rectangle(15, 37, 257, 242));
jScrollPane.setViewportView(getJTextArea());
}
return jScrollPane;
}
/**
* This method initializes jTextArea1
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea1() {
if (jTextArea1 == null) {
jTextArea1 = new JTextArea();
jTextArea1.setLineWrap(true);
}
return jTextArea1;
}
/**
* This method initializes jScrollPane1
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane1() {
if (jScrollPane1 == null) {
jScrollPane1 = new JScrollPane();
jScrollPane1.setBounds(new Rectangle(15, 328, 257, 68));
jScrollPane1.setViewportView(getJTextArea1());
}
return jScrollPane1;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(300, 364, 77, 32));
jButton.setFont(new Font("Dialog", Font.BOLD, 18));
jButton.setText("发送");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
strfa=jTextArea1.getText();
xcfasong xfs=new xcfasong();
Thread tfs=new Thread(xfs);
tfs.start();
lt1.shuaxinjta(strfa);
jTextArea1.setText("");
}
});
}
return jButton;
}
////添加程序主入口:
public static void main(String args[]){
lt1=new liaotian();
/*
* //彻底掌握在Eclipse可视化编程中添加主入口方法的步骤:
* 1.定义本类对象(成员变量、Static);
* 2.入口方法赋值;
* 3.原文代码中添加,使“visible”属性为“true”。
*/
}
///添加自定义方法,刷新聊天记录:
public void shuaxinjta(String str){
/////切记:用的是equals,而不是==,==是指引用的比较!!
if (jTextArea.getText().equals("")){
jTextArea.setText(str+"\r\n");
}
else{
jTextArea.setText(jTextArea.getText()+"\r\n"+str+"\r\n");
}
}
} // @jve:decl-index=0:visual-constraint="10,10"
2024-03-02 02:58:47
2024-01-01 09:58:48
2024-03-21 00:22:13
2024-01-26 10:37:53
2024-03-04 07:43:42
2024-01-17 23:29:33