uioprty 2016-03-23 04:46 采纳率: 0%
浏览 1964
已结题

贪吃蛇数据库连接问题

package ads.com;

import java.awt.Color;

import java.awt.Frame;
import java.awt.Graphics;
enum State{
RUN,DEAD;

}

public class Board extends Frame{

private static final int width = 400;
private static final int height = 300;
public static final int tilewidth = 16;
public static final int tileheight = 16;
public static final int row = 15;
public static final int column = 20;
public static final int xoffset = ((width-column*tilewidth)/2);
public static final int yoffset = ((height-row*tileheight)/2);



private Snake snake;
private Food food;
private State state;

public int getRow(){
    return row;

}

public int getColumn(){
    return column;

}


public Board(String title){
    super(title);
    setSize(width,height);
    setVisible(true);
    setResizable(false);
    setState(State.RUN);
    snake = new Snake();

    food = produceFood();
    addWindowListener(new BoardHandler());
    addKeyListener(new KeyHandler(this,snake));

}

public Snake getSnake(){
    return snake;

}



public void drawDecoration(Graphics g){
    g.setColor(Color.RED);
    g.drawRect(xoffset,yoffset,column*tilewidth,row*tileheight);

}

public void paint(Graphics g){
    switch(state){
        case RUN:
            drawDecoration(g);
            drawSnake(g);
            drawFood(g);
            break;
        case DEAD:
            drawDeadMessage(g);
            break;

    }
}   

public void drawSnake(Graphics g){
    g.setColor(Color.GREEN);
    for(int i=0;i<snake.getLength();i++){
        Body body = snake.getBody(i);
        g.fillRect(body.col*tilewidth+xoffset,body.row*tileheight+yoffset,tilewidth,tileheight);

    }

}

public void drawFood(Graphics g){
    g.setColor(Color.BLUE);
    g.fillRect(food.col*tilewidth+xoffset,food.row*tileheight+yoffset, tilewidth, tileheight);

}

public void drawDeadMessage(Graphics g){
    g.drawString("GGGGGGGGGGGGGGGGGG,your score:"+ snake.score +"press F2 to retry",xoffset,height/2);

}

public Food produceFood(){
    boolean finished = false;
    Food myfood = null;
    while(!finished){
        myfood = new Food();
        finished = true;
        for(int i=0;i<snake.getLength();i++){
            if(snake.getBody(i).col==myfood.col&&snake.getBody(i).row==myfood.row)
                finished = false;

        }



    }
    food = myfood;
    snake.score++;
    return food;

}

public Food getFood(){
    return food;

}

public void setState(State s){
    state = s;

}

}

package ads.com;

public class Body {

public int row;
public int col;


public Body(int row,int col){
    this.row = row;
    this.col = col;

}

}

package ads.com;

import java.util.Random;

public class Food extends Body{

public Food(){
    super(0,0);
    Random r = new Random();
    this.row = r.nextInt(Board.row);
    this.col = r.nextInt(Board.column);


}

}

package ads.com;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class KeyHandler extends KeyAdapter{

private Snake snake;
private Board board;
public KeyHandler(Board b,Snake s){
    snake = s;
    board = b;

}



public void keyPressed(KeyEvent e){
    switch(e.getKeyCode()){
        case KeyEvent.VK_UP:
            snake.setNextDirection(Direction.UP);
            break;
        case KeyEvent.VK_DOWN:
            snake.setNextDirection(Direction.DOWN);
            break;
        case KeyEvent.VK_LEFT:
            snake.setNextDirection(Direction.LEFT);
            break;
        case KeyEvent.VK_RIGHT:
            snake.setNextDirection(Direction.RIGHT);
            break;
        case KeyEvent.VK_F2:
            snake.reset();
            board.setState(State.RUN);
            break;

    }

}

}

package ads.com;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class BoardHandler extends WindowAdapter{

public void windowClosing(WindowEvent e){
    System.exit(0);

}

}

package ads.com;

import java.util.ArrayList;
import java.util.List;

enum Direction {
UP, DOWN, LEFT, RIGHT
}

public class Snake {

private List<Body> mybody;
private Direction mydirection;
private Body head;
private Direction nextdirection;
private ScoreTrans st;
public int score;
private boolean flag;

public Snake() {

    mybody = new ArrayList<>();
    st = new ScoreTrans(score);
    reset();

}

public void move(Board b) {

    mydirection = nextdirection;

    switch (mydirection) {
    case UP:
        head = new Body(head.row - 1, head.col);
        break;
    case DOWN:
        head = new Body(head.row + 1, head.col);
        break;
    case LEFT:
        head = new Body(head.row, head.col - 1);
        break;
    case RIGHT:
        head = new Body(head.row, head.col + 1);
        break;
    default:
        head = new Body(0, 0);
        break;

    }
    Food f = b.getFood();
    if(f.row==head.row&&f.col==head.col){

        mybody.add(0,f);
        b.produceFood();


    }
    else{
        mybody.add(0, head);
        mybody.remove(mybody.size() - 1);
    }
    if(checkBodyCollsion()||checkBoundCollsion(b)){
        b.setState(State.DEAD);
        if(!flag)
        {
            st.trans();
            flag = true;
        }
    }
}

public void setNextDirection(Direction d) {
    switch (d) {
    case UP:
        if (mydirection == Direction.DOWN) {
            break;

        } else
            nextdirection = d;
    case DOWN:
        if (mydirection == Direction.UP) {

            break;
        } else
            nextdirection = d;

    case LEFT:
        if (mydirection == Direction.RIGHT) {
            break;
        }
        else nextdirection = d;
    case RIGHT:
        if (mydirection == Direction.LEFT) {
            break;
        }
        else nextdirection = d;

    }
}

public void reset() {
    mybody.clear();
    mybody.add(new Body(7, 4));
    mybody.add(new Body(7, 3));
    mybody.add(new Body(7, 2));
    mybody.add(new Body(7, 1));
    head = mybody.get(0);
    mydirection = Direction.RIGHT;
    nextdirection = Direction.RIGHT;
    score = 0;
    flag = false;

}

public Body getBody(int index) {
    return mybody.get(index);

}

public int getLength() {
    return mybody.size();

}

public boolean checkBodyCollsion(){
    for(int i=1;i<mybody.size()-1;i++){
        if((mybody.get(i).col==head.col)&&(mybody.get(i).row==head.row))
            return true;

    }
    return false;

}

public boolean checkBoundCollsion(Board b){
    if(head.col<0||head.col>=b.column||head.row<0||head.row>=b.row)
        return true;
    return false;
}

public int getScore(){
    return score;
}

}

package ads.com;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class OracleOpen {

private static String driver;
private static String url;
private static String username;
private static String password;

static {
    driver="oracle.jdbc.driver.OracleDriver";
    url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    username="scott";
    password="zhushaowei12";

}

public static Connection open(){

    try {
        Class.forName(driver);
        return DriverManager.getConnection(url,username,password);
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return null;
}

public static void close(Connection conn){
    if(conn!=null){
        try {
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

}

package ads.com;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class ScoreTrans {
private Snake snake;
private String name = "ads";
private int score;

public ScoreTrans(int score){
    this.score = score;

}

public void trans(){

Connection conn = OracleOpen.open();
String sql = "insert into snake values(?,?)";
try {
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setString(1,name);
    pstmt.setInt(2,snake.getScore());
    pstmt.executeUpdate();
} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
OracleOpen.close(conn);

}

}

package ads.com;

public class Updater extends Thread{

private Board myboard;
private Snake snake;

public Updater(Board b,Snake s){
    myboard = b;
    snake = s;

}

public void run(){

    while(true){
        snake.move(myboard);
        myboard.repaint();
        try {
            sleep(100);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

}

package ads.com;

public class Test {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Board board = new Board("snake");


    Updater myupdater = new Updater(board,board.getSnake());

    myupdater.start();

}

}

没加数据库前能正常运行,加了以后发现数据无法存入数据库

  • 写回答

7条回答

  • qq_34396834 2016-03-23 04:50
    关注

    dfhfggggjj

    评论

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示