




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于javafx設(shè)計(jì)的蜘蛛紙牌游戲包含三個程序塊:Spider.java;SpiderMenu.java;PKCard.java程序入口在Spider.java中1Spider.javaimportjava.util.*;importjavafx.util.Duration;importjavafx.geometry.Point2D;importjavafx.animation.PathTransition;hTransitionBuilder;importjavafx.animation.PathTransition.OrientationType;importjavafx.application.Application;importjavafx.scene.Group;importjavafx.scene.Scene;importjavafx.stage.Stage;importjavafx.scene.control.Label;importjavafx.scene.effect.Lighting;importjavafx.scene.paint.Color;importjavafx.scene.shape.CubicCurveTo;importjavafx.scene.shape.MoveTo;importjavafx.scene.shape.Path;importjavafx.scene.shape.PathBuilder;importjavafx.scene.text.Font;importjavafx.scene.text.Text;importjavafx.event.EventHandler;importjavafx.scene.image.Image;importjavafx.scene.image.ImageView;importjavafx.scene.input.MouseEvent;publicclassSpiderextendsApplication{ //整型變量,表示難度等級為:簡單 publicstaticfinalintEASY=1;//整型變量,表示難度等級為:普通 publicstaticfinalintNATURAL=2;//整型變量,表示難度等級為:難 publicstaticfinalintHARD=3;//設(shè)定初始難度等級為簡單 privateintgrade=Spider.EASY; privatePKCardcards[]=newPKCard[104]; privatePathTransitionpathTransition; privateintc=0;privateintn=0;privateinta=0;privateintfinish=0;Point2Dp1=null;Labellabel[]=null;Point2Dpoint[]=newPoint2D[10];Grouproot1=newGroup(); staticfinalImageICON=newImage("images/white.gif"); Hashtable<Point2D,PKCard>table=null; Colord=Color.rgb(0,100,0); publicvoidinit(StageprimaryStage){ Grouproot=newGroup(); primaryStage.setResizable(false); primaryStage.setScene(newScene(root,1024,704,d)); primaryStage.setTitle("蜘蛛紙牌"); label=newLabel[10];intx=20;for(intk=0;k<10;k++){ ImageViewimageView=newImageView(ICON); label[k]=newLabel("",imageView); label[k].resizeRelocate(x,25,71,96); label[k].setVisible(true); point[k]=newPoint2D(x,25); x+=101; root.getChildren().add(label[k]);}root1=root;newSpiderMenu(this);this.initCards();this.setCardsLocation();root=root1; } publicvoidnewGame(){ this.c=0; for(intk=0;k<=103;k++){ cards[k].setVisible(false); } this.initCards();//紙牌賦值并打亂 for(intk=0;k<=103;k++){ cards[k].setVisible(true); }this.setCardsLocation();//放置紙牌this.setOpen();//發(fā)牌開局this.setLabelZOrder();} publicvoidinitCards(){//如果紙牌已被賦值,即將其從框架的面板中移去 if(cards[0]!=null){for(inti=0;i<104;i++){ cards[i].setVisible(false);table.remove(cards[i].getLocation());}} intn=0;//通過難度等級,為n賦值 if(this.grade==Spider.EASY){n=1;}elseif(this.grade==Spider.NATURAL){n=2;}else{n=4;}//為104張撲克牌賦值 for(inti=1;i<=8;i++){for(intj=1;j<=13;j++){cards[(i-1)*13+j-1]=newPKCard((i%n+1)+"-"+j,this);}} for(intm=0;m<=103;m++){ finalPKCardpk=cards[m]; //鼠標(biāo)點(diǎn)擊監(jiān)聽 pk.setOnMousePressed(newEventHandler<MouseEvent>(){ publicvoidhandle(MouseEventme){ if(pk.canMove){ pk.mousePressed(me); } } }); //鼠標(biāo)拖拽監(jiān)聽 pk.setOnMouseDragged(newEventHandler<MouseEvent>(){ publicvoidhandle(MouseEventme){ if(pk.canMove){ pk.mouseDragged(me); } } }); //鼠標(biāo)釋放監(jiān)聽 pk.setOnMouseReleased(newEventHandler<MouseEvent>(){ publicvoidhandle(MouseEventme){ pk.mouseReleased(me); } }); } //隨機(jī)紙牌初始化,打亂紙牌 this.randomCards(); } /** **紙牌隨機(jī)分配 */ publicvoidrandomCards(){PKCardtemp=null;//隨機(jī)生成牌號 for(inti=0;i<52;i++){inta=(int)(Math.random()*104);intb=(int)(Math.random()*104);temp=cards[a];cards[a]=cards[b];cards[b]=temp; }} publicvoidsetCardsLocation(){table=newHashtable<Point2D,PKCard>();c=0;finish=0;n=0;a=0;doublex=863;doubley=580; //初始化待展開的紙牌0~49號for(inti=0;i<5;i++){for(intj=0;j<10;j++){intn=i*10+j;root1.getChildren().add(cards[n]);//將card轉(zhuǎn)向背面 cards[n].turnRear();//將card放在固定的位置上 cards[n].moveto(newPoint2D(x,y));//將card的位置及相關(guān)信息存入 table.put(newPoint2D(x,y),cards[n]); finalPKCardpkc=cards[n]; pkc.setOnMouseClicked(newEventHandler<MouseEvent>(){ publicvoidhandle(MouseEventme){ if((580-(pkc.getLocation().getY())<10)&&(1024-pkc.getLocation().getX())<200){ if(c<60){ Spider.this.deal(); } } } }); }x+=10;} x=913; y=580;//初始化背面顯示的紙牌50~103號 for(inti=5;i<11;i++){for(intj=0;j<10;j++){intn=i*10+j;if(n>=104)break;root1.getChildren().add(cards[n]);cards[n].moveto(newPoint2D(x,y));table.put(newPoint2D(x,y),cards[n]); }} } publicvoidsetOpen(){ c=0; for(inti=5;i<=11;i++){ for(intj=0;j<10;j++){ intn=10*i+j; if(n>=94){ if(n<104){ cards[n].turnFront(); cards[n].setCanMove(true); this.c++; } elsebreak; }else{cards[n].turnRear();}Pathpath=PathBuilder.create().elements(newMoveTo(cards[n].getLocation().getX(),cards[n].getLocation().getY()),newCubicCurveTo(55.5+101*j,48+5*i,55.5+101*j,48+5*i,55.5+101*j,48+5*i)).build();path.setStroke(Color.DODGERBLUE);path.getStrokeDashArray().setAll(0d,10000d);root1.getChildren().add(path);pathTransition=PathTransitionBuilder.create().duration(Duration.seconds(0.5)).path(path).node(cards[n]).orientation(OrientationType.NONE).cycleCount(1).autoReverse(false).build();pathTransition.play();try{Thread.sleep(1);//毫秒}catch(Exceptione){}table.remove(cards[n].getLocation());cards[n].moveto(newPoint2D(point[j].getX(),point[j].getY()+(i-5)*5));table.put((newPoint2D(point[j].getX(),point[j].getY()+(i-5)*5)),cards[n]);}} c=10;} publicvoidsetNA(){a=0;n=0;} publicPoint2DgetLastCardLocation(intcolumn){ Point2Dp1=newPoint2D(20+column*101,25);PKCardcard=(PKCard)this.table.get(p1);if(card==null)returnnull;while(card!=null){p1=card.getLocation();card=this.getNextCard(card);}returnp1;} publicPKCardgetNextCard(PKCardcard){Point2Dpoint=card.getLocation();point=newPoint2D(point.getX(),point.getY()+5);card=(PKCard)table.get(point);if(card!=null) returncard;//此牌是背面向上,故下張牌y坐標(biāo)相差5point=newPoint2D(point.getX(),point.getY()+15);card=(PKCard)table.get(point);if(card!=null)returncard;//此牌是正面向上,故下張牌坐標(biāo)相差20elsereturnnull;} publicPKCardgetPreviousCard(PKCardcard){Point2Dpoint=newPoint2D(card.getLocation().getX(),card.getLocation().getY()-5);card=(PKCard)table.get(point);if(card!=null){ returncard;//上面牌背面向上 }point=newPoint2D(point.getX(),point.getY()-15);card=(PKCard)table.get(point);returncard;//上面牌正面向上} publicPoint2DgetGroundLabelLocation(intcolumn){ returnpoint[column];} publicvoiddeal(){this.setNA();//判斷10列中是否空列 for(inti=0;i<10;i++){if(this.getLastCardLocation(i)==null){ finalStagestage=newStage();GrouprootGroup=newGroup();Scenescene=newScene(rootGroup,350,100,Color.PURPLE);stage.setScene(scene);stage.centerOnScreen();stage.show();Texttext=newText(20,110,"提示:有空位不能發(fā)牌!");text.setX(40);text.setY(50);text.setFill(Color.DODGERBLUE);text.setEffect(newLighting());text.setFont(Font.font(Font.getDefault().getFamily(),28));rootGroup.getChildren().add(text);stage.show();return;}} System.out.println(+c);if(this.c<60){for(inti=0;i<=9;i++){ Point2DLastPoint=this.getLastCardLocation(i); LastPoint=newPoint2D(LastPoint.getX(),LastPoint.getY()+20); Pathpath=PathBuilder.create().elements(newMoveTo(cards[59-c-i].getLocation().getX(),cards[59-c-i].getLocation().getY()),newCubicCurveTo(55.5+101*i,LastPoint.getY()+48,55.5+101*i,LastPoint.getY()+48,55.5+101*i,LastPoint.getY()+48)).build();path.setStroke(Color.DODGERBLUE);path.getStrokeDashArray().setAll(0d,10000d);root1.getChildren().add(path);pathTransition=PathTransitionBuilder.create().duration(Duration.seconds(0.5)).path(path).node(cards[59-c-i]).orientation(OrientationType.NONE).cycleCount(1).autoReverse(false).build();pathTransition.play();try{Thread.sleep(1);//毫秒}catch(Exceptione){} table.remove(cards[59-c-i].getLocation()); cards[59-c-i].moveto(LastPoint); table.put(LastPoint,cards[59-c-i]); cards[59-c-i].turnFront(); cards[59-c-i].setCanMove(true); cards[59-c-i].toFront(); Point2Dpoint=newPoint2D(LastPoint.getX(),LastPoint.getY()); if(cards[59-c-i].getCardValue()==1){intn=cards[59-c-i].whichColumnAvailable(point);point=newPoint2D(point.getX(),point.getY()-240);PKCardcard=(PKCard)this.table.get(point);if(card!=null&&card.isCardCanMove()){this.haveFinish(n);}} }c+=10;System.out.println(+c);} } publicintgetC(){returnc;} publicvoidsetGrade(intgrade){this.grade=grade;} publicvoidshowEnableOperator(){intx=0;out:while(true){Point2Dpoint=null;PKCardcard=null;do{if(point!=null){ n++; }point=this.getLastCardLocation(n);while(point==null){point=this.getLastCardLocation(++n);if(n==10)n=0;x++;if(x==10)breakout;}card=(PKCard)this.table.get(point);}while(!card.isCardCanMove());while(this.getPreviousCard(card)!=null&&this.getPreviousCard(card).isCardCanMove()){card=this.getPreviousCard(card);////撲克牌1}if(a==10){ a=0; }for(;a<10;a++){if(a!=n){Point2Dp=null;PKCardc=null;do{if(p!=null){ a++; } p=this.getLastCardLocation(a);intz=0;while(p==null){p=this.getLastCardLocation(++a);if(a==10)a=0;if(a==n)a++;z++;if(z==10)breakout;}c=(PKCard)this.table.get(p);//撲克牌2}while(!c.isCardCanMove());if(c.getCardValue()==card.getCardValue()+1){card.flashCard(card);try{Thread.sleep(800);}catch(InterruptedExceptione){e.printStackTrace();}c.flashCard(c);a++;if(a==10){ n++; }breakout;}}}n++;if(n==10){ n=0; }x++;if(x==10){ breakout; }}} publicvoidsetLabelZOrder(){for(inti=0;i<10;i++){ label[i].toBack();} } publicvoidhaveFinish(intcolumn){Point2Dpoint=this.getLastCardLocation(column);PKCardcard=(PKCard)this.table.get(point);do{ Pathpath=PathBuilder.create().elements(newMoveTo(card.getLocation().getX(),card.getLocation().getY()),newCubicCurveTo(55.5+finish*10,628,55.5+finish*10,628,55.5+finish*10,628)).build();path.setStroke(Color.DODGERBLUE);path.getStrokeDashArray().setAll(0d,10000d);root1.getChildren().add(path);pathTransition=PathTransitionBuilder.create().duration(Duration.seconds(0.5)).path(path).node(card).orientation(OrientationType.NONE).cycleCount(1).autoReverse(false).build();pathTransition.play();try{Thread.sleep(1);//毫秒}catch(Exceptione){} this.table.remove(point);card.moveto(newPoint2D(20+finish*10,580));card.toFront();//將紙牌新的相關(guān)信息存入Hashtable this.table.put(card.getLocation(),card);card.setCanMove(false);point=this.getLastCardLocation(column);if(point==null)card=null;elsecard=(PKCard)this.table.get(point);}while(card!=null&&card.isCardCanMove());finish++;//如果8付牌全部組合成功,則顯示成功的對話框 if(finish==8){ finalStagestage=newStage();GrouprootGroup=newGroup();Scenescene=newScene(rootGroup,400,150,Color.BLUE);stage.setScene(scene);stage.setTitle("通知");stage.centerOnScreen();stage.show();Texttext=newText(20,110,"恭喜你,順利通關(guān)!");text.setFill(Color.DODGERBLUE);text.setEffect(newLighting());text.setFont(Font.font(Font.getDefault().getFamily(),40));rootGroup.getChildren().add(text);stage.show();return;}if(card!=null){card.turnFront();card.setCanMove(true);}} publicdoublegetSampleWidth(){ return1024; } publicdoublegetSampleHeight(){ return724; } @Override publicvoidstart(StageprimaryStage)throwsException{ init(primaryStage); primaryStage.show();} /** *@paramargs */ publicstaticvoidmain(String[]args){ launch(args); } }2SpiderMenu.javaimportjavafx.scene.Group;importjavafx.scene.Scene;importjavafx.scene.control.ColorPicker;importjavafx.scene.control.Label;importjavafx.scene.control.Menu;importjavafx.scene.control.MenuBar;importjavafx.scene.control.MenuBuilder;importjavafx.scene.control.MenuItem;importjavafx.scene.control.MenuItemBuilder;importjavafx.scene.control.ToolBar;importjavafx.scene.control.ToolBarBuilder;importjavafx.scene.effect.Lighting;importjavafx.scene.input.MouseEvent;importjavafx.scene.layout.VBox;importjavafx.scene.layout.VBoxBuilder;importjavafx.scene.paint.Color;importjavafx.scene.shape.Rectangle;importjavafx.scene.text.Font;importjavafx.scene.text.Text;importjavafx.stage.Stage;importjavafx.event.ActionEvent;importjavafx.event.Event;importjavafx.event.EventHandler;importjavafx.geometry.Insets;importjavafx.geometry.Pos; publicclassSpiderMenu{ Spidermain=null; VBoxvbox=newVBox();finalMenuBarmenuBar=newMenuBar();MenuItemmenuOpen=MenuItemBuilder.create().text("開局").build();MenuItemmenuRefapai=MenuItemBuilder.create().text("重新發(fā)牌").build();MenuItemmenuEnableOperator=MenuItemBuilder.create().text("顯示可行操作").build();MenuItemmenuExit=MenuItemBuilder.create().text("退出").build();MenuItemmenuEasy=MenuItemBuilder.create().text("簡單:單花色").build();MenuItemmenuMedium=MenuItemBuilder.create().text("中等:雙花色").build();MenuItemmenuHard=MenuItemBuilder.create().text("困難:四花色").build();MenuItemmenuGameRule=MenuItemBuilder.create().text("游戲規(guī)則").build();MenuItemmenuStatement=MenuItemBuilder.create().text("聲明").build();publicSpiderMenu(Spiderspider){ this.main=spider; MenumenuGrade=MenuBuilder.create().text("等級設(shè)置").items(menuEasy,menuMedium,menuHard).build(); MenumenuAbout=MenuBuilder.create().text("關(guān)于").items(menuGameRule,menuStatement).build(); MenumenuGame=MenuBuilder.create().text("游戲").items(menuOpen,menuRefapai,menuEnableOperator,menuGrade,menuExit).build(); MenumenuHelp=MenuBuilder.create().text("幫助").items(menuAbout).build();menuBar.getMenus().addAll(menuGame,menuHelp);menuBar.setPrefWidth(1024);vbox.getChildren().addAll(menuBar/*,standardToolbar,coloredObjectsVBox*/);main.root1.getChildren().addAll(vbox); //鼠標(biāo)監(jiān)聽menuOpen.setOnAction(newEventHandler<ActionEvent>(){publicvoidhandle(ActionEventme){ menuRefapai.setDisable(false); main.newGame();}});menuRefapai.setOnAction(newEventHandler<ActionEvent>(){publicvoidhandle(ActionEventme){ if(main.getC()<60){main.deal(); }}});menuEnableOperator.setOnAction(newEventHandler<ActionEvent>(){publicvoidhandle(ActionEventme){ newShow().start(); }});menuExit.setOnAction(newEventHandler<ActionEvent>(){publicvoidhandle(ActionEventme){ System.exit(0);}});menuEasy.setOnAction(newEventHandler<ActionEvent>(){publicvoidhandle(ActionEventme){ main.setGrade(Spider.EASY);main.initCards();main.newGame();}});menuMedium.setOnAction(newEventHandler<ActionEvent>(){publicvoidhandle(ActionEventme){ main.setGrade(Spider.NATURAL);main.initCards();main.newGame();}});menuHard.setOnAction(newEventHandler<ActionEvent>(){publicvoidhandle(ActionEventme){ main.setGrade(Spider.HARD);main.initCards();main.newGame();}});menuGameRule.setOnAction(newEventHandler<ActionEvent>(){publicvoidhandle(ActionEventme){ finalStagestage=newStage();GrouprootGroup=newGroup();Scenescene=newScene(rootGroup,300,150,Color.rgb(50,10,0));stage.setScene(scene);stage.setTitle("游戲規(guī)則");stage.centerOnScreen();stage.show();Texttext=newText(20,110,"撲克牌從A到K構(gòu)成一條龍"+"\n"+"請將相同類型的撲克牌集齊"+"\n"+"一共集齊八條龍即可通關(guān)。");text.setFill(Color.DODGERBLUE);text.setX(20);text.setY(50);text.setEffect(newLighting());text.setFont(Font.font(Font.getDefault().getFamily(),20));rootGroup.getChildren().add(text);stage.show();return; }});menuStatement.setOnAction(newEventHandler<ActionEvent>(){publicvoidhandle(ActionEventme){ finalStagestage=newStage();GrouprootGroup=newGroup();Scenescene=newScene(rootGroup,300,150,Color.rgb(50,0,20));stage.setScene(scene);stage.setTitle("聲明");stage.centerOnScreen();stage.show();Texttext=newText(20,110,"版權(quán)所有,侵權(quán)必究!"+"\n"+"開玩笑的啦,哈哈哈!!!"+"\n"+"--------Sketch");text.setFill(Color.DODGERBLUE);text.setX(20);text.setY(50);text.setEffect(newLighting());text.setFont(Font.font(Font.getDefault().getFamily(),20));rootGroup.getChildren().add(text);stage.show();return;}});menuGame.setOnAction(newEventHandler<ActionEvent>(){publicvoidhandle(ActionEventme){ if(main.getC()<60){ menuRefapai.setDisable(false);}else{ menuRefapai.setDisable(true);}}}); }classShowextendsThread{publicvoidrun(){main.showEnableOperator();}}} 3PKCard.javaimportjavafx.geometry.Point2D;importjavafx.scene.image.Image;importjavafx.scene.image.ImageView;importjavafx.scene.input.MouseEvent;//構(gòu)造撲克牌PKCard publicclassPKCardextendsImageView{ Point2Dpoint=null; Point2DinitPoint=null; // Point2Dp1=null; intvalue=0; inttype=0; booleancanMove=false; booleanisFront=false; Spidermain=null; Stringname=null; PKCardpreviousCard=null; publicPKCard(Stringname,Spiderspider){ super(); this.type=newInteger(name.substring(0,1)).intValue(); this.value=newInteger(name.substring(2)).intValue(); =name; this.main=spider; this.setImage(newImage("images/rear.gif")); this.setVisible(true); } publicvoidflashCard(PKCardcard){ //啟動Flash線程 newFlash(card).start(); //不停的獲得下一張牌,直到完成 if(main.getNextCard(card)!=null){ card.flashCard(main.getNextCard(card)); } }classFlashextendsThread{ privatePKCardcard=null; publicFlash(PKCardcard){ this.card=card; } /* **線程的run()方法 **為紙牌的正面設(shè)置白色圖片 */ publicvoidrun(){ booleanis=false; Imageicon=newImage("images/white.gif"); for(inti=0;i<4;i++){ try{ Thread.sleep(200); } catch(InterruptedExceptione){ e.printStackTrace(); } if(is){ this.card.turnFront(); is=!is; } else{ this.card.setImage(icon); is=!is; } } } } publicvoidturnRear(){ this.setImage(newImage("images/rear.gif")); this.isFront=false; this.canMove=false; } publicvoidturnFront(){ this.setImage(newImage("images/"+name+".gif")); this.isFront=true; } publicvoidsetLocation(Point2Dp){ this.setX(p.getX()); this.setY(p.getY()); } publicvoidmoveto(Point2Dpoint){ this.setLocation(point); this.initPoint=point; } publicPoint2DgetLocation(){ Point2Dpoint=newPoint2D(this.getX(),this.getY());//=newPoint2D(this.getX(),this.getY()); returnpoint; }
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度水上樂園游泳館場地租賃與水上樂園配套設(shè)施租賃協(xié)議
- 2025年度老舊小區(qū)外墻改造工程安全責(zé)任合同
- 二零二五年度國際貿(mào)易信用證業(yè)務(wù)代理及風(fēng)險(xiǎn)管理協(xié)議
- 海洋漁業(yè)資源保護(hù)與海產(chǎn)品銷售一體化合同
- 二零二五年度企業(yè)用工協(xié)議與勞動權(quán)益保障與員工激勵機(jī)制合同
- 二零二五年度廠房裝修施工安全責(zé)任與綠色施工標(biāo)準(zhǔn)協(xié)議書
- 2025年度酒店與旅游紀(jì)念品店合作經(jīng)營合同
- 二零二五年度籃球活動參與者免責(zé)責(zé)任協(xié)議
- 二零二五年度汽車美容店員工勞動爭議解決合同模板
- 二零二五年度農(nóng)村房屋贈與合同附農(nóng)業(yè)保險(xiǎn)合作協(xié)議
- 經(jīng)濟(jì)學(xué)彈性理論課件
- 公司員工獎懲制度流程
- 星巴克案例分析-星巴克成功之道
- 把未來點(diǎn)亮歌詞打印版
- 危險(xiǎn)化學(xué)品建設(shè)項(xiàng)目竣工驗(yàn)收報(bào)告
- 國家中醫(yī)藥管理局第3批24個專業(yè)104個病種中醫(yī)診療方案
- 婦產(chǎn)科學(xué)(第9版)第三章 女性生殖系統(tǒng)生理
- LY/T 2241-2014森林生態(tài)系統(tǒng)生物多樣性監(jiān)測與評估規(guī)范
- GB/T 9086-2007用于色度和光度測量的標(biāo)準(zhǔn)白板
- 2023年山東力明科技職業(yè)學(xué)院高職單招(數(shù)學(xué))試題庫含答案解析
- GB/T 24338.4-2018軌道交通電磁兼容第3-2部分:機(jī)車車輛設(shè)備
評論
0/150
提交評論