久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4633|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

c#下開發(fā)的五子棋,貪吃蛇,華容道,俄羅斯方塊小游戲源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:378844 發(fā)表于 2018-7-25 10:30 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
c#下開發(fā)的小游戲,歡迎交流

源碼包(含五子棋,貪吃蛇,華容道,俄羅斯方塊這幾個游戲):


下面是其中一個項目的源程序如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;

  9. using System.Net;
  10. using System.Collections;
  11. using System.IO;

  12. namespace 五子棋
  13. {
  14.     public partial class Form1 : Form
  15.     {
  16.         public Form1()
  17.         {
  18.             InitializeComponent();
  19.         }

  20.         public static int[,] note = new int[15, 15];//記錄棋子的擺放位置,0為白棋,1為黑棋
  21.         FrmClass frmclass = new FrmClass();
  22.         private static MessClass temMsg = new MessClass();
  23.         public static float Mouse_X = 0;//記錄鼠標(biāo)的X坐標(biāo)
  24.         public static float Mouse_Y = 0;//記錄鼠標(biāo)的Y坐標(biāo)
  25.         //下面是初始化必需設(shè)置的變量
  26.         public static bool ChessStyle = true;//黑方還是白方,true為黑方
  27.         public static bool CGrow = true;//當(dāng)前棋子的類型
  28.         public static bool DownChess = true;//對方是否下完棋
  29.         public static int CKind = -1;//設(shè)錄取勝的棋種,0為白棋

  30.         private void udpSocket1_DataArrival(byte[] Data, System.Net.IPAddress Ip, int Port)
  31.         {
  32.             DataArrivaldelegate outdelegate = new DataArrivaldelegate(DataArrival);
  33.             this.BeginInvoke(outdelegate, new object[] { Data, Ip, Port }); //設(shè)置托管
  34.         }

  35.         private delegate void DataArrivaldelegate(byte[] Data, System.Net.IPAddress Ip, int Port);
  36.         private void DataArrival(byte[] Data, System.Net.IPAddress Ip, int Port) //當(dāng)有數(shù)據(jù)到達(dá)后的處理進(jìn)程
  37.         {
  38.             //將接收的消息轉(zhuǎn)換成自定義集合MessClass
  39.             MessClass msg = new ClassSerializers().DeSerializeBinary((new System.IO.MemoryStream(Data))) as MessClass;
  40.             switch (msg.sendKind)//獲取發(fā)送的類型
  41.             {
  42.                 case SendKind.SendConn://連接
  43.                     {
  44.                         if (msg.ChessStyle)//判斷當(dāng)前棋子的類型
  45.                             ChessStyle = true;//黑棋
  46.                         else
  47.                             ChessStyle = false;//白棋
  48.                         CGrow = ChessStyle;//記錄當(dāng)前棋子的類型
  49.                         CKind = -1;//記錄取勝的棋子種類
  50.                         temMsg.sendKind = SendKind.SendConnHit;//設(shè)置消息發(fā)送類型為連接成功
  51.                         temMsg.ChessStyle = ChessStyle;//在發(fā)送消息中設(shè)置當(dāng)前棋子的類型
  52.                         //向遠(yuǎn)程計算機(jī)發(fā)送消息
  53.                         udpSocket1.Send(IPAddress.Parse(FrmClass.ServerIP), Convert.ToInt32(FrmClass.ClientPort), new ClassSerializers().SerializeBinary(temMsg).ToArray());
  54.                         break;
  55.                     }
  56.                 case SendKind.SendConnHit://連接成功
  57.                     {
  58.                         MessageBox.Show("連接成功");//顯示連接成功
  59.                         button1.Tag = 1;//設(shè)置標(biāo)識
  60.                         button1.Text = "重新開始";
  61.                         if (msg.ChessStyle)//如果是黑棋
  62.                         {
  63.                             ChessStyle = true;//設(shè)置本地的棋子類型為黑棋
  64.                             DownChess = true;//本地先下
  65.                             label2.Text = "黑棋";//顯示本地為黑棋
  66.                         }
  67.                         else
  68.                         {
  69.                             ChessStyle = false;//設(shè)置本地的棋子類型為白棋
  70.                             DownChess = false;//本地后下
  71.                             label2.Text = "白棋";//顯示本地為白棋
  72.                         }
  73.                         CGrow = ChessStyle;//記錄本地的棋子類型
  74.                         panel2.Visible = false;//隱藏最后落子的標(biāo)記
  75.                         break;
  76.                     }
  77.                 case SendKind.SendAfresh://重新下棋
  78.                     {
  79.                         //清空棋盤中各棋子的位置
  80.                         for (int i = 0; i < 15; i++)
  81.                             for (int j = 0; j < 15; j++)
  82.                                 note[i, j] = -1;
  83.                         Graphics g = panel1.CreateGraphics();//創(chuàng)健panel1控件的Graphics類
  84.                         g.DrawImage(Properties.Resources.棋盤, 0, 0, panel1.Width, panel1.Height);//清空棋盤
  85.                         if (msg.ChessStyle)//如果是黑棋
  86.                         {
  87.                             ChessStyle = true;//設(shè)置本地的棋子類型為黑棋
  88.                             DownChess = true;//設(shè)置本地的棋子類型為黑棋
  89.                             label2.Text = "黑棋";//顯示本地為黑棋
  90.                         }
  91.                         else
  92.                         {
  93.                             ChessStyle = false;//設(shè)置本地的棋子類型為白棋
  94.                             DownChess = false;//本地后下
  95.                             label2.Text = "白棋";//顯示本地為白棋
  96.                         }
  97.                         CGrow = ChessStyle;//記錄本地的棋子類型
  98.                         CKind = -1;//記錄取勝的棋子種類
  99.                         panel2.Visible = false;//隱藏最后落子的標(biāo)記
  100.                         break;
  101.                     }
  102.                 case SendKind.SendChessman://接收發(fā)送的棋子
  103.                     {
  104.                         int tem_CS = -1;
  105.                         Image tem_Image;//實例化Image類
  106.                         if (msg.Grow)//如果為黑棋
  107.                         {
  108.                             tem_CS = 1;//記錄棋子類型為黑棋
  109.                             CGrow = true;//記錄當(dāng)前為黑棋
  110.                             tem_Image = Properties.Resources.黑棋子;//存儲黑棋的圖片
  111.                         }
  112.                         else
  113.                         {
  114.                             tem_CS = 0;//記錄棋子類型為白棋
  115.                             CGrow = false;//記錄當(dāng)前為黑棋
  116.                             tem_Image = Properties.Resources.白棋子;//存儲白棋的圖片
  117.                         }
  118.                         note[msg.ChessX, msg.ChessY] = tem_CS;//在數(shù)組中記錄當(dāng)前棋子的位置
  119.                         Graphics g = panel1.CreateGraphics();
  120.                         g.DrawImage(tem_Image, msg.ChessX * 35 + 7, msg.ChessY * 35 + 7, 35, 35);//在棋盤中顯示對方下的棋子
  121.                         panel2.Visible = true;//顯示最后落子的標(biāo)記
  122.                         panel2.Location = new System.Drawing.Point(msg.ChessX * 35 + 20, msg.ChessY * 35 + 20);//將標(biāo)記顯示在棋子上
  123.                         DownChess = msg.Walk;//記錄對方是否下完棋
  124.                         CGrow = !msg.Grow;//記錄本地的棋子類型
  125.                         Arithmetic(tem_CS, msg.ChessX, msg.ChessY);//計算對方是否獲勝
  126.                         DownChess = true;//對方已下完棋
  127.                         break;
  128.                     }
  129.                 case SendKind.SendCut://斷開連接
  130.                     {
  131.                         temMsg.sendKind = SendKind.SendCutHit;//設(shè)置發(fā)送的類型為斷開連接
  132.                         //向遠(yuǎn)程計算機(jī)發(fā)送斷開消息
  133.                         udpSocket1.Send(IPAddress.Parse(FrmClass.ServerIP), Convert.ToInt32(FrmClass.ClientPort), new ClassSerializers().SerializeBinary(temMsg).ToArray());
  134.                         button1.Text = "連接";//顯當(dāng)前可重新連接
  135.                         button1.Tag = 0;//設(shè)置連接標(biāo)識
  136.                         break;
  137.                     }
  138.                 case SendKind.SendCutHit://斷開成功
  139.                     {
  140.                         udpSocket1.Active = false;//關(guān)閉UDP的連接
  141.                         Application.Exit();//關(guān)閉當(dāng)前工程
  142.                         break;
  143.                     }
  144.             }
  145.         }

  146.         private void button1_Click(object sender, EventArgs e)
  147.         {
  148.             //清空記錄各棋子位置的數(shù)組
  149.             for (int i = 0; i < 15; i++)
  150.                 for (int j = 0; j < 15; j++)
  151.                     note[i, j] = -1;
  152.             CKind = -1;//記錄棋子種類
  153.             if (Convert.ToInt32(((Button)sender).Tag.ToString()) == 0)//如當(dāng)前為開始連接
  154.             {
  155.                 if (textBox1.Text.Trim() == "")//如果IP地址為空
  156.                 {
  157.                     MessageBox.Show("請輸入IP地址。");
  158.                     return;
  159.                 }
  160.                 FrmClass.ServerIP = textBox1.Text;//記錄遠(yuǎn)程計算機(jī)的IP地址
  161.                 udpSocket1.Active = false;//關(guān)閉UDP的連接
  162.                 udpSocket1.LocalPort = 11001;//設(shè)置端口號
  163.                 udpSocket1.Active = true;//打開UDP的連接
  164.                 temMsg.sendKind = SendKind.SendConn;//設(shè)置發(fā)送類型為連接
  165.                 temMsg.ChessStyle = !ChessStyle;//設(shè)置對方的棋子類型
  166.             }
  167.             if (Convert.ToInt32(((Button)sender).Tag.ToString()) == 1)//如當(dāng)前為重新開始
  168.             {
  169.                 ChessStyle = !ChessStyle;//改變本地的棋子類型
  170.                 temMsg.sendKind = SendKind.SendAfresh;//設(shè)置消息類型為重新開始
  171.                 temMsg.ChessStyle = !ChessStyle;//設(shè)置遠(yuǎn)程計算機(jī)的棋子類型
  172.                 Graphics g = panel1.CreateGraphics();
  173.                 g.DrawImage(Properties.Resources.棋盤, 0, 0, panel1.Width, panel1.Height);//清空棋盤
  174.             }
  175.             if (ChessStyle)//如果本地的棋子類型為黑棋
  176.             {
  177.                 label2.Text = "黑棋";//顯示本地為黑棋
  178.                 DownChess = true;
  179.             }
  180.             else
  181.             {
  182.                 label2.Text = "白棋";//顯示本地為白棋
  183.                 DownChess = false;
  184.             }
  185.             CGrow = ChessStyle;//記錄當(dāng)前的棋子類型
  186.             panel2.Visible = false;//隱藏最后落子的標(biāo)記
  187.             //將消息發(fā)送給遠(yuǎn)程計算機(jī)
  188.             udpSocket1.Send(IPAddress.Parse(FrmClass.ServerIP), Convert.ToInt32(FrmClass.ClientPort), new ClassSerializers().SerializeBinary(temMsg).ToArray());
  189.         }

  190.         private void Form1_Load(object sender, EventArgs e)
  191.         {
  192.             //初始化記錄棋子的數(shù)組
  193.             for (int i = 0; i < 15; i++)
  194.                 for (int j = 0; j < 15; j++)
  195.                     note[i, j] = -1;
  196.             FrmClass.ClientIP = frmclass.MyHostIP();//獲取本地的IP地址
  197.             FrmClass.ClientPort = "11001";//獲取端口號
  198.         }

  199.         private void Form1_FontChanged(object sender, EventArgs e)
  200.         {

  201.         }

  202.         private void button2_Click(object sender, EventArgs e)
  203.         {
  204.             temMsg.sendKind = SendKind.SendCut;//設(shè)置發(fā)送的消息為斷開
  205.             if (FrmClass.ServerIP != "")//如果與遠(yuǎn)程計算機(jī)連接
  206.                 //將消息發(fā)送給遠(yuǎn)程計算機(jī)
  207.                 udpSocket1.Send(IPAddress.Parse(FrmClass.ServerIP), Convert.ToInt32(FrmClass.ClientPort), new ClassSerializers().SerializeBinary(temMsg).ToArray());
  208.             if (Convert.ToInt32(button1.Tag.ToString()) == 0)//如果沒有與遠(yuǎn)程計算機(jī)連接
  209.                 Application.Exit();//退出當(dāng)前工程
  210.         }

  211.         private void panel1_Paint(object sender, PaintEventArgs e)
  212.         {
  213.             Image tem_Image = Properties.Resources.白棋子;//實例化Image類
  214.             e.Graphics.DrawImage(Properties.Resources.棋盤, 0, 0, panel1.Width, panel1.Height);//清空棋盤
  215.             //遍歷已下完的棋子
  216.             for (int i = 0; i < 15; i++)
  217.                 for (int j = 0; j < 15; j++)
  218.                 {
  219.                     if (note[i, j] > -1)
  220.                     {
  221.                         if (note[i, j] == 0)//如果當(dāng)前是白棋
  222.                             tem_Image = Properties.Resources.白棋子;//在指定的位置繪制白棋
  223.                         if (note[i, j] == 1)//如果當(dāng)前是黑棋
  224.                             tem_Image = Properties.Resources.黑棋子;//在指定的位置繪制黑棋
  225.                         e.Graphics.DrawImage(tem_Image, i * 35 + 7, j * 35 + 7, 35, 35);//繪制已下完的棋子
  226.                     }
  227.                 }
  228.         }

  229.         private void panel1_Click(object sender, EventArgs e)
  230.         {
  231.             if (udpSocket1.Active == false)
  232.             {
  233.                 MessageBox.Show("沒有與遠(yuǎn)程計算機(jī)建立連接!");
  234.                 return;
  235.             }
  236.             if (DownChess == false)//如果對方?jīng)]有下完棋
  237.             {
  238.                 MessageBox.Show("對方?jīng)]有下完棋!");
  239.                 return;
  240.             }
  241.             if (CKind > -1)//如果當(dāng)前有棋子獲勝
  242.             {
  243.                 if (CKind == 0)//如果白棋獲勝
  244.                     Bwin();//顯示白棋獲勝的提示框
  245.                 if (CKind == 1)//如果黑棋獲勝
  246.                     Wwin();//顯示黑棋獲勝的提示框
  247.                 return;
  248.             }
  249.             int Column = Convert.ToInt32(Math.Round((Mouse_X - 30) / 35));//獲取當(dāng)前落子的所在列
  250.             int Row = Convert.ToInt32(Math.Round((Mouse_Y - 30) / 35));//獲取當(dāng)前落子的所在行
  251.             if (note[Column, Row] == -1)//如果當(dāng)前位置無棋子
  252.             {
  253.                 int tem_CS = -1;
  254.                 Image tem_Image;//實例化Image類
  255.                 if (CGrow)//如果當(dāng)前落子為黑棋
  256.                 {
  257.                     tem_CS = 1;
  258.                     CGrow = true;//記錄落子類型
  259.                     tem_Image = Properties.Resources.黑棋子;//存儲黑棋圖片
  260.                 }
  261.                 else
  262.                 {
  263.                     tem_CS = 0;
  264.                     CGrow = false;//記錄落子類型
  265.                     tem_Image = Properties.Resources.白棋子;//存儲白棋圖片
  266.                 }
  267.                 note[Column, Row] = tem_CS;//記錄當(dāng)前位置已有棋子
  268.                 Graphics g = panel1.CreateGraphics();
  269.                 g.DrawImage(tem_Image, Column * 35 + 7, Row * 35 + 7, 35, 35);//在棋盤中顯示當(dāng)前下的棋子
  270.                 panel2.Visible = true;//顯示最后落子的標(biāo)記
  271.                 panel2.Location = new System.Drawing.Point(Column * 35 + 20, Row * 35 + 20);//在棋子上顯示標(biāo)記
  272.                 DownChess = false;//對方?jīng)]有下棋

  273.                 temMsg.sendKind = SendKind.SendChessman;//設(shè)置發(fā)送的類型為發(fā)送棋子
  274.                 temMsg.ChessX = Column;//記錄棋子所在行
  275.                 temMsg.ChessY = Row;//記錄棋子所在列
  276.                 temMsg.Grow = CGrow;//記錄前棋子的類型
  277.                 temMsg.Walk = true;//記錄本地已下完棋
  278.                 //向遠(yuǎn)程計算機(jī)發(fā)送消息
  279.                 udpSocket1.Send(IPAddress.Parse(FrmClass.ServerIP), Convert.ToInt32(FrmClass.ClientPort), new ClassSerializers().SerializeBinary(temMsg).ToArray());
  280.                 Arithmetic(tem_CS, Column, Row);//計算本地是否獲勝
  281.             }
  282.         }

  283.         private void panel1_MouseDown(object sender, MouseEventArgs e)
  284.         {
  285.             //記錄鼠標(biāo)的單擊位置
  286.             Mouse_X = e.X;
  287.             Mouse_Y = e.Y;
  288.         }

  289.         /// <summary>
  290.         /// 算法
  291.         /// </summary>
  292.         public void Arithmetic(int n, int Arow, int Acolumn)//算法
  293.         {
  294.             int BCount = 1;
  295.             CKind = -1;//記錄棋子種類
  296.             //橫向查找
  297.             bool Lbol = true;
  298.             bool Rbol = true;
  299.             int jlsf = 0;
  300.             BCount = 1;
  301.             for (int i = 1; i <= 5; i++)
  302.             {
  303.                 if ((Acolumn + i) > 14)
  304.                     Rbol = false;
  305.                 if ((Acolumn - i) < 0)
  306.                     Lbol = false;
  307.                 if (Rbol == true)
  308.                 {
  309.                     if (note[Arow, Acolumn + i] == n)
  310.                         ++BCount;
  311.                     else
  312.                         Rbol = false;
  313.                 }
  314.                 if (Lbol == true)
  315.                 {
  316.                     if (note[Arow, Acolumn - i] == n)
  317.                         ++BCount;
  318.                     else
  319.                         Lbol = false;
  320.                 }
  321.                 if (BCount >= 5)
  322.                 {
  323.                     if (n == 0)
  324.                         Bwin();
  325.                     if (n == 1)
  326.                         Wwin();
  327.                     jlsf = n;
  328.                     break;
  329.                 }
  330.             }

  331.             //縱向查找
  332.             bool Ubol = true;
  333.             bool Dbol = true;
  334.             BCount = 1;
  335.             for (int i = 1; i <= 5; i++)
  336.             {
  337.                 if ((Arow + i) > 14)
  338.                     Dbol = false;
  339.                 if ((Arow - i) < 0)
  340.                     Ubol = false;
  341.                 if (Dbol == true)
  342.                 {
  343.                     if (note[Arow + i, Acolumn] == n)
  344.                         ++BCount;
  345.                     else
  346.                         Dbol = false;
  347.                 }
  348.                 if (Ubol == true)
  349.                 {
  350.                     if (note[Arow - i, Acolumn] == n)
  351.                         ++BCount;
  352.                     else
  353.                         Ubol = false;
  354.                 }
  355.                 if (BCount >= 5)
  356.                 {
  357.                     if (n == 0)
  358.                         Bwin();
  359.                     if (n == 1)
  360.                         Wwin();
  361.                     jlsf = n;
  362.                     break;
  363.                 }
  364.             }

  365.             //正斜查找
  366.             bool LUbol = true;
  367.             bool RDbol = true;
  368.             BCount = 1;
  369.             for (int i = 1; i <= 5; i++)
  370.             {
  371.                 if ((Arow - i) < 0 || (Acolumn - i < 0))
  372.                     LUbol = false;
  373.                 if ((Arow + i) > 14 || (Acolumn + i > 14))
  374.                     RDbol = false;
  375.                 if (LUbol == true)
  376.                 {
  377.                     if (note[Arow - i, Acolumn - i] == n)
  378.                         ++BCount;
  379.                     else
  380.                         LUbol = false;
  381.                 }
  382.                 if (RDbol == true)
  383.                 {
  384.                     if (note[Arow + i, Acolumn + i] == n)
  385.                         ++BCount;
  386.                     else
  387.                         RDbol = false;
  388.                 }
  389.                 if (BCount >= 5)
  390.                 {
  391.                     if (n == 0)
  392.                         Bwin();
  393.                     if (n == 1)
  394.                         Wwin();
  395.                     jlsf = n;
  396.                     break;
  397.                 }
  398.             }
  399.             //反斜查找
  400.             bool RUbol = true;
  401.             bool LDbol = true;
  402.             BCount = 1;
  403.             for (int i = 1; i <= 5; i++)
  404.             {
  405.                 if ((Arow - i) < 0 || (Acolumn + i > 14))
  406.                     RUbol = false;
  407.                 if ((Arow + i) > 14 || (Acolumn - i < 0))
  408.                     LDbol = false;
  409.                 if (RUbol == true)
  410.                 {
  411.                     if (note[Arow - i, Acolumn + i] == n)
  412.                         ++BCount;
  413.                     else
  414.                         RUbol = false;
  415.                 }
  416.                 if (LDbol == true)
  417.                 {
  418.                     if (note[Arow + i, Acolumn - i] == n)
  419.                         ++BCount;
  420.                     else
  421.                         LDbol = false;
  422.                 }
  423.                 if (BCount >= 5)
  424.                 {
  425.                     if (n == 0)
  426.                         Bwin();
  427.                     if (n == 1)
  428.                         Wwin();
  429.                     jlsf = n;
  430.                     break;
  431.                 }
  432.             }
  433.         }

  434.         /// <summary>
  435.         /// 顯示白棋獲勝
  436.         /// </summary>
  437.         public void Bwin()
  438.         {
  439.             CKind = 0;
  440.             MessageBox.Show("白棋獲勝!");
  441.             if (ChessStyle == false)//如果當(dāng)前為白棋
  442.                 label6.Text = Convert.ToString(Convert.ToInt32(label6.Text) + 1);//白棋得分
  443.             else
  444.                 label7.Text = Convert.ToString(Convert.ToInt32(label7.Text) + 1);//黑棋得分
  445.         }

  446.         /// <summary>
  447.         /// 顯示黑棋獲勝
  448.         /// </summary>
  449.         public void Wwin()
  450.         {
  451.             CKind = 1;
  452.             MessageBox.Show("黑棋獲勝!");
  453.             if (ChessStyle == true)
  454.                 label6.Text = Convert.ToString(Convert.ToInt32(label6.Text) + 1);//黑棋得分
  455.             else
  456.                 label7.Text = Convert.ToString(Convert.ToInt32(label7.Text) + 1);//白棋得分
  457.         }
  458.     }
  459. }
復(fù)制代碼

所有資料51hei提供下載:
12-游戲設(shè)計.rar (5.46 MB, 下載次數(shù): 52)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:380389 發(fā)表于 2018-8-1 19:46 來自手機(jī) | 只看該作者
謝謝分享好玩的東西  收藏
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品一区二 | 岛国毛片| 在线观看国产www | 午夜播放器在线观看 | 一区二区不卡视频 | 91视频网 | www,黄色,com| 久久青青| 在线观看成人小视频 | 夜夜骚视频 | 特黄色一级毛片 | 涩涩视频在线观看免费 | 成人精品国产 | 一级毛片免费完整视频 | 天天干夜夜操视频 | h片免费看 | 天天草av| 国产欧美日韩二区 | 久久这里有精品 | 欧美日韩在线综合 | 国产小视频在线 | 日本黄色高清视频 | 一区二区三区国产 | 欧美精品一区二区三区在线播放 | 九色国产 | 一区二区亚洲 | 国产综合久久 | 男人天堂99 | 成人中文字幕av | 国产精品乱码一二三区的特点 | 日韩福利片 | 久久久久久久一区二区三区 | 久久精品美女 | 一区视频在线 | 毛片免费看的 | 免费看黄色片 | 欧美一级大片免费观看 | 99热视 | 成人性生交大片免费看中文带字幕 | 91久久国产 | 精品国产一区二区三区久久久久久 |