精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何使用ncurses進(jìn)行顏色編程

開發(fā) 后端
在這篇文章中,我用一個簡單的例子來展示通過 curses 函數(shù)進(jìn)行顏色操作。在我先前的文章中,我寫了一個可以讓你在一個粗糙繪制的地圖上移動玩家角色的初級冒險類游戲。但是那里面的地圖完全是白色和黑色的文本,通過形狀來表明是水(~)或者山(^)。所以,讓我們將游戲更新到使用顏色的版本吧。

使用ncurses進(jìn)行顏色編程

Jim 給他的終端冒險游戲添加了顏色,演示了如何用 curses 操縱顏色。

在我的使用 ncurses 庫進(jìn)行編程的系列文章的第一篇第二篇中,我已經(jīng)介紹了一些 curses 函數(shù)來在屏幕上作畫、從屏幕上查詢和從鍵盤讀取字符。為了搞清楚這些函數(shù),我使用 curses 來利用簡單字符繪制游戲地圖和玩家角色,創(chuàng)建了一個簡單的冒險游戲。在這篇緊接著的文章里,我展示了如何為你的 curses 程序添加顏色。

在屏幕上繪圖一切都挺好的,但是如果只有黑底白字的文本,你的程序可能看起來很無趣。顏色可以幫助傳遞更多的信息。舉個例子,如果你的程序需要報告執(zhí)行成功或者執(zhí)行失敗時。在這樣的情況下你可以使用綠色或者紅色來幫助強調(diào)輸出。或者,你只是簡單地想要“潮藝”一下給你的程序來讓它看起來更美觀。

在這篇文章中,我用一個簡單的例子來展示通過 curses 函數(shù)進(jìn)行顏色操作。在我先前的文章中,我寫了一個可以讓你在一個粗糙繪制的地圖上移動玩家角色的初級冒險類游戲。但是那里面的地圖完全是白色和黑色的文本,通過形狀來表明是水()或者山(^)。所以,讓我們將游戲更新到使用顏色的版本吧。

 

顏色要素

在你可以使用顏色之前,你的程序需要知道它是否可以依靠終端正確地顯示顏色。在現(xiàn)代操作系統(tǒng)上,此處應(yīng)該永遠(yuǎn)為true。但是在經(jīng)典的計算機上,一些終端是單色的,例如古老的 VT52 和 VT100 終端,一般它們提供黑底白色或者黑底綠色的文本。

可以使用 has_colors() 函數(shù)查詢終端的顏色功能。這個函數(shù)將會在終端可以顯示顏色的時候返回 true,否則將會返回 false。這個函數(shù)一般用于 if 塊的開頭,就像這樣:

  1. if (has_colors() == FALSE) {
  2. endwin();
  3. printf("Your terminal does not support color\n");
  4. exit(1);
  5. }

在知道終端可以顯示顏色之后,你可以使用 start_color() 函數(shù)來設(shè)置 curses 使用顏色。現(xiàn)在是時候定義程序?qū)⒁褂玫念伾恕?/p>

在 curses 中,你應(yīng)該按對定義顏色:一個前景色放在一個背景色上。這樣允許 curses 一次性設(shè)置兩個顏色屬性,這也是一般你想要使用的方式。通過 init_pair() 函數(shù)可以定義一個前景色和背景色并關(guān)聯(lián)到索引數(shù)字來設(shè)置顏色對。大致語法如下:

  1. init_pair(index, foreground, background);

控制臺支持八種基礎(chǔ)的顏色:黑色、紅色、綠色、黃色、藍(lán)色、品紅色、青色和白色。這些顏色通過下面的名稱為你定義好了:

  • COLOR_BLACK
  • COLOR_RED
  • COLOR_GREEN
  • COLOR_YELLOW
  • COLOR_BLUE
  • COLOR_MAGENTA
  • COLOR_CYAN
  • COLOR_WHITE

 

應(yīng)用顏色

在我的冒險游戲中,我想要讓草地呈現(xiàn)綠色而玩家的足跡變成不易察覺的綠底黃色點跡。水應(yīng)該是藍(lán)色,那些表示波浪的 ~ 符號應(yīng)該是近似青色的。我想讓山(^)是灰色的,但是我可以用白底黑色文本做一個可用的折中方案。(LCTT 譯注:意為終端預(yù)設(shè)的顏色沒有灰色,使用白底黑色文本做一個折中方案)為了讓玩家的角色更易見,我想要使用一個刺目的品紅底紅色設(shè)計。我可以像這樣定義這些顏色對:

  1. start_color();
  2. init_pair(1, COLOR_YELLOW, COLOR_GREEN);
  3. init_pair(2, COLOR_CYAN, COLOR_BLUE);
  4. init_pair(3, COLOR_BLACK, COLOR_WHITE);
  5. init_pair(4, COLOR_RED, COLOR_MAGENTA);

為了讓顏色對更容易記憶,我的程序中定義了一些符號常量:

  1. #define GRASS_PAIR 1
  2. #define EMPTY_PAIR 1
  3. #define WATER_PAIR 2
  4. #define MOUNTAIN_PAIR 3
  5. #define PLAYER_PAIR 4

有了這些常量,我的顏色定義就變成了:

  1. start_color();
  2. init_pair(GRASS_PAIR, COLOR_YELLOW, COLOR_GREEN);
  3. init_pair(WATER_PAIR, COLOR_CYAN, COLOR_BLUE);
  4. init_pair(MOUNTAIN_PAIR, COLOR_BLACK, COLOR_WHITE);
  5. init_pair(PLAYER_PAIR, COLOR_RED, COLOR_MAGENTA);

在任何時候你想要使用顏色顯示文本,你只需要告訴 curses 設(shè)置哪種顏色屬性。為了更好的編程實踐,你同樣應(yīng)該在你完成了顏色使用的時候告訴 curses 取消顏色組合。為了設(shè)置顏色,應(yīng)該在調(diào)用像 mvaddch() 這樣的函數(shù)之前使用attron(),然后通過 attroff() 關(guān)閉顏色屬性。例如,在我繪制玩家角色的時候,我應(yīng)該這樣做:

  1. attron(COLOR_PAIR(PLAYER_PAIR));
  2. mvaddch(y, x, PLAYER);
  3. attroff(COLOR_PAIR(PLAYER_PAIR));

記住將顏色應(yīng)用到你的程序?qū)δ闳绾尾樵兤聊挥幸恍┪⒚畹挠绊憽R话銇碇v,由 mvinch() 函數(shù)返回的值是沒有帶顏色屬性的類型 chtype,這個值基本上是一個整型值,也可以當(dāng)作整型值來用。但是,由于使用顏色添加了額外的屬性到屏幕上的字符上,所以 chtype 按照擴展的位模式攜帶了額外的顏色信息。一旦你使用 mvinch(),返回值將會包含這些額外的顏色值。為了只提取文本值,例如在 is_move_okay() 函數(shù)中,你需要和 A_CHARTEXT& 位運算:

  1. int is_move_okay(int y, int x)
  2. {
  3. int testch;
  4.  
  5. /* return true if the space is okay to move into */
  6.  
  7. testch = mvinch(y, x);
  8. return (((testch & A_CHARTEXT) == GRASS)
  9. || ((testch & A_CHARTEXT) == EMPTY));
  10. }

通過這些修改,我可以用顏色更新這個冒險游戲:

  1. /* quest.c */
  2.  
  3. #include <curses.h>
  4. #include <stdlib.h>
  5.  
  6. #define GRASS ' '
  7. #define EMPTY '.'
  8. #define WATER '~'
  9. #define MOUNTAIN '^'
  10. #define PLAYER '*'
  11.  
  12. #define GRASS_PAIR 1
  13. #define EMPTY_PAIR 1
  14. #define WATER_PAIR 2
  15. #define MOUNTAIN_PAIR 3
  16. #define PLAYER_PAIR 4
  17.  
  18. int is_move_okay(int y, int x);
  19. void draw_map(void);
  20.  
  21. int main(void)
  22. {
  23. int y, x;
  24. int ch;
  25.  
  26. /* 初始化curses */
  27.  
  28. initscr();
  29. keypad(stdscr, TRUE);
  30. cbreak();
  31. noecho();
  32.  
  33. /* 初始化顏色 */
  34.  
  35. if (has_colors() == FALSE) {
  36. endwin();
  37. printf("Your terminal does not support color\n");
  38. exit(1);
  39. }
  40.  
  41. start_color();
  42. init_pair(GRASS_PAIR, COLOR_YELLOW, COLOR_GREEN);
  43. init_pair(WATER_PAIR, COLOR_CYAN, COLOR_BLUE);
  44. init_pair(MOUNTAIN_PAIR, COLOR_BLACK, COLOR_WHITE);
  45. init_pair(PLAYER_PAIR, COLOR_RED, COLOR_MAGENTA);
  46.  
  47. clear();
  48.  
  49. /* 初始化探索地圖 */
  50.  
  51. draw_map();
  52.  
  53. /* 在左下角創(chuàng)建新角色 */
  54.  
  55. y = LINES - 1;
  56. x = 0;
  57.  
  58. do {
  59.  
  60. /* 默認(rèn)情況下,你獲得了一個閃爍的光標(biāo)--用來指明玩家 * */
  61.  
  62. attron(COLOR_PAIR(PLAYER_PAIR));
  63. mvaddch(y, x, PLAYER);
  64. attroff(COLOR_PAIR(PLAYER_PAIR));
  65. move(y, x);
  66. refresh();
  67.  
  68. ch = getch();
  69.  
  70. /* 測試輸入鍵值并獲取方向 */
  71.  
  72. switch (ch) {
  73. case KEY_UP:
  74. case 'w':
  75. case 'W':
  76. if ((y > 0) && is_move_okay(y - 1, x)) {
  77. attron(COLOR_PAIR(EMPTY_PAIR));
  78. mvaddch(y, x, EMPTY);
  79. attroff(COLOR_PAIR(EMPTY_PAIR));
  80. y = y - 1;
  81. }
  82. break;
  83. case KEY_DOWN:
  84. case 's':
  85. case 'S':
  86. if ((y < LINES - 1) && is_move_okay(y + 1, x)) {
  87. attron(COLOR_PAIR(EMPTY_PAIR));
  88. mvaddch(y, x, EMPTY);
  89. attroff(COLOR_PAIR(EMPTY_PAIR));
  90. y = y + 1;
  91. }
  92. break;
  93. case KEY_LEFT:
  94. case 'a':
  95. case 'A':
  96. if ((x > 0) && is_move_okay(y, x - 1)) {
  97. attron(COLOR_PAIR(EMPTY_PAIR));
  98. mvaddch(y, x, EMPTY);
  99. attroff(COLOR_PAIR(EMPTY_PAIR));
  100. x = x - 1;
  101. }
  102. break;
  103. case KEY_RIGHT:
  104. case 'd':
  105. case 'D':
  106. if ((x < COLS - 1) && is_move_okay(y, x + 1)) {
  107. attron(COLOR_PAIR(EMPTY_PAIR));
  108. mvaddch(y, x, EMPTY);
  109. attroff(COLOR_PAIR(EMPTY_PAIR));
  110. x = x + 1;
  111. }
  112. break;
  113. }
  114. }
  115. while ((ch != 'q') && (ch != 'Q'));
  116.  
  117. endwin();
  118.  
  119. exit(0);
  120. }
  121.  
  122. int is_move_okay(int y, int x)
  123. {
  124. int testch;
  125.  
  126. /* 當(dāng)空白處可以進(jìn)入的時候返回true */
  127.  
  128. testch = mvinch(y, x);
  129. return (((testch & A_CHARTEXT) == GRASS)
  130. || ((testch & A_CHARTEXT) == EMPTY));
  131. }
  132.  
  133. void draw_map(void)
  134. {
  135. int y, x;
  136.  
  137. /* 繪制探索地圖 */
  138.  
  139. /* 背景 */
  140.  
  141. attron(COLOR_PAIR(GRASS_PAIR));
  142. for (y = 0; y < LINES; y++) {
  143. mvhline(y, 0, GRASS, COLS);
  144. }
  145. attroff(COLOR_PAIR(GRASS_PAIR));
  146.  
  147. /* 山峰和山路 */
  148.  
  149. attron(COLOR_PAIR(MOUNTAIN_PAIR));
  150. for (x = COLS / 2; x < COLS * 3 / 4; x++) {
  151. mvvline(0, x, MOUNTAIN, LINES);
  152. }
  153. attroff(COLOR_PAIR(MOUNTAIN_PAIR));
  154.  
  155. attron(COLOR_PAIR(GRASS_PAIR));
  156. mvhline(LINES / 4, 0, GRASS, COLS);
  157. attroff(COLOR_PAIR(GRASS_PAIR));
  158.  
  159. /* 湖 */
  160.  
  161. attron(COLOR_PAIR(WATER_PAIR));
  162. for (y = 1; y < LINES / 2; y++) {
  163. mvhline(y, 1, WATER, COLS / 3);
  164. }
  165. attroff(COLOR_PAIR(WATER_PAIR));
  166. }

你可能不能認(rèn)出所有為了在冒險游戲里面支持顏色需要的修改,除非你目光敏銳。diff 工具展示了所有為了支持顏色而添加的函數(shù)或者修改的代碼:

  1. $ diff quest-color/quest.c quest/quest.c
  2. 12,17d11
  3. < #define GRASS_PAIR 1
  4. < #define EMPTY_PAIR 1
  5. < #define WATER_PAIR 2
  6. < #define MOUNTAIN_PAIR 3
  7. < #define PLAYER_PAIR 4
  8. <
  9. 33,46d26
  10. < /* initialize colors */
  11. <
  12. < if (has_colors() == FALSE) {
  13. < endwin();
  14. < printf("Your terminal does not support color\n");
  15. < exit(1);
  16. < }
  17. <
  18. < start_color();
  19. < init_pair(GRASS_PAIR, COLOR_YELLOW, COLOR_GREEN);
  20. < init_pair(WATER_PAIR, COLOR_CYAN, COLOR_BLUE);
  21. < init_pair(MOUNTAIN_PAIR, COLOR_BLACK, COLOR_WHITE);
  22. < init_pair(PLAYER_PAIR, COLOR_RED, COLOR_MAGENTA);
  23. <
  24. 61d40
  25. < attron(COLOR_PAIR(PLAYER_PAIR));
  26. 63d41
  27. < attroff(COLOR_PAIR(PLAYER_PAIR));
  28. 76d53
  29. < attron(COLOR_PAIR(EMPTY_PAIR));
  30. 78d54
  31. < attroff(COLOR_PAIR(EMPTY_PAIR));
  32. 86d61
  33. < attron(COLOR_PAIR(EMPTY_PAIR));
  34. 88d62
  35. < attroff(COLOR_PAIR(EMPTY_PAIR));
  36. 96d69
  37. < attron(COLOR_PAIR(EMPTY_PAIR));
  38. 98d70
  39. < attroff(COLOR_PAIR(EMPTY_PAIR));
  40. 106d77
  41. < attron(COLOR_PAIR(EMPTY_PAIR));
  42. 108d78
  43. < attroff(COLOR_PAIR(EMPTY_PAIR));
  44. 128,129c98
  45. < return (((testch & A_CHARTEXT) == GRASS)
  46. < || ((testch & A_CHARTEXT) == EMPTY));
  47. ---
  48. > return ((testch == GRASS) || (testch == EMPTY));
  49. 140d108
  50. < attron(COLOR_PAIR(GRASS_PAIR));
  51. 144d111
  52. < attroff(COLOR_PAIR(GRASS_PAIR));
  53. 148d114
  54. < attron(COLOR_PAIR(MOUNTAIN_PAIR));
  55. 152d117
  56. < attroff(COLOR_PAIR(MOUNTAIN_PAIR));
  57. 154d118
  58. < attron(COLOR_PAIR(GRASS_PAIR));
  59. 156d119
  60. < attroff(COLOR_PAIR(GRASS_PAIR));
  61. 160d122
  62. < attron(COLOR_PAIR(WATER_PAIR));
  63. 164d125
  64. < attroff(COLOR_PAIR(WATER_PAIR));

 

開始玩吧--現(xiàn)在有顏色了

程序現(xiàn)在有了更舒服的顏色設(shè)計了,更匹配原來的桌游地圖,有綠色的地、藍(lán)色的湖和壯觀的灰色山峰。英雄穿著紅色的制服十分奪目。

圖 1. 一個簡單的帶湖和山的桌游地圖

圖 1. 一個簡單的帶湖和山的桌游地圖

圖 2. 玩家站在左下角

圖 2. 玩家站在左下角

圖 3. 玩家可以在游戲區(qū)域移動,比如圍繞湖,通過山的通道到達(dá)未知的區(qū)域。

圖 3. 玩家可以在游戲區(qū)域移動,比如圍繞湖,通過山的通道到達(dá)未知的區(qū)域。

通過顏色,你可以更清楚地展示信息。這個例子使用顏色指出可游戲的區(qū)域(綠色)相對著不可通過的區(qū)域(藍(lán)色或者灰色)。我希望你可以使用這個示例游戲作為你自己的程序的一個起點或者參照。這取決于你需要你的程序做什么,你可以通過 curses 做得更多。

在下一篇文章,我計劃展示 ncurses 庫的其它特性,比如怎樣創(chuàng)建窗口和邊框。同時,如果你對于學(xué)習(xí) curses 有興趣,我建議你去讀位于 Linux 文檔計劃 的 Pradeep Padala 寫的 NCURSES Programming HOWTO。 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2023-04-12 08:00:00

人工智能ChatGPTPython

2010-01-18 17:14:50

C++語言

2021-04-26 05:33:54

Python異步編程

2018-05-30 08:01:17

LinuxNcurses編程庫

2018-10-10 14:21:06

Python 工具程序員

2018-09-08 09:25:05

編程語言PythonVS Code

2015-12-11 13:39:56

GoiOSAndroid

2011-10-08 11:05:04

GPUMATLAB

2009-01-18 11:45:16

PHPXML網(wǎng)站編程

2010-02-02 14:11:14

Python 進(jìn)行編程

2009-08-27 15:33:58

C# Cookie編程

2021-09-06 09:10:31

Linuxncurses定位文本

2024-02-07 11:44:20

NestJSRxJS異步編程

2011-12-08 10:24:53

JavaNIO

2010-03-15 15:45:15

Python編程語言

2010-01-28 10:18:50

Visual StudXML編程

2010-01-20 10:49:29

Visual C++界

2020-10-15 12:00:01

Python 開發(fā)編程語言

2021-02-22 13:44:41

開發(fā)Python金融

2025-01-27 11:52:23

點贊
收藏

51CTO技術(shù)棧公眾號

日韩欧美精品| 91精品xxx在线观看| 国产东北露脸精品视频| 久久久久久久久久久91| 久久偷拍免费视频| 亚洲精品一区三区三区在线观看| 亚洲丝袜另类动漫二区| 精品乱码一区| 亚洲系列在线观看| 亚洲精品麻豆| 日韩在线视频线视频免费网站| 男生和女生一起差差差视频| 91久久国产综合久久91猫猫| 亚洲日本va午夜在线影院| 国产伦精品一区二区三毛| 自拍偷拍第八页| 黄色综合网站| www.欧美三级电影.com| 亚洲精品在线视频免费观看| 9999在线精品视频| 色综合天天综合网天天看片 | 美女av一区| 欧美二区三区的天堂| 成年人黄色片视频| 国产蜜臀一区二区打屁股调教| 久久精品这里都是精品| 国产亚洲第一区| 国产熟女一区二区三区四区| h片精品在线观看| 卡通动漫精品一区二区三区| **欧美大码日韩| 免费电影一区| 人妻丰满熟妇av无码区hd| 精品一区二区三区视频在线观看| 国产成人精品免高潮费视频| 国产亚洲成人精品| 亚洲情侣在线| 久久久精品欧美| 毛片久久久久久| 精品国产一区二区三区小蝌蚪 | 丰满少妇在线观看bd| 久久国产精品无码网站| 日韩av123| 日韩精品1区2区| 国产日韩欧美一区| 欧美激情女人20p| 美女福利视频在线观看| 这里只有精品在线| 久久国产精品久久久久| 欧美黄色免费观看| 欧美a级一区| 久久精品国产69国产精品亚洲| 林心如三级全黄裸体| 精品久久不卡| 中文字幕欧美精品日韩中文字幕| 一级黄色性视频| 神马久久一区二区三区| 亚洲一区二区黄| 三区四区在线观看| 日韩片欧美片| 久久精品视频亚洲| 91嫩草|国产丨精品入口| 国产精品成人一区二区不卡| 久久精品久久久久久国产 免费| 国产精品无码无卡无需播放器| re久久精品视频| 国产一区二区欧美日韩| 色www亚洲国产阿娇yao| 国产精品久久占久久| 欧美成年人网站| 欧美国产精品一二三| 激情久久婷婷| 欧美综合激情网| 超碰在线观看91| 久久国产精品免费| 91国产在线播放| 狠狠躁日日躁夜夜躁av| 96av麻豆蜜桃一区二区| 日本一区高清在线视频| 午夜国产福利在线| 亚洲丝袜另类动漫二区| 妞干网在线观看视频| 成人国产二区| 欧美日韩不卡视频| 欧美极品jizzhd欧美仙踪林| 午夜精品影视国产一区在线麻豆| 中文在线资源观看视频网站免费不卡| 中文字幕在线2021| 亚洲高清激情| 国产精品第二页| 99riav国产| 95精品视频在线| 正在播放一区| 老司机深夜福利在线观看| 在线观看日韩精品| 69久久精品无码一区二区| 婷婷成人影院| 超碰精品一区二区三区乱码| 国产成人精品亚洲男人的天堂| 人人精品人人爱| 97久久天天综合色天天综合色hd | 欧美福利视频一区二区| 美女一区二区视频| 国产欧美一区二区视频 | 久久91精品国产91久久跳| 国产精品黄色大片| 激情六月婷婷久久| 鲁片一区二区三区| 国产cdts系列另类在线观看| 欧美性xxxx极品hd满灌| xxx中文字幕| 超碰成人久久| 欧美亚洲国产日本| 精品人妻无码一区二区色欲产成人 | 国产一区二区电影在线观看| 色综合91久久精品中文字幕| 波多野结衣高清在线| 成人午夜激情影院| 一区在线电影| 免费成人直播| 精品国产a毛片| 午夜精品一区二区三级视频| 久久久久中文| 九九九九精品| 蜜臀av在线播放| 欧美放荡的少妇| 我不卡一区二区| 久久精品国语| 精品不卡在线| 91福利在线免费| 日韩一区二区三区免费看| 欧洲性xxxx| 日韩av高清在线观看| 玛丽玛丽电影原版免费观看1977| 手机在线免费av| 制服丝袜激情欧洲亚洲| 精品视频第一页| 日韩二区三区四区| 日本成人黄色免费看| 激情aⅴ欧美一区二区欲海潮| 日韩精品一区二区三区在线观看| 成人在线视频一区二区三区| 久久精品第一页| 日韩精品福利网| 精品欧美一区二区久久久伦| 91九色国产在线播放| 亚洲精品一线二线三线无人区| 精国产品一区二区三区a片| 精品在线观看视频| 在线日韩av永久免费观看| 国产香蕉久久| 日韩在线视频中文字幕| 国产三级在线观看视频| 亚洲另类一区二区| 国产精品二区视频| 欧美日韩1080p| 国产精品自拍首页| 天堂√中文最新版在线| 亚洲乱码一区av黑人高潮| 特级做a爱片免费69| 久久九九99视频| 亚洲一级片免费| 天天射—综合中文网| 亚洲综合中文字幕68页| 日本理论片午伦夜理片在线观看| 精品国产一区a| 三级视频在线观看| 国产欧美一区二区在线| 亚洲xxx在线观看| 欧美日本一区| 免费观看国产成人| 国产精品高潮久久| 欧美精品免费在线观看| 天天干天天做天天操| 色综合久久中文综合久久牛| 亚洲第一视频区| 国产成人99久久亚洲综合精品| 可以看毛片的网址| 国内精品视频在线观看| 91色p视频在线| 嗯啊主人调教在线播放视频| 亚洲人午夜精品| 91丨九色丨丰满| 亚洲亚洲精品在线观看| 丰满少妇高潮一区二区| 国产在线视频一区二区| 亚洲人成无码网站久久99热国产 | 精久久久久久久久久久| 人妻激情另类乱人伦人妻| 免费成人高清在线视频theav| 国产欧美日韩精品在线观看| 精品日韩av| 亚洲日韩中文字幕| 九九九热999| 理论在线观看| 日韩一区二区免费在线电影| 日韩不卡视频在线| 亚洲美女视频在线观看| 爱爱免费小视频| 国产福利一区二区三区视频 | 一区二区成人免费视频| 99久久免费视频.com| 久久久久久久久久久久久久久国产| 亚洲欧洲日本mm| 中国一区二区三区| 香蕉视频一区二区三区| 亚洲tv在线观看| 婷婷综合六月| 久久久久成人网| 五月婷婷在线观看| 亚洲精品小视频| 性一交一乱一精一晶| 欧美三级在线看| 91精品国产乱码久久久张津瑜| 国产精品久久久久久户外露出| 国产肉体xxxx裸体784大胆| 国产激情视频一区二区在线观看| 欧美精品aaaa| 久久九九精品| 成人免费视频91| 中文字幕日韩一区二区不卡| 色噜噜一区二区| 50一60岁老妇女毛片| 99在线精品视频在线观看| 超级碰在线观看| 图片区亚洲欧美小说区| 水蜜桃一区二区三区| 麻豆精品av| 国产精品一区视频| 在线日韩成人| 91在线观看免费观看| 国产69精品久久久久按摩| 日韩美女毛茸茸| 周于希免费高清在线观看| 国内精品视频一区| av影视在线看| 久久久久久免费精品| 久草免费在线| 久久久999国产精品| 免费**毛片在线| www.欧美免费| 欧美私人网站| 久久亚洲成人精品| 国产鲁鲁视频在线观看特色| 伦理中文字幕亚洲| 国产区在线看| 欧美大片免费看| 国产精品无码乱伦| 国产精品久久久久久久久久白浆| 91久久精品www人人做人人爽| 日韩欧美中文字幕在线视频 | 成人免费一区二区三区在线观看| 国产真人真事毛片视频| 国产精品进线69影院| 91n在线视频| 亚洲狠狠丁香婷婷综合久久久| 国内偷拍精品视频| 亚洲高清久久久| 国产成人在线免费视频 | 精品久久久久av| 每日更新成人在线视频| 天天影视综合色| 精品亚洲成a人在线观看| 成人高清在线观看视频| 成人av在线一区二区三区| 中文字幕av观看| 日本一区二区三区视频视频| 天天舔天天操天天干| 亚洲另类色综合网站| 国产精品99精品| 欧美性xxxxx极品| 91国内精品久久久| 欧美变态tickle挠乳网站| 性xxxx视频播放免费| 亚洲天堂第二页| 国产黄大片在线观看画质优化| 色中色综合影院手机版在线观看 | 国产精品美女主播在线观看纯欲| 欧美日韩破处视频| 不卡视频一区二区三区| 亚洲都市激情| 一区二区视频国产| 伊人久久大香线蕉av超碰演员| aaa毛片在线观看| 久久99久国产精品黄毛片色诱| 少妇献身老头系列| 久久久www成人免费无遮挡大片| 神马久久精品综合| 懂色av中文一区二区三区天美| 中文字字幕在线观看| 精品国产网站在线观看| 大片免费播放在线视频| 色综合天天综合网国产成人网| 国产 日韩 欧美一区| 亚洲资源在线看| 国产中文精品久高清在线不| 成人在线播放网址| 成人av综合网| 日韩精品极品在线观看| 奇米影视888狠狠狠777不卡| 久久久精品一区二区三区| 久久sese| 国产伦精品一区二区三毛| 久久亚洲国产| 欧美韩国日本在线| 成人免费高清视频| 欧美一级特黄高清视频| 色偷偷久久人人79超碰人人澡| 亚洲av永久无码国产精品久久| 中文字幕精品国产| 成人美女视频| 国产精品三区四区| 永久亚洲成a人片777777| 国产精品涩涩涩视频网站| 不卡在线观看av| 免费网站看av| 欧美电影在线免费观看| 国产资源在线播放| 97视频网站入口| 亚洲综合影院| 在线免费观看一区二区三区| 日本va欧美va精品发布| 国产熟女高潮一区二区三区| 亚洲夂夂婷婷色拍ww47| 91资源在线视频| 色香阁99久久精品久久久| 欧美特大特白屁股xxxx| 精品国产一区二区三| 欧美日韩亚洲一区在线观看| 一本一道久久a久久综合蜜桃| 日本一区二区视频在线| 国产成人无码专区| 国产丝袜一区视频在线观看 | 亚洲国产日韩精品| 国产婷婷在线视频| 欧美成人在线免费| 成人污污视频| 成年人黄色在线观看| 九九国产精品视频| 天天爽天天爽天天爽| 欧美三级欧美一级| 日本中文字幕在线视频| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 日韩电影中文字幕在线| 欧美四级在线| 99热99热| 一本综合精品| 国产精品无码一区二区三区免费| 精品美女久久久久久免费| 天天射天天色天天干| 国产91|九色| 国产一区二区三区电影在线观看| 爱福利视频一区二区| 国产日韩一级二级三级| 亚洲天堂五月天| 中文字幕欧美在线| av日韩久久| 欧美a级免费视频| 成人一级黄色片| 欧美一区二区三区成人久久片| 51vv免费精品视频一区二区| 久久av高潮av| 不卡免费追剧大全电视剧网站| 国产小视频在线免费观看| 亚洲欧美另类国产| 91九色综合| 国内自拍中文字幕| 91一区在线观看| 波多野结衣绝顶大高潮| 日韩在线免费av| 亚洲经典视频| 国产日韩一区二区在线| 亚洲国产成人自拍| a级片在线播放| 51视频国产精品一区二区| 国内精品久久久久久久久电影网 | 青青草国产一区二区三区| 影音先锋成人资源网站| 成人av免费观看| 奴色虐av一区二区三区| 久热精品视频在线免费观看| 国产精品毛片av| 天堂在线资源视频| 一级女性全黄久久生活片免费| 天堂成人在线观看| 国产精品男人爽免费视频1| 欧美日韩成人| 亚洲自拍偷拍图| 日韩欧美综合在线| 伊人久久综合一区二区| 中文字幕中文字幕在线中心一区| 不卡大黄网站免费看| 亚洲一卡二卡在线观看| 高清在线视频日韩欧美| 北条麻妃国产九九九精品小说| 美女露出粉嫩尿囗让男人桶| 欧洲精品视频在线观看| 国产盗摄一区二区| 亚洲精品国产精品国自产观看| 丁香桃色午夜亚洲一区二区三区 |