2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課</b></p><p><b>  程</b></p><p><b>  設</b></p><p><b>  計</b></p><p><b>  報</b></p><p

2、><b>  告</b></p><p><b>  實驗名稱:Java</b></p><p>  學 院:xx職業(yè)技術學院</p><p>  系 別:信息系</p><p>  姓 名:xxx</p><p>  專 業(yè):xxxxxx1&l

3、t;/p><p>  課 題:貪吃蛇</p><p><b>  任課教師:xxx</b></p><p><b>  摘要3</b></p><p>  Abstract3</p><p><b>  一.詳細設計4</b></p>

4、<p><b>  1.屬性解釋4</b></p><p>  2.初始化坐標:4</p><p><b>  3.調用線程4</b></p><p>  4.具體功能實現:5</p><p>  4.1.移動功能的實現:5</p><p>  4.2

5、.吃食物功能實現:6</p><p>  4.3.判斷游戲是否結束的功能實現:8</p><p>  4.4.畫圖方法的實現9</p><p>  4.5.監(jiān)聽鍵盤動作:10</p><p>  5.界面的設計:11</p><p>  5.1進入程序界面設計11</p><p> 

6、 5.2第2個界面的設計:12</p><p>  5.3第3個界面設計:12</p><p>  6.把程序植入手機中13</p><p>  二.字符設備驅動程序實現13</p><p><b>  三.總結:14</b></p><p><b>  四.致謝14<

7、/b></p><p><b>  摘要</b></p><p>  程序核心思想:運行程序首界面(進入游戲,退出游戲)進入游戲后選擇難度(簡單,普通,高難)根據不同的難度設置相應的屬性。進入游戲界面。首先初始化蛇的坐標,食物的坐標,和障礙物的坐標。然后獲取當前屏幕的大小為將來的邊界判斷做準備。然后創(chuàng)建并執(zhí)行線程。</p><p>  線

8、程基本流程:判斷是否是暫停階段,如果沒有暫停就執(zhí)行:eatFood();move(direction); repaint();如果游戲結束了就重新游戲或者退出。</p><p><b>  Abstract</b></p><p>  Core of the process: first running the program interface (into the

9、game, withdraw from the game) into the game after the difficult choice of (simple, ordinary, highly difficult) depending on the difficulty of setting the corresponding attribute. Into the game interface. First initialize

10、 the coordinates of the snake, coordinates food, and the coordinates of obstructions. And access to the size of the current screen for the future of the border to prepare for judgement. And then create and executi</p&

11、gt;<p><b>  一.詳細設計</b></p><p><b>  1.屬性解釋</b></p><p>  用1個2維數組snake[200][2]存放蛇身坐標,第2維是0的時候代表橫坐標,為1的時候為縱坐標。第1維數字代表蛇身方塊的數字,例如snake[0][0] 就代表蛇頭的橫坐標snake[1][1]就代表第2個方塊

12、的總坐標。snakeNum為蛇的長度(以方格為單位)。SNAKEWIDTH為方格大小。direction;為移動方向,zhangai0x,zhangai1x,zhangai2x,zhangai3x,zhangai0y,zhangai1y,</p><p>  zhangai2y,zhangai3y,為障礙物的坐標。foodx,foody為食物的坐標。isPaused為判定是否是暫停狀態(tài),true為暫停false為

13、非暫停。A為難度系數,a可以為1,2,3。1的時候最難,3的時候最簡單。SLEEP_TIME為系統(tǒng)沉睡時間,其值越小速度越快。</p><p><b>  2.初始化坐標:</b></p><p>  isPaused = true; // 設置游戲開始為暫停狀態(tài)</p><p>  snakeNum = 7; //設置蛇身長度7個方

14、格</p><p>  // 循環(huán)依次初始化蛇身沒個方格的坐標,蛇頭的坐標為(100,40)</p><p>  for(int i = 0;i < snakeNum;i++) </p><p><b>  {</b></p><p>  snake[i][0] = 100 - SNAKEWIDTH

15、* i; </p><p>  snake[i][1] = 40;</p><p><b>  }</b></p><p>  //初始化移動方向為向右</p><p>  direction = DIRECTION_RIGHT;</p><p><b>  //初

16、始化食物坐標</b></p><p>  foodX = 100;</p><p>  foodY = 100;</p><p>  //初始化障礙物的坐標,其位置環(huán)繞擋住食物,</p><p>  zhangai0x=foodX+4*a;</p><p>  zhangai0y=foodY+4*a;<

17、;/p><p>  zhangai1x=foodX+4*a;</p><p>  zhangai1y=foodY-4*a;</p><p>  zhangai2x=foodX-4*a;</p><p>  zhangai2y=foodY+4*a;</p><p>  zhangai3x=foodX-4*a;</p&g

18、t;<p>  zhangai3y=foodY-4*a;</p><p><b>  3.調用線程</b></p><p>  thread = new Thread(this);</p><p>  thread.start();</p><p>  while (isRun) //開始時間</p

19、><p><b>  {</b></p><p>  if(!isPaused)</p><p><b>  {</b></p><p>  eatFood(); //吃食物</p><p>  move(direction); //移動 </p>&

20、lt;p>  if(gameover) //如果游戲結束</p><p><b>  {</b></p><p>  isRun = false;</p><p>  restart();</p><p><b>  break;</b></p><p>  }

21、 </p><p>  b = !b; //閃爍控制</p><p><b>  }</b></p><p>  repaint(); //重新畫圖</p><p>  Thread.sleep(SLEEP_TIME);</p><p><b>  }&

22、lt;/b></p><p>  開始創(chuàng)建并執(zhí)行線程,如果沒有暫停就執(zhí)行eatFood();move(direction);然后判斷游戲是否結束,然后重新畫圖repaint();然后等待SLEEP_TIME時間繼續(xù)循環(huán)。</p><p><b>  4.具體功能實現:</b></p><p>  4.1.移動功能的實現: </p&g

23、t;<p>  private void move(int direction)</p><p><b>  {</b></p><p>  //除蛇頭外的蛇身坐標移動</p><p>  for(int i = snakeNum - 1;i > 0;i--)</p><p><b>  {

24、</b></p><p>  snake[i][0] = snake[i - 1][0];</p><p>  snake[i][1] = snake[i - 1][1];</p><p><b>  }</b></p><p><b>  //蛇頭坐標的移動</b></p>

25、<p>  switch(direction)</p><p><b>  {</b></p><p>  case DIRECTION_UP:</p><p>  snake[0][1] = snake[0][1] - SNAKEWIDTH;</p><p><b>  break;</b

26、></p><p>  case DIRECTION_DOWN:</p><p>  snake[0][1] = snake[0][1] + SNAKEWIDTH;</p><p><b>  break;</b></p><p>  case DIRECTION_LEFT:</p><p>

27、;  snake[0][0] = snake[0][0] - SNAKEWIDTH;</p><p><b>  break;</b></p><p>  case DIRECTION_RIGHT:</p><p>  snake[0][0] = snake[0][0] + SNAKEWIDTH;</p><p><

28、;b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  坐標移動的總體思想:</p><p>  蛇身的移動:移動的時候,后面的方格要到前面方格的位置,也就是要讓后面的方格的坐標變成前面方格的坐標。即把前面

29、方格的坐標賦值給后面的方格坐標。就是讓最后方格的坐標變成倒數第2個方格的坐標,倒數第2個方格坐標變成倒數第3個方格坐標,依次類推直到第2個方格變成第1個方格的坐標。這樣我們循環(huán)都最后還沒有第1個方格的坐標,所以我們另將蛇頭的坐標賦值。</p><p>  蛇頭的移動:這和蛇當前移動的方向有關,以向上移動為例,那蛇頭的坐標應該橫坐標不變,縱坐標減去方格的長度,因為在屏幕上左上點為(0,0)越往左橫坐標越大,越往下縱

30、坐標越大。所以向上移動縱坐標要減小。其他方向的坐標運算如上述代碼,也不難解釋。</p><p>  注意:關于蛇身移動的循環(huán)for(int i = snakeNum - 1;i > 0;i--) 他是先給后面的值賦值最后循環(huán)到正數第2個方格。開始我想反過來,從第2個開始賦值再循環(huán)都最后,實驗的時候卻和以前的方式運行結果不一樣。移動的時候蛇不管有多長就只能看到2個方格在移動。后來發(fā)現,我這樣改是不對的,按照我

31、的思路a[1][0]=a[0][0];a[2][0]=a[1][0];…….仔細看后就發(fā)現我把a[0][0]的值賦給a[1][0]又把a[1][0]的值賦給a[2][0],我樣有值的覆蓋,也就是我讓蛇身的所有方格的值全是a[0][0]的,再家上蛇頭移動后蛇頭的新坐標,屏幕上就只有2個方格了。</p><p>  4.2.吃食物功能實現:</p><p>  private void eat

32、Food(){</p><p>  //判別蛇頭是否和食物重疊</p><p>  if(snake[0][0] == foodX && snake[0][1] == foodY){</p><p>  snakeNum++;</p><p>  generateFood();</p><p><

33、b>  }</b></p><p><b>  }</b></p><p><b>  /**</b></p><p><b>  * 產生食物</b></p><p>  * 說明:食物的坐標必須位于屏幕內,且不能和蛇身重合</p><p

34、><b>  */</b></p><p>  private void generateFood()</p><p><b>  {</b></p><p>  while(true)</p><p><b>  {</b></p><p>  

35、foodX = Math.abs(random.nextInt() % (width - SNAKEWIDTH + 1)) </p><p>  / SNAKEWIDTH * SNAKEWIDTH;</p><p>  foodY = Math.abs(random.nextInt() % (height - SNAKEWIDTH + 1)) </p><p>  

36、/ SNAKEWIDTH * SNAKEWIDTH; </p><p>  zhangai0x=foodX+4*a;</p><p>  zhangai0y=foodY+4*a;</p><p>  zhangai1x=foodX+4*a;</p><p>  zhangai1y=foodY-4*a;</p><p>

37、  zhangai2x=foodX-4*a;</p><p>  zhangai2y=foodY+4*a;</p><p>  zhangai3x=foodX-4*a;</p><p>  zhangai3y=foodY-4*a;</p><p>  boolean b = true;</p><p>  for(in

38、t i = 0;i < snakeNum;i++)</p><p><b>  {</b></p><p>  if(foodX == snake[i][0] && snake[i][1] == foodY)</p><p><b>  {</b></p><p>  b =

39、false;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(b)</b></p><p><b>  {

40、</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  該

41、功能的總體思路:</b></p><p>  如果蛇頭的坐標和食物的坐標一樣,也就是吃到了食物,蛇的長度+1并且產生新的食物。</p><p>  生成食物的方法:隨機生成新的坐標賦值給食物坐標。并要保證隨機生成的坐標在屏幕內而且隨機生成的食物坐標不能和蛇身重合。生成新的食物后,在食物周圍生成新的障礙物坐標。</p><p>  隨機產生食物坐標的方法:

42、</p><p>  foodX = Math.abs(random.nextInt() % (width - SNAKEWIDTH + 1)) </p><p>  / SNAKEWIDTH * SNAKEWIDTH;</p><p>  說來慚愧直到現在我還是不明白為什么經過這樣的運算后得到的坐標就一定在屏幕內。</p><p>  但我

43、至少知道這樣的運算可以得到必在屏幕內的坐標。</p><p>  4.3.判斷游戲是否結束的功能實現:</p><p>  public boolean isGameOver(){</p><p><b>  //邊界判別</b></p><p>  if(snake[0][0] < 0 || snake[0][0

44、] > (width - SNAKEWIDTH) ||</p><p>  snake[0][1] < 0 || snake[0][1] > (height - SNAKEWIDTH)){</p><p>  return true;</p><p><b>  }</b></p><p><b&

45、gt;  //碰到自身</b></p><p>  for(int i = 4;i < snakeNum;i++)</p><p><b>  {</b></p><p>  if(snake[0][0] == snake[i][0] </p><p>  && snake[0][1]

46、== snake[i][1])</p><p><b>  {</b></p><p>  return true;</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  //

47、碰到障礙 </b></p><p>  if(snake[0][0]==zhangai0x && snake[0][1]==zhangai0y)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b>

48、</p><p>  if(snake[0][0]==zhangai1x && snake[0][1]==zhangai1y)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b></p><

49、p>  if(snake[0][0]==zhangai2x && snake[0][1]==zhangai2y)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b></p><p>  if(snake[

50、0][0]==zhangai3x && snake[0][1]==zhangai3y)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b></p><p>  return false;</p>

51、<p><b>  }</b></p><p>  該功能的思路也簡單:蛇撞到屏幕邊緣游戲結束,蛇碰到自身游戲也要結束,蛇碰到障礙還是要結束游戲。在判斷邊界的時候為什么是snake[0][0] > (width - SNAKEWIDTH)呢?因為其坐標是方格左上頂點的坐標,當蛇頭的左上頂點與屏幕右面相隔方格邊長的時候,其實蛇頭已經碰到屏幕的右邊。</p><

52、;p>  4.4.畫圖方法的實現</p><p>  protected void paint(Graphics g) {</p><p><b>  //清屏</b></p><p>  g.setColor(0xffffff); //畫筆設置成白色</p><p>  g.fillRect(0,0,widt

53、h,height); //把整個屏幕都繪制成白色</p><p>  g.setColor(0); //把畫筆再設置成黑色</p><p><b>  //繪制蛇身</b></p><p>  for(int i = 0;i < snakeNum;i++){</p><p>  g.fillRect(sna

54、ke[i][0],snake[i][1],SNAKEWIDTH,SNAKEWIDTH);</p><p><b>  }</b></p><p>  g.fillRect(zhangai0x,zhangai0y,SNAKEWIDTH,SNAKEWIDTH);</p><p>  g.fillRect(zhangai1x,zhangai1y,SN

55、AKEWIDTH,SNAKEWIDTH);</p><p>  g.fillRect(zhangai2x,zhangai2y,SNAKEWIDTH,SNAKEWIDTH);</p><p>  g.fillRect(zhangai3x,zhangai3y,SNAKEWIDTH,SNAKEWIDTH);</p><p><b>  //繪制食物</b&

56、gt;</p><p><b>  if(b){</b></p><p>  g.fillRect(foodX,foodY,SNAKEWIDTH,SNAKEWIDTH);</p><p><b>  }</b></p><p>  if(isGameOver())</p><p&

57、gt;<b>  {</b></p><p>  g.drawString("Game Over", 60, 60, Graphics.TOP | Graphics.LEFT);</p><p><b>  }</b></p><p><b>  }</b></p>

58、<p>  總體思路:首先清空屏幕內的內容,然后畫出當前的蛇,食物,障礙物,因為該方法是在線程中被循環(huán)調用的。每隔SLEEP_TIME就被執(zhí)行1次,在循環(huán)中以為其他方法的調用,蛇,食物,障礙物的坐標是在變化的,這樣在不停的繪畫新坐標的過程中,就形成了動畫效果。</p><p>  1.清空屏幕內容的方法:因為我們想畫的蛇的顏色是黑色,我們先把畫筆設置成白色,然后把整個屏幕都繪制成白色,因為沒畫東西的時

59、候屏幕也是百的,這樣我們看到屏幕中就什么也沒有了。然后我們再把畫筆設置成黑色,畫將要畫的內容。</p><p>  2.繪制方格的方法:利用fillRect(a,b,c,d)方法進行繪制。a,b為方格的左上頂點坐標,c為以(a,b)為頂點的長度,d為高度,畫完的結果就是以(a,b)為左上頂點,c為長度d為高度的矩形被畫筆添滿顏色,因為我們設置的畫筆顏色為黑色,所以我們看到的是全黑的方格。</p>&

60、lt;p>  3.在屏幕中顯示字體的方法:drawString("Game Over", 60, 60, Graphics.TOP | Graphics.LEFT)第1個參數為要寫字的內容,第2,3個參數是顯示的坐標位置,第4個參數是用來確定原點,這我也是從網上查到的。在Graphics類里public static final int LEFT=4; public static final int TOP=

61、16;還有其他類似的值都是2的N次方。這樣做的目的就在于,當兩個或多個錨點定位方式通過位與的方法計算后,根據這個計算得到的和可以還原回參與位與計算的各個數值,從而得到有幾種錨點定位方式,然后J2ME根據還原回的值來設置錨點的位置。</p><p>  4.食物閃現:在繪畫食物的時候</p><p><b>  if(b)</b></p><p>

62、;<b>  {</b></p><p>  g.fillRect(foodX,foodY,SNAKEWIDTH,SNAKEWIDTH);</p><p><b>  }</b></p><p>  只有b是真值的時候才畫方格,也就是b是假值的時候是不畫的。這樣做是因為在線程中每循環(huán)1次就執(zhí)行1次b=!b;這樣b的值在真與

63、假之間來回變化,食物也在屏幕中出現,不出現,出現,不出現,這樣就形成了食物閃爍的效果。與障礙形成對比,使用戶看的更方便。</p><p>  4.5.監(jiān)聽鍵盤動作:</p><p>  public void keyPressed(int keyCode){</p><p>  int action = this.getGameAction(keyCode);<

64、;/p><p><b>  //改變方向</b></p><p>  switch(action){</p><p><b>  case UP:</b></p><p>  if(direction != DIRECTION_DOWN){</p><p>  direction

65、 = DIRECTION_UP;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case DOWN:</p><p>  if(direction != DIRECTION_UP){</p><p>  dire

66、ction = DIRECTION_DOWN;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case LEFT:</p><p>  if(direction != DIRECTION_RIGHT){</p><p

67、>  direction = DIRECTION_LEFT;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case RIGHT:</p><p>  if(direction != DIRECTION_LEFT){</p&

68、gt;<p>  direction = DIRECTION_RIGHT;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case FIRE:</p><p><b>  //暫停和繼續(xù)</b><

69、;/p><p>  isPaused = !isPaused;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  用getGameAction(keyCode

70、)方法獲取當前對鍵盤的操作,以上為例</p><p><b>  case UP:</b></p><p>  if(direction != DIRECTION_DOWN)</p><p><b>  {</b></p><p>  direction = DIRECTION_UP;</p&

71、gt;<p><b>  }</b></p><p><b>  break;</b></p><p>  首先想要蛇移動的方向變成上,要判斷當前蛇的移動方向是否是向下,因為當蛇是向下移動的時候,不能讓蛇變成向下移動,所以要想蛇想上移動,要先判斷蛇當前移動的方向不是向下。</p><p><b> 

72、 5.界面的設計:</b></p><p>  5.1進入程序界面設計</p><p>  執(zhí)行程序首先進入的界面進入游戲和退出游戲的選擇。如果進入進入第2個界面,如果退出就退出程序。</p><p>  private TextBox textbox; //定義匡</p><p>  private Command ente

73、r; //定義按狃</p><p>  private Command exit;</p><p>  enter=new Command("Enter",Command.OK,1); //設置按狃信息</p><p>  exit=new Command("Exit",Command.OK,1);</p>

74、<p>  textbox=new TextBox("SnakeGame","",40,0); //設置文本匡</p><p>  textbox.addCommand(enter); //添加按鈕到匡里</p><p>  textbox.addCommand(exit);</p><p>  text

75、box.setCommandListener(this); //監(jiān)聽</p><p>  public void commandAction(Command arg0,Displayable arg1)</p><p><b>  {</b></p><p>  if(arg0==enter)</p><p><

76、;b>  { </b></p><p>  display.setCurrent(textbox2);</p><p><b>  }</b></p><p>  if(arg0==exit)</p><p><b>  {</b></p><p>

77、  destroyApp(false);</p><p>  notifyDestroyed(); </p><p><b>  }</b></p><p><b>  }</b></p><p>  5.2第2個界面的設計:</p><p>  選擇難度(簡單,普通

78、,高難)然后進入相應的難度游戲</p><p>  TextBox textbox2;</p><p>  Command jiandan;</p><p>  Command putong;</p><p>  Command gaonan;</p><p>  jiandan=new Command("j

79、iandan",Command.OK,1);</p><p>  putong=new Command("putong",Command.OK,1);</p><p>  gaonan=new Command("gaonan",Command.OK,1);</p><p>  textbox2=new TextBox

80、("nanduxuanze","",40,0);</p><p>  textbox2.addCommand(jiandan);</p><p>  textbox2.addCommand(putong);</p><p>  textbox2.addCommand(gaonan);</p><p> 

81、 textbox2.addCommand(exit);</p><p>  textbox2.setCommandListener(this);</p><p>  if(arg0==gaonan)</p><p><b>  {</b></p><p>  displayable.setA(1);</p>

82、<p>  display.setCurrent(displayable);</p><p><b>  }</b></p><p>  if(arg0==putong)</p><p><b>  {</b></p><p>  displayable.setA(2);</p&g

83、t;<p>  display.setCurrent(displayable);</p><p><b>  }</b></p><p>  if(arg0==jiandan)</p><p><b>  { </b></p><p>  displayable.setA(3)

84、;</p><p>  display.setCurrent(displayable);</p><p><b>  }</b></p><p>  5.3第3個界面設計:</p><p>  在游戲中可以修改游戲難度,游戲結束的時候可以重新游戲,可以 隨時推出游戲。</p><p>  priv

85、ate Command restart;</p><p>  restart=new Command("Restart",Command.OK,1);</p><p>  displayable.addCommand(gaonan); // displayable是執(zhí)行游戲類的對象</p><p>  displayable.addCo

86、mmand(putong);</p><p>  displayable.addCommand(jiandan); </p><p>  displayable.addCommand(restart);</p><p>  displayable.addCommand(exit2);</p><p>  displa

87、yable.setCommandListener(this);</p><p>  //想要重新游戲,就想設置當前游戲結束,重新初始化數據即restart()方法,然后在開始游戲</p><p>  if(arg0==restart) </p><p><b>  { </b><

88、/p><p>  displayable.setGameOver();</p><p>  displayable.restart();</p><p>  display.setCurrent(displayable);</p><p><b>  }</b></p><p>  其中display

89、=Display.getDisplay(this);然后對display對象使用display對象是獲取當前Display的信息,我們可以理解成display對象現在盛放的是1個像框</p><p>  SnakeCanvas displayable = new SnakeCanvas(); SnakeCanvas類中是相關于游戲本身的程序</p><p>  Displayable對象

90、現在可以理解成盛放的是相片內容</p><p>  display.setCurrent(displayable); </p><p>  這樣我們就可以理解成把相片里的內容放進像框里。</p><p>  6.把程序植入手機中</p><p>  如何把程序傳進手機使起運行:</p><p>  由于實驗是前幾天做

91、的,現在有些細節(jié)忘記了,只能憑印象寫了。</p><p>  打開WTK2.5.2。</p><p>  創(chuàng)建1個package,包的名字可隨意起但下面的要起成繼承MIDlet的類名。</p><p>  點擊創(chuàng)建右面的名字忘記了,設置第1個菜單為custerm下面什么忘記了選2.0然后OK。</p><p>  然后把程序的workspac

92、e中的src文件下的代碼復制到WTK中的src下。</p><p>  具體位置在C盤,什么什么SET。。具體名字忘了,然后選J2ME。。,然后apps,然后好象就能看到src目錄了。</p><p>  然后build一下,然后在上面有個按鈕名字忘了,點完之后有個創(chuàng)建package。</p><p>  在WTK下的bin文件下就能找到轉化好的jar文件,把他拷貝

93、到手機就可以運行了。</p><p>  二.字符設備驅動程序實現</p><p>  實驗題目:字符設備驅動程序</p><p>  實驗目的:實現嵌入式Linux系統(tǒng)下的字符設備驅動程序,要求動態(tài)生成設備號,并在測試程序中,通過超級終端分行顯示數0-39,可參考demo驅動程序實驗過程。</p><p>  上述過程需在板子端進行,執(zhí)行動

94、態(tài)加載驅動,并通過超級終端監(jiān)視測試程序運行結果。</p><p><b>  實驗過程:</b></p><p>  打開虛擬機,新建終端,找到demo文件</p><p>  Up-techpxa270--exp---drives---01….--找到demo 文件</p><p>  2. 輸入以下命令vi demo

95、.c vi demotest.c,可以查看目錄,修改輸入數字的個數和方式,里面有個錯誤,就是主設備號那沒有返回值,需要修改。修改方法只需要把上面那的返回代碼,一樣的寫1遍。</p><p>  3. 輸入命令make 生成.o文件。</p><p>  4. 連接好扳子,打開超級終端。</p><p>  5. 掛載虛擬機那邊的 up-techpxa270文

96、件,我機器虛擬機IP為192.168.0.123</p><p>  掛載到mnt目錄下。</p><p>  具體命令:mount –o nolock 192.168.0.123:/up-techpxa270/ /mnt</p><p>  6. mnt--exp---drives---01….--找到demo.o文件</p><p> 

97、 創(chuàng)建目錄 mkdir /dev/demo</p><p>  創(chuàng)建節(jié)點 mknod /dev/demo c 254 0</p><p>  加載驅動 insmod demo.ko</p><p>  執(zhí)行程序 . / demotest</p><p>  即可完成實驗要求,顯示出0到39的數字。</p><p>&

98、lt;b>  三.總結:</b></p><p>  我想要寫出好的程序,需要我們有扎實的基礎,這樣遇到一些基本算法的時候可能就會游刃有余了。在編程是我們要有豐富的想象力。不要拘泥于固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想象力是建立在豐富的知識的基礎上,所以我們要通過多的途徑來幫助自己建立較豐富的知識結構。 在編程是我們碰到了很多的困難,這就需要

99、我們多與別人交流。三人行必有我?guī)?,也許在一次和別人不經意的談話中,就可以迸出靈感的火花。在編程的過程中我們也看到了有良好的編程風格是十分重要的,至少在時間效率上就體現了這一點。養(yǎng)成良好的習慣,代碼的縮進編排,變量的命名規(guī)則要始終保持一致,這些都是提高我們編程的注意點。 還有在變成中最能體現簡單的原則。所以我們要思考討論簡單的程序,這樣簡單的方法更容易被人理解,更容易實現,也更容易維護。遇到問題時要優(yōu)先考慮最簡單的方案,只有簡單方案不能

100、滿足要求時再考慮復雜的方案。</p><p><b>  四.致謝</b></p><p>  首先要感謝交我們xx老師,正是他對我們平時的嚴格要求,我才能學到那么多的知識。剛開始接觸這門課,我感覺學的很吃力,正是老師通俗,幽默的講課方式幫我一步步的克服困難。老師平時非常的辛苦,每天備課都要做到很晚,平時講課的時候又是那么的認真,爭取要我們沒個同學都能聽明白,我們都深

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論