欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

sqlserver取數(shù)據(jù),sqlserver取數(shù)據(jù)前20%

求"貪吃蛇"小游戲JAVA源代碼一份

貪吃蛇

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供吉縣網(wǎng)站建設(shè)、吉縣做網(wǎng)站、吉縣網(wǎng)站設(shè)計(jì)、吉縣網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、吉縣企業(yè)網(wǎng)站模板建站服務(wù),10多年吉縣做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

import java.awt.*;

import java.awt.event.*;

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; //蛇的節(jié)數(shù)

int food[]; //食物數(shù)組

boolean result=true; //判定結(jié)果是輸 還是贏

Thread thread; //定義線程

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

boolean t=true; //判定游戲是否結(jié)束

int fangxiang=0; //蛇移動(dòng)方向

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

MyPanel()

{

setLayout(null);

snake=new Button[20];

food=new int [20];

thread=new Thread(this);

for(int j=0;j20;j++)

{

food[j]=(int)(Math.random()*99);//定義20個(gè)隨機(jī)食物

}

weix=(int)(food[0]*0.1)*60; //十位*60為橫坐標(biāo)

weiy=(int)(food[0]%10)*40; //個(gè)位*40為縱坐標(biāo)

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

{

snake[i]=new Button();

}

add(snake[0]);

snake[0].setBackground(Color.black);

snake[0].addKeyListener(this); //為蛇頭添加鍵盤監(jiān)視器

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

setBackground(Color.cyan);

}

public void run() //接收線程

{

while(t)

{

if(fangxiang==0)//向右

{

try

{

x+=10;

snake[0].setLocation(x, y);//設(shè)置蛇頭位置

if(x==weixy==weiy) //吃到食物

{

shu++;

weix=(int)(food[shu]*0.1)*60;

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

repaint(); //重繪下一個(gè)食物

add(snake[shu]); //增加蛇節(jié)數(shù)和位置

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

}

thread.sleep(100); //睡眠100ms

}

catch(Exception e){}

}

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

{

try

{

x-=10;

snake[0].setLocation(x, y);

if(x==weixy==weiy)

{

shu++;

weix=(int)(food[shu]*0.1)*60;

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

repaint();

add(snake[shu]);

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

}

thread.sleep(100);

}

catch(Exception e){}

}

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

{

try

{

y-=10;

snake[0].setLocation(x, y);

if(x==weixy==weiy)

{

shu++;

weix=(int)(food[shu]*0.1)*60;

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

repaint();

add(snake[shu]);

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

}

thread.sleep(100);

}

catch(Exception e){}

}

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

{

try

{

y+=10;

snake[0].setLocation(x, y);

if(x==weixy==weiy)

{

shu++;

weix=(int)(food[shu]*0.1)*60;

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

repaint();

add(snake[shu]);

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

}

thread.sleep(100);

}

catch(Exception e){}

}

int num1=shu;

while(num11)//判斷是否咬自己的尾巴

{

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

{

t=false;

result=false;

repaint();

}

num1--;

}

if(x0||x=this.getWidth()||y0||y=this.getHeight())//判斷是否撞墻

{

t=false;

result=false;

repaint();

}

int num=shu;

while(num0) //設(shè)置蛇節(jié)位置

{

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

num--;

}

if(shu==15) //如果蛇節(jié)數(shù)等于15則勝利

{

t=false;

result=true;

repaint();

}

}

}

public void keyPressed(KeyEvent e) //按下鍵盤方向鍵

{

if(e.getKeyCode()==KeyEvent.VK_RIGHT)//右鍵

{

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

fangxiang=0;

}

else if(e.getKeyCode()==KeyEvent.VK_LEFT)

{ if(fangxiang!=0)

fangxiang=1;

}

else if(e.getKeyCode()==KeyEvent.VK_UP)

{ if(fangxiang!=3)

fangxiang=2;

}

else if(e.getKeyCode()==KeyEvent.VK_DOWN)

{ if(fangxiang!=2)

fangxiang=3;

}

}

public void keyTyped(KeyEvent e)

{

}

public void keyReleased(KeyEvent e)

{

}

public void paint(Graphics g) //在面板上繪圖

{

int x1=this.getWidth()-1;

int y1=this.getHeight()-1;

g.setColor(Color.red);

g.fillOval(weix, weiy, 10, 10);//食物

g.drawRect(0, 0, x1, y1); //墻

if(t==falseresult==false)

g.drawString("GAME OVER!", 250, 200);//輸出游戲失敗

else if(t==falseresult==true)

g.drawString("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();

btn.addActionListener(this);

panel.add(new Label("begin后請(qǐng)按Tab鍵選定蛇"));

panel.add(btn);

panel.add(new Label("按上下左右鍵控制蛇行動(dòng)"));

add(panel,BorderLayout.NORTH);

add(my,BorderLayout.CENTER);

setBounds(100,100,610,500);

setVisible(true);

validate();

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

}

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

{

if(e.getSource()==btn)

{

try

{

my.thread.start(); //開(kāi)始線程

my.validate();

}

catch(Exception ee){}

}

}

}

求一份java 貪吃蛇的代碼

package games;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

import static java.lang.Math.*;//靜態(tài)導(dǎo)入

/*

* 此類是貪吃蛇的簡(jiǎn)單實(shí)現(xiàn)方法

* 自己可以加入在開(kāi)始時(shí)的設(shè)置,比如

* 選關(guān),初始的蛇的長(zhǎng)度等等

*/

public class Snake extends JPanel {

private static final long serialVersionUID = 1L;

private Direction dir;// 要走的方向

private int blockWidth = 10;// 塊大小

private int blockSpace = 2;// 塊之間的間隔

private long sleepTime;// 重畫(huà)的進(jìn)間間隔

private MySnake my;

private int total;// 代表蛇的長(zhǎng)度

private Rectangle food;// 代表蛇的食物

private volatile boolean go;

private int round;// 表示第幾關(guān)

public Snake(JFrame jf) {

initOther();

// 為頂級(jí)窗口類JFrame添加事件處理函數(shù)

jf.addKeyListener(new KeyAdapter() {

public void keyReleased(KeyEvent ke) {

int code = ke.getKeyCode();

if (code == KeyEvent.VK_RIGHT) {

if (dir != Direction.WEST)

dir = Direction.EAST;

}

else if (code == KeyEvent.VK_LEFT) {

if (dir != Direction.EAST)

dir = Direction.WEST;

}

else if (code == KeyEvent.VK_UP) {

if (dir != Direction.SOUTH)

dir = Direction.NORTH;

}

else if (code == KeyEvent.VK_DOWN) {

if (dir != Direction.NORTH)

dir = Direction.SOUTH;

} else if (code == KeyEvent.VK_ENTER) {

if (!go)

initOther();

}

}

});

this.setBounds(300, 300, 400, 400);

this.setVisible(true);

}

// 隨機(jī)生成一個(gè)食物的位置

private void makeFood() {

int x = 40 + (int) (random() * 30) * 12;

int y = 10 + (int) (random() * 30) * 12;

food = new Rectangle(x, y, 10, 10);

}

// 做一些初始化的工作

private void initOther() {

dir = Direction.EAST;

sleepTime = 500;

my = new MySnake();

makeFood();

total = 3;

round = 1;

new Thread(new Runnable() {

public void run() {

go = true;

while (go) {

try {

Thread.sleep(sleepTime);

repaint();

} catch (Exception exe) {

exe.printStackTrace();

}

}

}

}).start();

}

// 處理多少關(guān)的函數(shù)

private void handleRound() {

if (total == 6) {

round = 2;

sleepTime = 300;

} else if (total == 10) {

round = 3;

sleepTime = 200;

} else if (total == 15) {

round = 4;

sleepTime = 100;

} else if (total == 18) {

round = 5;

sleepTime = 50;

} else if (total == 20) {

round = 6;

sleepTime = 20;

} else if (total 21) {

round = 7;

sleepTime = 15;

}

}

// 把自己的組件全部畫(huà)出來(lái)

public void paintComponent(Graphics g) {

g.setColor(Color.PINK);

g.fillRect(0, 0, this.getWidth(), this.getHeight());

g.setColor(Color.BLACK);

g.drawRect(40, 10, 358, 360);

if (go) {

my.move();

my.draw(g);

g.setFont(new Font("黑體", Font.BOLD, 20));

g.drawString("您的得分:" + (total * 10) + " 第" + round + "關(guān)", 40,

400);

} else {

g.setFont(new Font("黑體", Font.BOLD, 20));

g.drawString("游戲結(jié)束,按回車(ENTER)鍵重玩!", 40, 440);

}

g.setColor(Color.RED);

g.fillRect(food.x, food.y, food.width, food.height);

}

private class MySnake {

private ArrayListRectangle list;

public MySnake() {

list = new ArrayListRectangle();

list.add(new Rectangle(160 + 24, 130, 10, 10));

list.add(new Rectangle(160 + 12, 130, 10, 10));

list.add(new Rectangle(160, 130, 10, 10));

}

// 蛇移動(dòng)的方法

public void move() {

if (isDead()) {

go = false;

return;

}

if (dir == Direction.EAST) {

Rectangle rec = list.get(0);

Rectangle rec1 = new Rectangle(rec.x

+ (blockWidth + blockSpace), rec.y, rec.width,

rec.height);

list.add(0, rec1);

} else if (dir == Direction.WEST) {

Rectangle rec = list.get(0);

Rectangle rec1 = new Rectangle(rec.x

- (blockWidth + blockSpace), rec.y, rec.width,

rec.height);

list.add(0, rec1);

} else if (dir == Direction.NORTH) {

Rectangle rec = list.get(0);

Rectangle rec1 = new Rectangle(rec.x, rec.y

- (blockWidth + blockSpace), rec.width, rec.height);

list.add(0, rec1);

} else if (dir == Direction.SOUTH) {

Rectangle rec = list.get(0);

Rectangle rec1 = new Rectangle(rec.x, rec.y

+ (blockWidth + blockSpace), rec.width, rec.height);

list.add(0, rec1);

}

if (isEat()) {

handleRound();

makeFood();

} else {

list.remove(list.size() - 1);

}

}

// 判斷是否吃到了食物

private boolean isEat() {

if (list.get(0).contains(food)) {

total++;

return true;

} else

return false;

}

// 判斷是否死了,如果碰壁或者自己吃到自己都算死了

private boolean isDead() {

Rectangle temp = list.get(0);

if (dir == Direction.EAST) {

if (temp.x == 388)

return true;

else {

Rectangle comp = new Rectangle(temp.x + 12, temp.y, 10, 10);

for (Rectangle rec : list) {

if (rec.contains(comp))

return true;

}

}

return false;

} else if (dir == Direction.WEST) {

if (temp.x == 40)

return true;

else {

Rectangle comp = new Rectangle(temp.x - 12, temp.y, 10, 10);

for (Rectangle rec : list) {

if (rec.contains(comp))

return true;

}

}

return false;

} else if (dir == Direction.NORTH) {

if (temp.y == 10)

return true;

else {

Rectangle comp = new Rectangle(temp.x, temp.y - 12, 10, 10);

for (Rectangle rec : list) {

if (rec.contains(comp))

return true;

}

}

return false;

} else if (dir == Direction.SOUTH) {

if (temp.y == 358)

return true;

else {

Rectangle comp = new Rectangle(temp.x, temp.y + 12, 10, 10);

for (Rectangle rec : list) {

if (rec.contains(comp))

return true;

}

}

return false;

} else {

return false;

}

}

// 把自己畫(huà)出來(lái)

public void draw(Graphics g) {

for (Rectangle rec : list) {

g.fillRect(rec.x, rec.y, rec.width, rec.height);

}

}

}

public static void main(String arsg[]) {

JFrame jf = new JFrame("貪吃蛇");

Snake s = new Snake(jf);

jf.getContentPane().add(s, BorderLayout.CENTER);

jf.setBounds(300, 300, 500, 500);

jf.setVisible(true);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

// 定義一個(gè)枚舉,在此也可以用接口或者常量值代替

enum Direction {

EAST, SOUTH, WEST, NORTH;

}

java貪吃蛇代碼注釋求解

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Rectangle;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.image.BufferedImage;

import java.util.ArrayList;

import java.util.List;

import javax.swing.JFrame;

public class InterFace extends JFrame {

/**

* WIDTH:寬

* HEIGHT:高

* SLEEPTIME:可以看作蛇運(yùn)動(dòng)的速度

* L = 1,R = 2, U = 3, D = 4 左右上下代碼

*/

public static final int WIDTH = 800, HEIGHT = 600, SLEEPTIME = 200, L = 1,R = 2, U = 3, D = 4;

BufferedImage offersetImage= new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_3BYTE_BGR);;

Rectangle rect = new Rectangle(20, 40, 15 * 50, 15 * 35);

Snake snake;

Node node;

public InterFace() {

//創(chuàng)建"蛇"對(duì)象

snake = new Snake(this);

//創(chuàng)建"食物"對(duì)象

createNode();

this.setBounds(100, 100, WIDTH, HEIGHT);

//添加鍵盤監(jiān)聽(tīng)器

this.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent arg0) {

System.out.println(arg0.getKeyCode());

switch (arg0.getKeyCode()) {

//映射上下左右4個(gè)鍵位

case KeyEvent.VK_LEFT:

snake.dir = L;

break;

case KeyEvent.VK_RIGHT:

snake.dir = R;

break;

case KeyEvent.VK_UP:

snake.dir = U;

break;

case KeyEvent.VK_DOWN:

snake.dir = D;

}

}

});

this.setTitle("貪吃蛇 0.1 By : Easy");

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setVisible(true);

//啟動(dòng)線程,開(kāi)始執(zhí)行

new Thread(new ThreadUpadte()).start();

}

public void paint(Graphics g) {

Graphics2D g2d = (Graphics2D) offersetImage.getGraphics();

g2d.setColor(Color.white);

g2d.fillRect(0, 0, WIDTH, HEIGHT);

g2d.setColor(Color.black);

g2d.drawRect(rect.x, rect.y, rect.width, rect.height);

//如果蛇碰撞(吃)到食物,則創(chuàng)建新食物

if (snake.hit(node)) {

createNode();

}

snake.draw(g2d);

node.draw(g2d);

g.drawImage(offersetImage, 0, 0, null);

}

class ThreadUpadte implements Runnable {

public void run() {

//無(wú)限重繪畫(huà)面

while (true) {

try {

Thread.sleep(SLEEPTIME);

repaint(); //

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

/**

* 創(chuàng)建食物

*/

public void createNode() {

//隨機(jī)食物的出現(xiàn)位置

int x = (int) (Math.random() * 650) + 50,y = (int) (Math.random() * 500) + 50;

Color color = Color.blue;

node = new Node(x, y, color);

}

public static void main(String args[]) {

new InterFace();

}

}

/**

* 節(jié)點(diǎn)類(包括食物和蛇的身軀組成節(jié)點(diǎn))

*/

class Node {

int x, y, width = 15, height = 15;

Color color;

public Node(int x, int y, Color color) {

this(x, y);

this.color = color;

}

public Node(int x, int y) {

this.x = x;

this.y = y;

this.color = color.black;

}

public void draw(Graphics2D g2d) {

g2d.setColor(color);

g2d.drawRect(x, y, width, height);

}

public Rectangle getRect() {

return new Rectangle(x, y, width, height);

}

}

/**

* 蛇

*/

class Snake {

public ListNode nodes = new ArrayListNode();

InterFace interFace;

int dir=InterFace.R;

public Snake(InterFace interFace) {

this.interFace = interFace;

nodes.add(new Node(20 + 150, 40 + 150));

addNode();

}

/**

* 是否碰撞到食物

* @return true 是 false 否

*/

public boolean hit(Node node) {

//遍歷整個(gè)蛇體是否與食物碰撞

for (int i = 0; i nodes.size(); i++) {

if (nodes.get(i).getRect().intersects(node.getRect())) {

addNode();

return true;

}

}

return false;

}

public void draw(Graphics2D g2d) {

for (int i = 0; i nodes.size(); i++) {

nodes.get(i).draw(g2d);

}

move();

}

public void move() {

nodes.remove((nodes.size() - 1));

addNode();

}

public synchronized void addNode() {

Node nodeTempNode = nodes.get(0);

//如果方向

switch (dir) {

case InterFace.L:

//判斷是否會(huì)撞墻

if (nodeTempNode.x = 20) {

nodeTempNode = new Node(20 + 15 * 50, nodeTempNode.y);

}

nodes.add(0, new Node(nodeTempNode.x - nodeTempNode.width,

nodeTempNode.y));

break;

case InterFace.R:

//判斷是否會(huì)撞墻

if (nodeTempNode.x = 20 + 15 * 50 - nodeTempNode.width) {

nodeTempNode = new Node(20 - nodeTempNode.width, nodeTempNode.y);

}

nodes.add(0, new Node(nodeTempNode.x + nodeTempNode.width,

nodeTempNode.y));

break;

case InterFace.U:

//判斷是否會(huì)撞墻

if (nodeTempNode.y = 40) {

nodeTempNode = new Node(nodeTempNode.x, 40 + 15 * 35);

}

nodes.add(0, new Node(nodeTempNode.x, nodeTempNode.y - nodeTempNode.height));

break;

case InterFace.D:

//判斷是否會(huì)撞墻

if (nodeTempNode.y = 40 + 15 * 35 - nodeTempNode.height) {

nodeTempNode = new Node(nodeTempNode.x,40 - nodeTempNode.height);

}

nodes.add(0, new Node(nodeTempNode.x, nodeTempNode.y + nodeTempNode.height));

break;

}

}

}

貪吃蛇 java代碼

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.util.*;

public class SnakeGame extends JFrame implements KeyListener{

private int stat=1,direction=0,bodylen=6,headx=7,heady=8,

tailx=1,taily=8,tail,foodx,foody,food;//初始化定義變量

public final int EAST=1,WEST=2,SOUTH=3,NORTH=4;//方向常量

int [][] fillblock=new int [20][20];//定義蛇身所占位置

public SnakeGame() {//構(gòu)造函數(shù)

super("貪吃蛇");

setSize(510,510);

setVisible(true);//設(shè)定窗口屬性

addKeyListener(this);//添加監(jiān)聽(tīng)

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

for(int i=1;i=7;i++) fillblock[i][8]=EAST;//初始化蛇身屬性

direction=EAST;//方向初始化的設(shè)置

FoodLocate(); //定位食物

while (stat==1){

fillblock[headx][heady]=direction;

switch(direction){

case 1:headx++;break;

case 2:headx--;break;

case 3:heady++;break;

case 4:heady--;break;

}//蛇頭的前進(jìn)

if(heady19||headx19||tailx19||taily19||heady0||headx0||tailx0||taily0||fillblock[headx][heady]!=0){

stat=0;

break;

} //判斷游戲是否結(jié)束

try{

Thread.sleep(150); }

catch(InterruptedException e){}//延遲

fillblock[headx][heady]=direction;

if(headx==foodxheady==foody){//吃到食物

FoodLocate();

food=2;

try{

Thread.sleep(100); }

catch(InterruptedException e){}//延遲

}

if(food!=0)food--;

else{tail=fillblock[tailx][taily];

fillblock[tailx][taily]=0;//蛇尾的消除

switch(tail){

case 1:tailx++;break;

case 2:tailx--;break;

case 3:taily++;break;

case 4:taily--;break;

}//蛇尾的前進(jìn)

}

repaint();

}

if(stat==0)

JOptionPane.showMessageDialog(null,"GAME OVER","Game Over",JOptionPane.INFORMATION_MESSAGE);

}

public void keyPressed(KeyEvent e) {//按鍵響應(yīng)

int keyCode=e.getKeyCode();

if(stat==1) switch(keyCode){

case KeyEvent.VK_UP:if(direction!=SOUTH) direction=NORTH;break;

case KeyEvent.VK_DOWN:if(direction!=NORTH)direction=SOUTH;break;

case KeyEvent.VK_LEFT:if(direction!=EAST)direction=WEST;break;

case KeyEvent.VK_RIGHT:if (direction!=WEST)direction=EAST;break;

}

}

public void keyReleased(KeyEvent e){}//空函數(shù)

public void keyTyped(KeyEvent e){} //空函數(shù)

public void FoodLocate(){//定位食物坐標(biāo)

do{

Random r=new Random();

foodx=r.nextInt(20);

foody=r.nextInt(20);

}while (fillblock[foodx][foody]!=0);

}

public void paint(Graphics g){//畫(huà)圖

super.paint(g);

g.setColor(Color.BLUE);

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

for(int j=0;j20;j++)

if (fillblock[i][j]!=0)

g.fillRect(25*i+5,25*j+5,24,24);

g.setColor(Color.RED);

g.fillRect(foodx*25+5,foody*25+5,24,24);

}

public static void main(String[] args) {//主程序

SnakeGame application=new SnakeGame();

}

}

本文名稱:sqlserver取數(shù)據(jù),sqlserver取數(shù)據(jù)前20%
分享地址:http://chinadenli.net/article7/dsgehoj.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化動(dòng)態(tài)網(wǎng)站網(wǎng)站改版面包屑導(dǎo)航網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)

網(wǎng)站設(shè)計(jì)公司知識(shí)