導航:首頁 > 編程語言 > javaweb開發源碼

javaweb開發源碼

發布時間:2024-12-18 20:16:59

java web伺服器 源碼放哪個位置

源碼?還是編譯好的 class 文件,如果是 class 文件的話,在 tomcat 下放在 webapps 下即可

② 跪求停車場管理系統源代碼,注意是javaweb


import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/*********************************
* 停車場管理
* author zhang
*2013-12-13
********************************/
public class CarStopManager {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

System.out.println("請入車牌號:");
String carno = sc.next();
CarStopManager carStopManager = new CarStopManager();
carStopManager.setCarNo(carno);//設置車牌號

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sdate = format.format(new Date());
System.out.println("當前時間(入場時間)是: "+sdate);

System.out.println("需要開出車場嗎?yes/no:");
String yesno = sc.next();

if(yesno.equals("yes")){
String edate = format.format(new Date());
System.out.println("出場時間是: "+edate);
//計算方法
carManager(2, sdate, edate,carStopManager);
}
}
/**
* 計算方法
*/
public static void carManager(int type,String starTime,
String endTime,CarStopManager carStopManager){

if(type==1){//按月收費
System.out.println("如若沒有繳納月費請繳納800元,如若繳納將不再提示!");
}else{
/**
* 一般不會有停車幾個月的吧?先不考慮停車幾年或者幾個月的
*/
String sDay = starTime.substring(8,10);//入場日期(天)
String sHour = starTime.substring(11, 13);//入場小時
String sMM = starTime.substring(14,16);//入場分鍾

String eDay = starTime.substring(8,10);//出場日期(天)
String eHour = endTime.substring(11, 13);//出廠小時
String eMM = endTime.substring(14,16);//出廠分鍾

float money = 0;//需繳納的費用
int shour = Integer.parseInt(sHour);
int ehour = Integer.parseInt(eHour);
int smm = Integer.parseInt(sMM);
int emm = Integer.parseInt(eMM);
int rehour = 0;//停車幾個小時

if(sDay.equals(eDay)){//同一天
//當天6點到20點之間
if((shour>=6 && shour<=20)){
if(ehour - shour<=6){//6個小時之內
rehour = (ehour - shour)*60+(emm - smm);//停車多少分鍾
//需要繳納的費用 前15分鍾免費 以後每15分鍾1.5元
money = (rehour/15-15)*1.5f;
}else{
int hour = ehour - shour -6;//6小時除外剩餘小時數
rehour = 6*60+(emm - smm);//停車多少分鍾
//前15分鍾免費 以後每15分鍾1.5元 超過6小時15分鍾2元
money = ((rehour/15-15)*1.5f)+(hour*60/2);
}
}
}else{//跨天 20點到 6點之間
//todo
}
System.out.println("您的車牌號是:"+carStopManager.getCarNo()+"; " +
"您此次停車花費的費用是: "+money+"元");
}
}

/**
* bean屬性
*/
private String carNo;//車牌號

private String startTime;//入場時間

private String endTime;//出場時間
/**
* 無參構造
*/
public CarStopManager(){
super();
}
/**
* 有參數構造
* @param carNo
* @param startTime
* @param endTime
*/
public CarStopManager(String carNo, String startTime, String endTime) {
super();
this.carNo = carNo;
this.startTime = startTime;
this.endTime = endTime;
}
/**
* 設置get方法
* @return
*/
public String getCarNo() {
return carNo;
}
/**
* 設置set方法
* @param carNo
*/
public void setCarNo(String carNo) {
this.carNo = carNo;
}

public String getStartTime() {
return startTime;
}

public void setStartTime(String startTime) {
this.startTime = startTime;
}

public String getEndTime() {
return endTime;
}

public void setEndTime(String endTime) {
this.endTime = endTime;
}

}

③ JAVA 編譯後WEB項目 源碼沒有了 怎麼可以添加新功能求各位高手指點,小弟不懈感激

看你是什麼樣的功能吧。
有可能是這樣的。對方將原碼編譯成一個jar文件放到web-inf/lib下。
他們需要你做的功能完全是新的,對即有的不會有影響。
如果是這樣,那你需要知道你要繼承什麼樣的介面來做實現。這個需要對方提供相應的資料。

如果是改動即有的功能,沒有源碼,做不了。
雖然可以反編譯代碼,但反編譯的也不是完全都准確的,有些語句解析的不正確,最常見的就是異常處理的反編譯。

總得來說,沒有源碼是很不方便的。

④ java源碼解析

如何快速讀懂項目源碼javaWeb

一:學會如何讀一個JavaWeb項目源代碼步驟:表結構-web.xml-mvc-db-spring

ioc-log-代碼

1、先賣祥了解項目資料庫的表結構,這個方面是最容易忘記的,有時候我們只顧著看每一個方法是怎麼進行的,卻沒

有去了解資料庫之間的主外鍵關聯。其實如果先了解資料庫表結構,再去看一個方法的實現會更加容易。

2、然後需要過一遍web.xml,知道項目中用到了什麼攔

截器,監聽器,過濾器,擁有哪些配置文件。如果是攔截器,一般負責過濾請求,進行AOP等;如果是監可能是定時任務,初始化任務;配置文件有如使用了spring

後的讀取mvc相關,db相關,service相關,aop相關的文件。

3、查看攔截器,監聽器代碼,知道攔截了什麼請求,這

個類完成了怎樣的工作。有的人就是因為缺少了這一步,自己寫了一個action,配置文件也沒有寫錯,但是卻怎麼

調試也無法進入這個action,直到別人告訴他,請求被攔

4、接下來,看配置文件,首先一定是mvc相關的,如springmvc

中,要請求哪些請求是靜態資源,使用了哪些view策略,侍陵controller註解放在哪個包下等。然後是db相關配置文件,看使用了什麼資料庫,使用了

什麼orm框架,是否開啟了二級老配戚緩存,使用哪種產品作為二級緩存,事務管理的處理,需要掃描的實體類放在什麼位置。最後是spring核心的ioc

功能相關的配置文件,知道介面與具體類的注入大致是怎樣的。當然還有一些如apectj置文件,也是在這個步驟中完成

5、log

相關文件,日誌的各個級別是如何處理的,在哪些地方使用了log記錄日誌

6、從上面幾點後知道了整個開源項目的整體框架,閱讀每個方法就不再那麼難了。

7、當然如果有項目配套的開發文檔也是要閱讀的。

源碼解析-偏向鎖撤銷流程解讀

源碼鏈接:

簡單總結下偏向撤銷的流程:

細節補充:

如何判斷偏向所有者沒有正在持有該偏向鎖?

分兩步,首先判斷偏向所有者是否還活著,如果還活著,則遍歷它的棧,看是否能找到關聯該鎖的鎖記錄,如果找到,則正在持有,如果沒找到,則沒有持有。(遍歷過程在一個安全點執行,此時偏向所有者被阻塞。)

偏向所有者正在持有該偏向鎖,如何將其撤銷為輕量級鎖?

遍歷偏向所有者的棧,修改與該鎖關聯的所有頃橘旅鎖記錄,讓偏向所有者以為它對該對象加的就是輕量級鎖。

源碼中的highest_lock,為什麼說是最早關聯偏向鎖的鎖記錄呢?

首伍喊先,鎖記錄在棧里是連續存放的。

請求獲取鎖時,按照從低地址到高地址的順序,找在已關聯該鎖的鎖記錄之前,最後一個空閑的鎖記錄(沒有指向雀凳任何鎖對象)。

請求鎖的源碼如下:

而撤銷偏向鎖時,遍歷偏向所有者的鎖記錄,也是按照從低地址到高地址的順序,但它沒有break的邏輯,因為它要處理所有關聯該鎖的鎖記錄。所以退出循環後,highest_lock指向的是最早關聯該鎖的鎖記錄。

這篇:源碼解析-觸發批量撤銷或批量重偏向的條件,介紹了批量撤銷的觸發條件。

包含批量撤銷邏輯的源碼:

禁用類的可偏向屬性有兩點作用:

對於批量撤銷時,正在被線程持有的偏向鎖,通過在安全點遍歷所有Java線程的棧,將偏向鎖撤銷為輕量級鎖。

JAVA源碼解析的時候Character.MIN_RADIX為什麼=2?

『』佔一個螞譽位,你想一下,如果值是1,那麼你怎麼輸笑物租入漢字

Character類的使用方法

Character:字元類型

1、屬碰兆性。

staticintMIN_RADIX:返回最小基數。

java解析eml的源代碼

//?從EML文件得到MimeMessage對象

MimeMessage?message?=?new?MimeMessage(session,?new?FileInputStream(emlFile));

public?static?String?getMailSubject(Message?message)?throws?拆察Exception?{

return?MimeUtility.decodeText(message.getSubject());

}

public?static?String?getMailSender(Message?message)?throws?Exception?{

String?emailSender?=?null;

Address[]?addresses?=?message.getFrom();

if?(addresses?==?null?||?addresses.length??1)?{

throw?旅橘茄new?IllegalArgumentException("該郵件沒有發件人");

}

//?獲得發件人

InternetAddress?address?=?(InternetAddress)?addresses[0];

String?senderName?=?address.getPersonal();

if?(senderName?!=?null)?{

senderName?=?MimeUtility.decodeText(senderName);

emailSender?=?senderName?+?""?+?address.getAddress()?+?"";

}?else?{

senderName?=?address.getAddress();

}

return?emailSender;

}

public?static?String?getMailRecipients(Message?message,?Message.RecipientType?recipientType)?throws?Exception?{

StringBuilder?builder?=?new?StringBuilder();

Address[]?addresses?=?null;

if?(recipientType?==?null)?{

addresses?=?message.getAllRecipients();

}?else?{

addresses?=?message.getRecipients(recipientType);

}

if?(addresses?==?null?||?addresses.length??1)?{

throw?new?IllegalArgumentException("該郵件沒有收件人");

}

for?(Address?address?:?addresses)?{

InternetAddress?iAddress?=?(InternetAddress)?address;

builder.append(iAddress.toUnicodeString()).append(",?");

}

return?builder.deleteCharAt(builder.length()?-?1).toString();

}

public?static?String?getMailSendDate(Message?message,?String?pattern)?throws?Exception?{

String?sendDateString?=?null;

if?(pattern?==?null?||?"".equals(pattern.trim()))?{

pattern?=?"yyyy年MM月dd日?E?HH:mm";

}

Date?sendDate?=?message.getSentDate();

sendDateString?=?new?SimpleDateFormat(pattern).format(sendDate);

return?伍凱sendDateString;

}

public?static?boolean?containsAttachment(Part?part)?throws?Exception?{

boolean?flag?=?false;

if?(part?!=?null)?{

if?(part.isMimeType("multipart/*"))?{

MimeMultipart?mp?=?(MimeMultipart)?part.getContent();

for?(int?i?=?0;?i??mp.getCount();?i++)?{

BodyPart?bodyPart?=?mp.getBodyPart(i);

String?disposition?=?bodyPart.getDisposition();

if?(disposition?!=?null??(Part.ATTACHMENT.equalsIgnoreCase(disposition)

||?Part.INLINE.equalsIgnoreCase(disposition)))?{

flag?=?true;

}?else?if?(bodyPart.isMimeType("multipart/*"))?{

flag?=?containsAttachment(bodyPart);

}?else?{

String?contentType?=?bodyPart.getContentType();

if?(contentType.indexOf("application")?!=?-1)?{

flag?=?true;

}

if?(contentType.indexOf("name")?!=?-1)?{

flag?=?true;

}

}

if?(flag)

break;

}

}?else?if?(part.isMimeType("message/rfc822"))?{

flag?=?containsAttachment((Part)?part.getContent());

}

}

return?flag;

}

public?static?boolean?isSeen(Message?message)?throws?Exception?{

if?(message?==?null)?{

throw?new?MessagingException("Message?is?empty");

}

return?message.getFlags().contains(Flags.Flag.SEEN);

}

public?static?boolean?isReplaySign(Message?message)?throws?Exception?{

if?(message?==?null)?{

throw?new?MessagingException("Message?is?empty");

}

boolean?replaySign?=?false;

String[]?headers?=?message.getHeader("Disposition-Notification-To");

if?(headers?!=?null??headers.length??0)?{

replaySign?=?true;

}

return?replaySign;

}

public?static?String?getMailPriority(Message?message)?throws?Exception?{

if?(message?==?null)?{

throw?new?MessagingException("Message?is?empty");

}

String?priority?=?"普通";

String[]?headers?=?message.getHeader("X-Priority");

if?(headers?!=?null??headers.length??0)?{

String?mailPriority?=?headers[0];

if?(mailPriority.indexOf("1")?!=?-1?||?mailPriority.indexOf("High")?!=?-1)?{

priority?=?"緊急";

}?else?if?(mailPriority.indexOf("5")?!=?-1?||?mailPriority.indexOf("Low")?!=?-1)?{

priority?=?"低";

}?else?{

priority?=?"普通";?//?3或者Normal;

}

}

return?priority;

}

public?static?void?getMailTextContent(Part?part,?StringBuilder?content)?throws?Exception?{

if?(part?==?null)?{

throw?new?MessagingException("Message?content?is?empty");

}

boolean?containsTextInAttachment?=?part.getContentType().indexOf("name")??0;

if?(part.isMimeType("text/*")??containsTextInAttachment)?{

content.append(part.getContent().toString());

}?else?if?(part.isMimeType("message/rfc822"))?{

getMailTextContent((Part)?part.getContent(),?content);

}?else?if?(part.isMimeType("multipart/*"))?{

Multipart?mp?=?(Multipart)?part.getContent();

for?(int?i?=?0;?i??mp.getCount();?i++)?{

BodyPart?bodyPart?=?mp.getBodyPart(i);

getMailTextContent(bodyPart,?content);

}

}?else?if?(part.isMimeType("image/*"))?{

//?TODO?part.getInputStream()獲得輸入流然後輸出到指定的目錄

}?else?{

//?TODO?其它類型的contentType,?未做處理,?直接輸出

content.append(part.getContent().toString());

}

}

public?static?void?saveAttachment(Part?part,?String?destDir)?throws?Exception?{

if?(part?==?null)?{

throw?new?MessagingException("part?is?empty");

}

//?復雜的郵件包含多個郵件體

if?(part.isMimeType("multipart/*"))?{

Multipart?mp?=?(Multipart)?part.getContent();

//?遍歷每一個郵件體

for?(int?i?=?0;?i??mp.getCount();?i++)?{

BodyPart?bodyPart?=?mp.getBodyPart(i);

//?bodyPart也可能有多個郵件體組成

String?disposition?=?bodyPart.getDisposition();

if?(disposition?==?null??(Part.ATTACHMENT.equalsIgnoreCase(disposition)

||?Part.INLINE.equalsIgnoreCase(disposition)))?{

InputStream?in?=?bodyPart.getInputStream();

saveFile(in,?destDir,?decodeText(bodyPart.getFileName()));

}?else?if?(bodyPart.isMimeType("multipart/*"))?{

saveAttachment(bodyPart,?destDir);

}?else?{

String?contentType?=?bodyPart.getContentType();

if?(contentType.indexOf("name")?!=?-1?||?contentType.indexOf("application")?!=?-1)?{

saveFile(bodyPart.getInputStream(),?destDir,?decodeText(bodyPart.getFileName()));

}

}

}

}?else?if?(part.isMimeType("message/rfc822"))?{

saveAttachment((Part)?part.getContent(),?destDir);

}

}

public?static?void?saveFile(InputStream?in,?String?destDir,?String?fileName)?throws?Exception?{

FileOutputStream?out?=?new?FileOutputStream(new?File(destDir?+?fileName));

byte[]?buffer?=?new?byte[1024];

int?length?=?0;

while?((length?=?in.read(buffer))?!=?-1)?{

out.write(buffer,?0,?length);

}

out.close();

in.close();

}

public?static?String?decodeText(String?encodedText)?throws?Exception?{

if?(encodedText?==?null?||?"".equals(encodedText.trim()))?{

return?"";

}?else?{

return?MimeUtility.decodeText(encodedText);

}

}

⑤ 求Java web增刪改查 極簡源碼

//用戶新增
publicbooleanaddUser(Usersuser){
try{
conn=ConnDB.getConnection();
Stringsql="insertintotb_usersvalues(default,?,?,?,?,?,?)";
System.out.println(sql);
ps=conn.prepareStatement(sql);
ps.setInt(1,user.getDepID());
ps.setString(2,user.getUserName());
ps.setString(3,user.getUserPwd());
ps.setString(4,user.getUserCode());
ps.setString(5,user.getUserSex());
ps.setInt(6,user.getUserAge());
if(ps.executeUpdate()==1){
returntrue;
}
}catch(Exceptione){
e.printStackTrace();
}finally{//關閉當前頁打開的相關對象
ConnDB.close(conn,ps,null);
}
returnfalse;
}
//用戶刪除
publicbooleandelUser(intid){
try{
conn=ConnDB.getConnection();
Stringsql="deletefromtb_userswhereid=?";
System.out.println(sql);
ps=conn.prepareStatement(sql);
ps.setInt(1,id);
if(ps.executeUpdate()==1){
returntrue;
}
}catch(Exceptione){
e.printStackTrace();
}finally{//關閉當前頁打開的相關對象
ConnDB.close(conn,ps,null);
}
returnfalse;
}
//用戶編輯
publicbooleanupdateUser(Usersuser){
try{
conn=ConnDB.getConnection();
Stringsql="updatetb_userssetdepID=?,userName=?,userPwd=?,userCode=?,userSex=?,userAge=?whereid=?";
System.out.println(user.getDepID()+user.getUserName()+user.getUserPwd()+user.getUserCode()+user.getUserSex()+user.getUserAge()+user.getId());
ps=conn.prepareStatement(sql);
ps.setInt(1,user.getDepID());
ps.setString(2,user.getUserName());
ps.setString(3,user.getUserPwd());
ps.setString(4,user.getUserCode());
ps.setString(5,user.getUserSex());
ps.setInt(6,user.getUserAge());
ps.setInt(7,user.getId());
if(ps.executeUpdate()==1){
returntrue;
}
}catch(Exceptione){
e.printStackTrace();
}finally{//關閉當前頁打開的相關對象
ConnDB.close(conn,ps,null);
}
returnfalse;
}
//根據id查詢用戶
publicUsersfindAllUserById(intid){
Usersu=null;
DepDaodepd=null;
try{
conn=ConnDB.getConnection();
Stringsql="select*fromtb_userswhereid=?";
System.out.println(sql);
ps=conn.prepareStatement(sql);
ps.setInt(1,id);
rs=ps.executeQuery();
if(rs.next()){
depd=newDepDao();
Departmentdep=depd.findAllDepById(rs.getInt("depID"));
System.out.println(dep.getDepName());
u=newUsers();
u.setId(rs.getInt("id"));
u.setDepID(rs.getInt("depID"));
u.setUserName(rs.getString("userName"));
u.setUserPwd(rs.getString("userPwd"));
u.setUserCode(rs.getString("userCode"));
u.setUserSex(rs.getString("userSex"));
u.setUserAge(rs.getInt("userAge"));
u.setDep(dep);
}

}catch(Exceptione){
e.printStackTrace();
}finally{//關閉當前頁打開的相關對象
ConnDB.close(conn,ps,rs);
}
returnu;
}

這是我在層寫的代碼,都調用了ConnDB這個類,這個類完成了驅動的注冊,及連接資料庫的功能,代碼如下:

packagecom.asjy.util;

importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;

publicclassConnDB{
privatestaticStringurl="jdbc:mysql://localhost:3306/news";
privatestaticStringuser="root";
privatestaticStringpass="root";

//1.載入驅動
static{
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundExceptione){
System.out.println("驅動載入失敗");
}
}


//2.建立資料庫連接對象
()throwsException{
returnDriverManager.getConnection(url,user,pass);
}

//3.關閉資料庫
publicstaticvoidclose(Connectionconn,Statementps,ResultSetrs){
try{
if(rs!=null){
rs.close();
rs=null;
}
if(ps!=null){
ps.close();
ps=null;
}
if(conn!=null){
conn.close();
conn=null;
}
}catch(SQLExceptione){
e.printStackTrace();
}
}
}

⑥ 用java web小游戲源代碼。期末結課老師讓做,急用,謝了

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.JFrame;

@SuppressWarnings("serial")
public class MainClass extends JFrame {
ControlSnake control;

Toolkit kit;

Dimension dimen;

public static void main(String[] args) {
new MainClass("my snake");
}

public MainClass(String s) {
super(s);
control = new ControlSnake();
control.setFocusable(true);
kit = Toolkit.getDefaultToolkit();
dimen = kit.getScreenSize();

add(control);
setLayout(new BorderLayout());
setLocation(dimen.width / 3, dimen.height / 3);// dimen.width/3,dimen.height/3
setSize(FWIDTH, FHEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}

public static final int FWIDTH = 315;

public static final int FHEIGHT = 380;
}

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Random;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;

@SuppressWarnings("serial")
public class ControlSnake extends JPanel implements ActionListener {
Random rand;

ArrayList<Point> list, listBody;

String str, str1;

static boolean key;

int x, y, dx, dy, fx, fy, flag;

int snakeBody;

int speed;

public ControlSnake() {
snakeBody = 1;

str = "上下左右方向鍵控制 P鍵暫停...";
str1 = "現在的長度為:" + snakeBody;
key = true;
flag = 1;

speed = 700;
rand = new Random();
list = new ArrayList<Point>();
listBody = new ArrayList<Point>();

x = 5;
y = 5;
list.add(new Point(x, y));
listBody.add(list.get(0));

dx = 10;
dy = 0;

fx = rand.nextInt(30) * 10 + 5;// 2
fy = rand.nextInt(30) * 10 + 5;// 2

setBackground(Color.BLACK);
setSize(new Dimension(318, 380));

final Timer time = new Timer(speed, this);
time.start();

addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 37) {
dx = -10;
dy = 0;
} else if (e.getKeyCode() == 38) {
dx = 0;
dy = -10;
} else if (e.getKeyCode() == 39) {
dx = 10;
dy = 0;
} else if (e.getKeyCode() == 40) {
dx = 0;
dy = 10;
} else if (e.getKeyCode() == 80) {
if (flag % 2 == 1) {
time.stop();
}
if (flag % 2 == 0) {
time.start();
}
flag++;
}
}
});

}

public void paint(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, 400, 400);
g.setColor(Color.DARK_GRAY);
g.drawLine(3, 3, 305, 3);
g.drawLine(3, 3, 3, 305);
g.drawLine(305, 3, 305, 305);
g.drawLine(3, 305, 305, 305);
g.setColor(Color.PINK);

for (int i = 0; i < listBody.size(); i++) {
g.fillRect(listBody.get(i).x, listBody.get(i).y, 9, 9);
}
g.fillRect(x, y, 9, 9);
g.setColor(Color.ORANGE);
g.fillRect(fx, fy, 9, 9);

g.setColor(Color.DARK_GRAY);
str1 = "現在的長度為:" + snakeBody;
g.drawString(str, 10, 320);
g.drawString(str1, 10, 335);
}

public void actionPerformed(ActionEvent e) {
x += dx;
y += dy;
if (makeOut() == false) {
JOptionPane.showMessageDialog(null, "重新開始......");

speed = 700;

snakeBody = 1;

x = 5;
y = 5;

list.clear();
list.add(new Point(x, y));
listBody.clear();
listBody.add(list.get(0));

dx = 10;
dy = 0;

}
addPoint(x, y);
if (x == fx && y == fy) {
speed = (int) (speed * 0.8);//速度增加參數
if (speed < 200) {
speed = 100;
}
fx = rand.nextInt(30) * 10 + 5;// 2
fy = rand.nextInt(30) * 10 + 5;// 2
snakeBody++;// 2
} // 2
repaint();
}

public void addPoint(int xx, int yy) {
// 動態的記錄最新發生的50步以內的移動過的坐標
// 並畫出最新的snakeBody
if (list.size() < 100) {//蛇身長度最長為100
list.add(new Point(xx, yy));
} else {
list.remove(0);
list.add(new Point(xx, yy));
}
if (snakeBody == 1) {
listBody.remove(0);
listBody.add(0, list.get(list.size() - 1));
} else {
listBody.clear();
if (list.size() < snakeBody) {
for (int i = list.size() - 1; i > 0; i--) {
listBody.add(list.get(i));
}
} else {
for (int i = list.size() - 1; listBody.size() < snakeBody; i--) {
listBody.add(list.get(i));
}
}
}
}

public boolean makeOut() {
if ((x < 3 || y < 3) || (x > 305 || y > 305)) {
return false;
}
for (int i = 0; i < listBody.size() - 1; i++) {
for (int j = i + 1; j < listBody.size(); j++) {
if (listBody.get(i).equals(listBody.get(j))) {
return false;
}
}
}
return true;
}
}

/*貪吃蛇代碼*/

閱讀全文

與javaweb開發源碼相關的資料

熱點內容
如何換到國外的伺服器免費 瀏覽:852
早期電影app有什麼 瀏覽:352
安卓手機用什麼類型的充電器 瀏覽:144
php智能家居 瀏覽:176
安卓手機視頻通話時如何錄音 瀏覽:104
php比較字元串區分大小寫 瀏覽:652
怎麼用泡沫海綿做解壓錘子 瀏覽:771
phpstruts2 瀏覽:463
洋蔥應用源碼 瀏覽:230
個稅app單子哪裡拉 瀏覽:289
寫app要什麼軟體 瀏覽:973
郵儲銀行已加密怎麼解除 瀏覽:79
游戲泰拉瑞亞如何開伺服器 瀏覽:524
javatailf 瀏覽:653
安卓手機解壓rar用什麼解壓方式 瀏覽:514
游戲怎麼在抖音上直播安卓版 瀏覽:17
作者自己的app叫什麼 瀏覽:324
java殺死進程 瀏覽:32
分析伺服器是什麼 瀏覽:909
matlab編程中級教程 瀏覽:754