python实现五子棋程序


Posted in Python onApril 24, 2020

五子棋游戏相信大部分人都玩过,今天我们用python来实现一次

具体代码可以访问我的GitHub地址获取

构建五子棋棋盘

from collections import namedtuple

Chessman = namedtuple('Chessman', 'Name Value Color')
Point = namedtuple('Point', 'X Y')

BLACK_CHESSMAN = Chessman('黑子', 1, (45, 45, 45))
WHITE_CHESSMAN = Chessman('白子', 2, (219, 219, 219))

offset = [(1, 0), (0, 1), (1, 1), (1, -1)]


class Checkerboard:
  def __init__(self, line_points):
    self._line_points = line_points
    self._checkerboard = [[0] * line_points for _ in range(line_points)]

  def _get_checkerboard(self):
    return self._checkerboard

  checkerboard = property(_get_checkerboard)

  # 判断是否可落子
  def can_drop(self, point):
    return self._checkerboard[point.Y][point.X] == 0

  def drop(self, chessman, point):
    """
    落子
    :param chessman:
    :param point:落子位置
    :return:若该子落下之后即可获胜,则返回获胜方,否则返回 None
    """
    print(f'{chessman.Name} ({point.X}, {point.Y})')
    self._checkerboard[point.Y][point.X] = chessman.Value

    if self._win(point):
      print(f'{chessman.Name}获胜')
      return chessman

  # 判断是否赢了
  def _win(self, point):
    cur_value = self._checkerboard[point.Y][point.X]
    for os in offset:
      if self._get_count_on_direction(point, cur_value, os[0], os[1]):
        return True

  def _get_count_on_direction(self, point, value, x_offset, y_offset):
    count = 1
    for step in range(1, 5):
      x = point.X + step * x_offset
      y = point.Y + step * y_offset
      if 0 <= x < self._line_points and 0 <= y < self._line_points and self._checkerboard[y][x] == value:
        count += 1
      else:
        break
    for step in range(1, 5):
      x = point.X - step * x_offset
      y = point.Y - step * y_offset
      if 0 <= x < self._line_points and 0 <= y < self._line_points and self._checkerboard[y][x] == value:
        count += 1
      else:
        break

    return count >= 5

实现五子棋人机对战

import sys
import random
import pygame
from pygame.locals import *
import pygame.gfxdraw
from checkerboard import Checkerboard, BLACK_CHESSMAN, WHITE_CHESSMAN, offset, Point

SIZE = 30 # 棋盘每个点时间的间隔
Line_Points = 19 # 棋盘每行/每列点数
Outer_Width = 20 # 棋盘外宽度
Border_Width = 4 # 边框宽度
Inside_Width = 4 # 边框跟实际的棋盘之间的间隔
Border_Length = SIZE * (Line_Points - 1) + Inside_Width * 2 + Border_Width # 边框线的长度
Start_X = Start_Y = Outer_Width + int(Border_Width / 2) + Inside_Width # 网格线起点(左上角)坐标
SCREEN_HEIGHT = SIZE * (Line_Points - 1) + Outer_Width * 2 + Border_Width + Inside_Width * 2 # 游戏屏幕的高
SCREEN_WIDTH = SCREEN_HEIGHT + 200 # 游戏屏幕的宽

Stone_Radius = SIZE // 2 - 3 # 棋子半径
Stone_Radius2 = SIZE // 2 + 3
Checkerboard_Color = (0xE3, 0x92, 0x65) # 棋盘颜色
BLACK_COLOR = (0, 0, 0)
WHITE_COLOR = (255, 255, 255)
RED_COLOR = (200, 30, 30)
BLUE_COLOR = (30, 30, 200)

RIGHT_INFO_POS_X = SCREEN_HEIGHT + Stone_Radius2 * 2 + 10


def print_text(screen, font, x, y, text, fcolor=(255, 255, 255)):
  imgText = font.render(text, True, fcolor)
  screen.blit(imgText, (x, y))


def main():
  pygame.init()
  screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
  pygame.display.set_caption('五子棋')

  font1 = pygame.font.SysFont('SimHei', 32)
  font2 = pygame.font.SysFont('SimHei', 72)
  fwidth, fheight = font2.size('黑方获胜')

  checkerboard = Checkerboard(Line_Points)
  cur_runner = BLACK_CHESSMAN
  winner = None
  computer = AI(Line_Points, WHITE_CHESSMAN)

  black_win_count = 0
  white_win_count = 0

  while True:
    for event in pygame.event.get():
      if event.type == QUIT:
        sys.exit()
      elif event.type == KEYDOWN:
        if event.key == K_RETURN:
          if winner is not None:
            winner = None
            cur_runner = BLACK_CHESSMAN
            checkerboard = Checkerboard(Line_Points)
            computer = AI(Line_Points, WHITE_CHESSMAN)
      elif event.type == MOUSEBUTTONDOWN:
        if winner is None:
          pressed_array = pygame.mouse.get_pressed()
          if pressed_array[0]:
            mouse_pos = pygame.mouse.get_pos()
            click_point = _get_clickpoint(mouse_pos)
            if click_point is not None:
              if checkerboard.can_drop(click_point):
                winner = checkerboard.drop(cur_runner, click_point)
                if winner is None:
                  cur_runner = _get_next(cur_runner)
                  computer.get_opponent_drop(click_point)
                  AI_point = computer.AI_drop()
                  winner = checkerboard.drop(cur_runner, AI_point)
                  if winner is not None:
                    white_win_count += 1
                  cur_runner = _get_next(cur_runner)
                else:
                  black_win_count += 1
            else:
              print('超出棋盘区域')

    # 画棋盘
    _draw_checkerboard(screen)

    # 画棋盘上已有的棋子
    for i, row in enumerate(checkerboard.checkerboard):
      for j, cell in enumerate(row):
        if cell == BLACK_CHESSMAN.Value:
          _draw_chessman(screen, Point(j, i), BLACK_CHESSMAN.Color)
        elif cell == WHITE_CHESSMAN.Value:
          _draw_chessman(screen, Point(j, i), WHITE_CHESSMAN.Color)

    _draw_left_info(screen, font1, cur_runner, black_win_count, white_win_count)

    if winner:
      print_text(screen, font2, (SCREEN_WIDTH - fwidth)//2, (SCREEN_HEIGHT - fheight)//2, winner.Name + '获胜', RED_COLOR)

    pygame.display.flip()


def _get_next(cur_runner):
  if cur_runner == BLACK_CHESSMAN:
    return WHITE_CHESSMAN
  else:
    return BLACK_CHESSMAN


# 画棋盘
def _draw_checkerboard(screen):
  # 填充棋盘背景色
  screen.fill(Checkerboard_Color)
  # 画棋盘网格线外的边框
  pygame.draw.rect(screen, BLACK_COLOR, (Outer_Width, Outer_Width, Border_Length, Border_Length), Border_Width)
  # 画网格线
  for i in range(Line_Points):
    pygame.draw.line(screen, BLACK_COLOR,
             (Start_Y, Start_Y + SIZE * i),
             (Start_Y + SIZE * (Line_Points - 1), Start_Y + SIZE * i),
             1)
  for j in range(Line_Points):
    pygame.draw.line(screen, BLACK_COLOR,
             (Start_X + SIZE * j, Start_X),
             (Start_X + SIZE * j, Start_X + SIZE * (Line_Points - 1)),
             1)
  # 画星位和天元
  for i in (3, 9, 15):
    for j in (3, 9, 15):
      if i == j == 9:
        radius = 5
      else:
        radius = 3
      # pygame.draw.circle(screen, BLACK, (Start_X + SIZE * i, Start_Y + SIZE * j), radius)
      pygame.gfxdraw.aacircle(screen, Start_X + SIZE * i, Start_Y + SIZE * j, radius, BLACK_COLOR)
      pygame.gfxdraw.filled_circle(screen, Start_X + SIZE * i, Start_Y + SIZE * j, radius, BLACK_COLOR)


# 画棋子
def _draw_chessman(screen, point, stone_color):
  # pygame.draw.circle(screen, stone_color, (Start_X + SIZE * point.X, Start_Y + SIZE * point.Y), Stone_Radius)
  pygame.gfxdraw.aacircle(screen, Start_X + SIZE * point.X, Start_Y + SIZE * point.Y, Stone_Radius, stone_color)
  pygame.gfxdraw.filled_circle(screen, Start_X + SIZE * point.X, Start_Y + SIZE * point.Y, Stone_Radius, stone_color)


# 画左侧信息显示
def _draw_left_info(screen, font, cur_runner, black_win_count, white_win_count):
  _draw_chessman_pos(screen, (SCREEN_HEIGHT + Stone_Radius2, Start_X + Stone_Radius2), BLACK_CHESSMAN.Color)
  _draw_chessman_pos(screen, (SCREEN_HEIGHT + Stone_Radius2, Start_X + Stone_Radius2 * 4), WHITE_CHESSMAN.Color)

  print_text(screen, font, RIGHT_INFO_POS_X, Start_X + 3, '玩家', BLUE_COLOR)
  print_text(screen, font, RIGHT_INFO_POS_X, Start_X + Stone_Radius2 * 3 + 3, '电脑', BLUE_COLOR)

  print_text(screen, font, SCREEN_HEIGHT, SCREEN_HEIGHT - Stone_Radius2 * 8, '战况:', BLUE_COLOR)
  _draw_chessman_pos(screen, (SCREEN_HEIGHT + Stone_Radius2, SCREEN_HEIGHT - int(Stone_Radius2 * 4.5)), BLACK_CHESSMAN.Color)
  _draw_chessman_pos(screen, (SCREEN_HEIGHT + Stone_Radius2, SCREEN_HEIGHT - Stone_Radius2 * 2), WHITE_CHESSMAN.Color)
  print_text(screen, font, RIGHT_INFO_POS_X, SCREEN_HEIGHT - int(Stone_Radius2 * 5.5) + 3, f'{black_win_count} 胜', BLUE_COLOR)
  print_text(screen, font, RIGHT_INFO_POS_X, SCREEN_HEIGHT - Stone_Radius2 * 3 + 3, f'{white_win_count} 胜', BLUE_COLOR)


def _draw_chessman_pos(screen, pos, stone_color):
  pygame.gfxdraw.aacircle(screen, pos[0], pos[1], Stone_Radius2, stone_color)
  pygame.gfxdraw.filled_circle(screen, pos[0], pos[1], Stone_Radius2, stone_color)


# 根据鼠标点击位置,返回游戏区坐标
def _get_clickpoint(click_pos):
  pos_x = click_pos[0] - Start_X
  pos_y = click_pos[1] - Start_Y
  if pos_x < -Inside_Width or pos_y < -Inside_Width:
    return None
  x = pos_x // SIZE
  y = pos_y // SIZE
  if pos_x % SIZE > Stone_Radius:
    x += 1
  if pos_y % SIZE > Stone_Radius:
    y += 1
  if x >= Line_Points or y >= Line_Points:
    return None

  return Point(x, y)


class AI:
  def __init__(self, line_points, chessman):
    self._line_points = line_points
    self._my = chessman
    self._opponent = BLACK_CHESSMAN if chessman == WHITE_CHESSMAN else WHITE_CHESSMAN
    self._checkerboard = [[0] * line_points for _ in range(line_points)]

  def get_opponent_drop(self, point):
    self._checkerboard[point.Y][point.X] = self._opponent.Value

  def AI_drop(self):
    point = None
    score = 0
    for i in range(self._line_points):
      for j in range(self._line_points):
        if self._checkerboard[j][i] == 0:
          _score = self._get_point_score(Point(i, j))
          if _score > score:
            score = _score
            point = Point(i, j)
          elif _score == score and _score > 0:
            r = random.randint(0, 100)
            if r % 2 == 0:
              point = Point(i, j)
    self._checkerboard[point.Y][point.X] = self._my.Value
    return point

  def _get_point_score(self, point):
    score = 0
    for os in offset:
      score += self._get_direction_score(point, os[0], os[1])
    return score

  def _get_direction_score(self, point, x_offset, y_offset):
    count = 0  # 落子处我方连续子数
    _count = 0 # 落子处对方连续子数
    space = None  # 我方连续子中有无空格
    _space = None # 对方连续子中有无空格
    both = 0  # 我方连续子两端有无阻挡
    _both = 0  # 对方连续子两端有无阻挡

    # 如果是 1 表示是边上是我方子,2 表示敌方子
    flag = self._get_stone_color(point, x_offset, y_offset, True)
    if flag != 0:
      for step in range(1, 6):
        x = point.X + step * x_offset
        y = point.Y + step * y_offset
        if 0 <= x < self._line_points and 0 <= y < self._line_points:
          if flag == 1:
            if self._checkerboard[y][x] == self._my.Value:
              count += 1
              if space is False:
                space = True
            elif self._checkerboard[y][x] == self._opponent.Value:
              _both += 1
              break
            else:
              if space is None:
                space = False
              else:
                break  # 遇到第二个空格退出
          elif flag == 2:
            if self._checkerboard[y][x] == self._my.Value:
              _both += 1
              break
            elif self._checkerboard[y][x] == self._opponent.Value:
              _count += 1
              if _space is False:
                _space = True
            else:
              if _space is None:
                _space = False
              else:
                break
        else:
          # 遇到边也就是阻挡
          if flag == 1:
            both += 1
          elif flag == 2:
            _both += 1

    if space is False:
      space = None
    if _space is False:
      _space = None

    _flag = self._get_stone_color(point, -x_offset, -y_offset, True)
    if _flag != 0:
      for step in range(1, 6):
        x = point.X - step * x_offset
        y = point.Y - step * y_offset
        if 0 <= x < self._line_points and 0 <= y < self._line_points:
          if _flag == 1:
            if self._checkerboard[y][x] == self._my.Value:
              count += 1
              if space is False:
                space = True
            elif self._checkerboard[y][x] == self._opponent.Value:
              _both += 1
              break
            else:
              if space is None:
                space = False
              else:
                break  # 遇到第二个空格退出
          elif _flag == 2:
            if self._checkerboard[y][x] == self._my.Value:
              _both += 1
              break
            elif self._checkerboard[y][x] == self._opponent.Value:
              _count += 1
              if _space is False:
                _space = True
            else:
              if _space is None:
                _space = False
              else:
                break
        else:
          # 遇到边也就是阻挡
          if _flag == 1:
            both += 1
          elif _flag == 2:
            _both += 1

    score = 0
    if count == 4:
      score = 10000
    elif _count == 4:
      score = 9000
    elif count == 3:
      if both == 0:
        score = 1000
      elif both == 1:
        score = 100
      else:
        score = 0
    elif _count == 3:
      if _both == 0:
        score = 900
      elif _both == 1:
        score = 90
      else:
        score = 0
    elif count == 2:
      if both == 0:
        score = 100
      elif both == 1:
        score = 10
      else:
        score = 0
    elif _count == 2:
      if _both == 0:
        score = 90
      elif _both == 1:
        score = 9
      else:
        score = 0
    elif count == 1:
      score = 10
    elif _count == 1:
      score = 9
    else:
      score = 0

    if space or _space:
      score /= 2

    return score

  # 判断指定位置处在指定方向上是我方子、对方子、空
  def _get_stone_color(self, point, x_offset, y_offset, next):
    x = point.X + x_offset
    y = point.Y + y_offset
    if 0 <= x < self._line_points and 0 <= y < self._line_points:
      if self._checkerboard[y][x] == self._my.Value:
        return 1
      elif self._checkerboard[y][x] == self._opponent.Value:
        return 2
      else:
        if next:
          return self._get_stone_color(Point(x, y), x_offset, y_offset, False)
        else:
          return 0
    else:
      return 0


if __name__ == '__main__':
  main()

运行效果如下:

python实现五子棋程序

python实现五子棋人人对战

import sys
import pygame
from pygame.locals import *
import pygame.gfxdraw
from checkerboard import Checkerboard, BLACK_CHESSMAN, WHITE_CHESSMAN, Point

SIZE = 30 # 棋盘每个点时间的间隔
Line_Points = 19 # 棋盘每行/每列点数
Outer_Width = 20 # 棋盘外宽度
Border_Width = 4 # 边框宽度
Inside_Width = 4 # 边框跟实际的棋盘之间的间隔
Border_Length = SIZE * (Line_Points - 1) + Inside_Width * 2 + Border_Width # 边框线的长度
Start_X = Start_Y = Outer_Width + int(Border_Width / 2) + Inside_Width # 网格线起点(左上角)坐标
SCREEN_HEIGHT = SIZE * (Line_Points - 1) + Outer_Width * 2 + Border_Width + Inside_Width * 2 # 游戏屏幕的高
SCREEN_WIDTH = SCREEN_HEIGHT + 200 # 游戏屏幕的宽

Stone_Radius = SIZE // 2 - 3 # 棋子半径
Stone_Radius2 = SIZE // 2 + 3
Checkerboard_Color = (0xE3, 0x92, 0x65) # 棋盘颜色
BLACK_COLOR = (0, 0, 0)
WHITE_COLOR = (255, 255, 255)
RED_COLOR = (200, 30, 30)
BLUE_COLOR = (30, 30, 200)
BLACK_STONE_COLOR = (45, 45, 45)
WHITE_STONE_COLOR = (219, 219, 219)

RIGHT_INFO_POS_X = SCREEN_HEIGHT + Stone_Radius2 * 2 + 10


def print_text(screen, font, x, y, text, fcolor=(255, 255, 255)):
  imgText = font.render(text, True, fcolor)
  screen.blit(imgText, (x, y))


def main():
  pygame.init()
  screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
  pygame.display.set_caption('五子棋')

  font1 = pygame.font.SysFont('SimHei', 36)
  font2 = pygame.font.SysFont('SimHei', 72)
  fwidth, fheight = font2.size('黑方获胜')

  checkerboard = Checkerboard(Line_Points)
  cur_runner = BLACK_CHESSMAN
  winner = None

  while True:
    for event in pygame.event.get():
      if event.type == QUIT:
        sys.exit()
      elif event.type == KEYDOWN:
        if event.key == K_RETURN:
          if winner is not None:
            winner = None
            cur_runner = BLACK_CHESSMAN
            checkerboard = Checkerboard(Line_Points)
      elif event.type == MOUSEBUTTONDOWN:
        if winner is None:
          pressed_array = pygame.mouse.get_pressed()
          if pressed_array[0]:
            mouse_pos = pygame.mouse.get_pos()
            click_point = _get_clickpoint(mouse_pos)
            if click_point is not None:
              if checkerboard.can_drop(click_point):
                winner = checkerboard.drop(cur_runner, click_point)
                if cur_runner == BLACK_CHESSMAN:
                  cur_runner = WHITE_CHESSMAN
                else:
                  cur_runner = BLACK_CHESSMAN
            else:
              print('超出棋盘区域')

    # 画棋盘
    _draw_checkerboard(screen)

    # 画棋盘上已有的棋子
    for i, row in enumerate(checkerboard.checkerboard):
      for j, cell in enumerate(row):
        if cell == BLACK_CHESSMAN.Value:
          _draw_chessman(screen, Point(j, i), BLACK_CHESSMAN.Color)
        elif cell == WHITE_CHESSMAN.Value:
          _draw_chessman(screen, Point(j, i), WHITE_CHESSMAN.Color)

    _draw_chessman_pos(screen, (SCREEN_HEIGHT + Stone_Radius2, Start_X + 20), BLACK_STONE_COLOR)
    _draw_chessman_pos(screen, (SCREEN_HEIGHT + Stone_Radius2, Start_X + 20 + Stone_Radius2 * 3), WHITE_STONE_COLOR)

    if winner:
      print_text(screen, font2, (SCREEN_WIDTH - fwidth)//2, (SCREEN_HEIGHT - fheight)//2, winner.Name + '获胜', RED_COLOR)

    if cur_runner == BLACK_CHESSMAN:
      print_text(screen, font1, RIGHT_INFO_POS_X, Start_X, '获胜' if winner else '落子中', BLUE_COLOR)
    else:
      print_text(screen, font1, RIGHT_INFO_POS_X, Start_X + Stone_Radius2 * 3, '获胜' if winner else '落子中', BLUE_COLOR)

    pygame.display.flip()


# 画棋盘
def _draw_checkerboard(screen):
  # 填充棋盘背景色
  screen.fill(Checkerboard_Color)
  # 画棋盘网格线外的边框
  pygame.draw.rect(screen, BLACK_COLOR, (Outer_Width, Outer_Width, Border_Length, Border_Length), Border_Width)
  # 画网格线
  for i in range(Line_Points):
    pygame.draw.line(screen, BLACK_COLOR,
             (Start_Y, Start_Y + SIZE * i),
             (Start_Y + SIZE * (Line_Points - 1), Start_Y + SIZE * i),
             1)
  for j in range(Line_Points):
    pygame.draw.line(screen, BLACK_COLOR,
             (Start_X + SIZE * j, Start_X),
             (Start_X + SIZE * j, Start_X + SIZE * (Line_Points - 1)),
             1)
  # 画星位和天元
  for i in (3, 9, 15):
    for j in (3, 9, 15):
      if i == j == 9:
        radius = 5
      else:
        radius = 3
      # pygame.draw.circle(screen, BLACK, (Start_X + SIZE * i, Start_Y + SIZE * j), radius)
      pygame.gfxdraw.aacircle(screen, Start_X + SIZE * i, Start_Y + SIZE * j, radius, BLACK_COLOR)
      pygame.gfxdraw.filled_circle(screen, Start_X + SIZE * i, Start_Y + SIZE * j, radius, BLACK_COLOR)


# 画棋子
def _draw_chessman(screen, point, stone_color):
  # pygame.draw.circle(screen, stone_color, (Start_X + SIZE * point.X, Start_Y + SIZE * point.Y), Stone_Radius)
  pygame.gfxdraw.aacircle(screen, Start_X + SIZE * point.X, Start_Y + SIZE * point.Y, Stone_Radius, stone_color)
  pygame.gfxdraw.filled_circle(screen, Start_X + SIZE * point.X, Start_Y + SIZE * point.Y, Stone_Radius, stone_color)


def _draw_chessman_pos(screen, pos, stone_color):
  pygame.gfxdraw.aacircle(screen, pos[0], pos[1], Stone_Radius2, stone_color)
  pygame.gfxdraw.filled_circle(screen, pos[0], pos[1], Stone_Radius2, stone_color)


# 根据鼠标点击位置,返回游戏区坐标
def _get_clickpoint(click_pos):
  pos_x = click_pos[0] - Start_X
  pos_y = click_pos[1] - Start_Y
  if pos_x < -Inside_Width or pos_y < -Inside_Width:
    return None
  x = pos_x // SIZE
  y = pos_y // SIZE
  if pos_x % SIZE > Stone_Radius:
    x += 1
  if pos_y % SIZE > Stone_Radius:
    y += 1
  if x >= Line_Points or y >= Line_Points:
    return None

  return Point(x, y)


if __name__ == '__main__':
  main()

运行效果

python实现五子棋程序

更多有趣的经典小游戏实现专题,分享给大家:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
快速排序的算法思想及Python版快速排序的实现示例
Jul 02 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
Python爬虫:url中带字典列表参数的编码转换方法
Aug 21 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
python利用appium实现手机APP自动化的示例
Jan 26 Python
python基础之类属性和实例属性
Oct 24 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
Apr 24 #Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 #Python
不到20行实现Python代码即可制作精美证件照
Apr 24 #Python
python 画条形图(柱状图)实例
Apr 24 #Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 #Python
200行python代码实现贪吃蛇游戏
Apr 24 #Python
python Canny边缘检测算法的实现
Apr 24 #Python
You might like
PHP新手上路(八)
2006/10/09 PHP
php中目录,文件操作详谈
2007/03/19 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
php实现源代码加密的方法
2015/07/11 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
Javascript函数的参数
2015/07/16 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
Python enumerate内置库用法解析
2020/02/24 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
详解Python高阶函数
2020/08/15 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
linux系统都有哪些运行级别
2016/03/26 面试题
汽车服务工程专业自荐信
2014/09/02 职场文书
2014年路政工作总结
2014/12/10 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
vue实现简单数据双向绑定
2021/04/28 Vue.js
浅谈如何保证Mysql主从一致
2022/03/13 MySQL
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis